在前面的章节,我们学了通过按键、命令行的形式控制小海龟。本节我们学习通过编程实现小海龟的控制。
一、话题模型
如下图所示:
Subcriber是海龟仿真器;
Publisher是速度值的发布者,我们本节通过程序去实现;
发布者发布一个Twist消息,Twist包括角速度和线速度;
Twist通过一个叫/turtle1/cmd_vel的数据管道总线,传送到Subscrider。
二、建立功能包
我们把上一讲的test_pkg功能包删除,我们重新建立一个。
geometry_msgs是Twist消息的功能包;
turtlesim也是一个被依赖的功能包;
$ cd ~/catkin_ws/src
$ catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
三、创建发布者代码
整体思路:
3.1cpp代码实现
我们把如下的这个古月提供的代码,直接拷贝到linux中的learning_topic/src中,即可。
此文件代码如下:
/**
* 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
*/
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
int main(int argc, char **argv)
{
// ROS节点初始化,velocity_publisher是节点的名字
ros::init(argc, argv, "velocity_publisher"