一、话题的模型
1、节点之间的通信可以通过消息来进行传递,而消息则封装在话题中,话题本质上是对套接字的一种封装。
注意:话题必须是唯一的。
2、话题方式通信模式的特性
发布者不知谁是订阅者,而订阅者只知道所订阅的某个话题,而不知道哪个节点可能发布消息到该主题,消息以未知的时间间隔发送,并且订阅者可能会丢失消息,这种通信方式适用于重复的消息,如传感器数值的发布,对于这种情况,传感器发布器不需要知道哪个或者多少个节点订阅其输出,发布者也将不会更改消息以响应来自用户的任何请求。
二、publisher的编程实现
(一)、实现步骤
1、工作空间的创建
(1)创建工作空间
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace//初始化工作空间创建CMakelists.txt
(2)编译工作空间
$ cd ~/catkin_ws/
$ catkin_make
(3)设置环境变量
$ source devel/setup.bash
(4)检查环境变量
$ echo $ROS_PACKAGE_PATH
2、在src中创建功能包
$ cd ~/catkin_ws/src
$ catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
其中 catkin_create_pkg为创建的命令,learning_topic为功能包的名称,roscpp rospy std_msgs geometry_msgs turtlesim为依赖
3、在功能包中添加节点
(1)、如何实现一个发布者的代码实现逻辑
初始化ROS节点;
向ROS Master注册节点信息,
包括发布的话题名和话题中的消息类型;
创建消息数据;
按照一定频率循环发布消息。
(2)、此处添加c++代码,代码如下:
/*** 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist */
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
int main(int argc, char *