创建工作空间:mkdir -p ~/catkin_ws1/src
编译工作空间:catkin_make
初始化工作空间:catkin_init_workspace
执行source命令:source devel/setup.bash
为方便起见,将之添加进.bashrc文件,这样不用每次执行source命令。
新建package功能包:catkin_create_pkg learning_topic roscpp rospy std_msgs gemotry_msgs turtlesim
新建cpp文件并将以下代码复制进文件:vim velocity_publisher.cpp
#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
int main(int argc,char**argv)
{
ros::init(argc,argv,"velocity_publisher");
ros::NodeHandle n;
ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);
ros::Rate loop_rate(10);
while(ros::ok())
{
geometry_msgs::Twist vel_msgs;
vel_msgs.linear.x=0.5;
vel_msgs.angular.z=0.2;
turtle_vel_pub.publish(vel_msgs);
ROS_INFO("Publish turtle velocity command[%0.2f m/s,%0.2f rad/s]",vel_msgs.linear.x,vel_msgs.angular.z);
loop_rate.sleep();
}
return 0;
}
用vim编辑器,按下i可以编辑,按esc+:wq为保存退出。
在CMakelists.txt中添加以下两行:
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
如下图:
至此程序就可以了,然后编译;
catkin_make
然后,执行程序:
roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic velocity_publisher
可以,完美运行!