首先进入上一期博客建立的工作空间,创建一个功能包
cd ~/catkn_ws/src
mkdir learning_topic
cd learning_topic
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
如何实现一个发布者
step1.初始化ROS节点
step2.向ROS Master注册节点信息,包括发布的话题和话题中的消息类型
step3.创建消息数据
step4.按照一定频率循环发布信息
在leaning_topic的src中新建velocity_publisher.cpp--让小海龟做线速度0.5,角速度0.2的运动
代码如下
#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);
int count = 0;
while(ros::ok())
{
geometry_msgs::Twist vel_msg;
vel_msg.linear.x=0.5;
vel_msg.angular.z=0.2;
turtle_vel_pub.publish(vel_msg);
ROS_INFO("Publish turtle velocity command[%0.2f m/s,%0.2f rad/s]",vel_msg.linear.x,vel_msg.angular.z);
loop_rate.sleep();
}
return 0;
}
在CMakeLists.txt最后一行中加入
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
接着开始跑程序发布话题
cd ~/catkin_ws
catkin_make
source devel/setup.bash
roscore
rosrun turtlesim turtlesim_node
rosrun learning_topic velocity_publisher
结果如下