4、发布者Publisher

4.1、发布者

发布者,顾名思义就是起到发布消息的作用。这里的消息,可以是下位机传给上位机的传感器信息,然后通过上位机打包封装好发送到订阅了该话题的订阅者;也可以是上位机的数据做了运算后打包封装好发送给给订阅该话题的订阅者。

4.2、 创建工作空间和话题功能包

4.2.1、创建工作空间

4.2.2、编译工作空间

4.2.3、更新环境变量

4.2.4、检查环境变量

4.2.5、创建功能包

4.2.6、编译功能包

4.3、创建一个发布者

4.3.1、创建步骤

1)、初始化ROS节点

2)、创建句柄

3)、向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型以及队列长度

4)、创建并且初始化消息数据

5)、按照一定频率循环发送消息

4.3.2、C++语言实现

1)、在功能包的src文件夹,创建一个c++文件(文件后缀为.cpp),命名为turtle_velocity_publisher.cpp

2)、把下边的程序代码复制粘贴到turtle_velocity_publisher.cpp文件中

3)、程序流程图,可对应1.3.1内容查看

pub_c++

4)、在CMakelist.txt中配置,build区域下,添加如下内容

5)、工作空间目录下编译代码

6)、运行程序

7)、运行效果截图

image-20220216112046184

8)、程序运行说明

这说明小海龟是一个订阅/turtle1/cmd_vel这个速度话题的,所以,发布者不断发送速度数据,小海龟接收到后,就开始按照速度做运动。

4.3.3、Python语言实现

1)、在功能包目录下,新建以一个文件夹scripts,然后在scripts文件夹下新建一个python文件(文件后缀.py),命名为turtle_velocity_publisher.py

2)、把下边的程序代码复制粘贴到turtle_velocity_publisher.py文件中

3)、程序流程图

pub_py (2)

4)、运行程序

注意:在运行前,需要给turtle_velocity_publisher.py添加可执行的权限,在turtle_velocity_publisher.py文件夹内打开终端,

所有的python都需要添加执行文件权限否则就会报错!

5)、运行效果和程序说明参考1.3.2。