我们知道,ROS内置了一个小乌龟的样例程序。我们不仅可以通过键盘控制小乌龟的运动,也可以通过编码改变小乌龟的运动
首先我们要了解乌龟运动的两个参数,线速度和角速度,线速度用于控制乌龟运动的速度和基本维向(前后,左右,上下),角速度具体控制乌龟的运动方向。
线速度有三个参数:x(前后),y(左右),z(上下);而角速度有三个参数:x(翻滚),y(俯仰),z(偏航)。这些参数可以非常细节的控制这些对象的移动。而对于小乌龟,我们只需要运用线速度的x参数和角速度的z参数即可。
首先我们先创建功能包,创建文件twist.cpp:
#include "ros/ros.h"
#include "geometry_msgs/Twist.h"
int main(int argc,char* argv[]){
setlocale(LC_ALL,"");
ros::init(argc,argv,"twist");
ros::NodeHandle n;
ros::Publisher pub=n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);
ros::Rate rate(5);
geometry_msgs::Twist twist;
twist.linear.x=1.0;
twist.linear.y=1.0;
twist.linear.z=1.0;
twist.angular.x=0.0;//rolling
twist.angular.y=0.0;//pitch
twist.angular.z=0.5;//yaw
while (ros::ok())
{
pub.publish(twist);
rate.sleep();
ros::spinOnce();
}
return 0;
}
修改CMakeList.txt如下:
add_executable(twist src/twist.cpp)
add_dependencies(twist ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(twist
${catkin_LIBRARIES}
)
catkin_make 和source ./devel/setup.bash 进行准备,roscore
然后打开小乌龟的文件:
rosrun turtlesim turtlesim_node