目录
文章目的
用代码(python or c++)进行对机器人(机械臂或移动底盘)进行控制时,我们需要了解两件事
- 话题的名称
- 话题所发布或订阅的数据结构类型
下面我将以海龟仿真器为例
- 让大家了解如何查阅话题的名称以及话题发布或订阅的数据结构类型。
- 如何自定义数据结构进行话题通信
一、总体流程图
总体流程图,如上pub 和sub通过roscore建立链接,两者通过topic话题进行通信
代码总结:
rosnode list 查看所有的节点列表
rosnode info xx 查看某一个节点的具体信息
rostopic info xx 查看某一个话题的具体信息
rosmsg show xx 查看某个话题的具体数据结构
二、如何查看通信节点
我们以海龟仿真器为例子:
终端运行,如下三个指令
roscore 打开rosmaster
rosrun turtlesim turtlesim_node
rosnode list
通过上图我们可以看到在rosnode 中有节点/turtlesim。
如果我们想查看节点的具体信息,即发布的话题(pub)、订阅的话题(sub)、接受的服务(ser)具体如上框图。
运行rosnode info /turtlesim
了解到订阅的话题后,如上框图,/turtle1/cmd_vel
运行rostopic info /turtle1/cmd_vel我们就可以知道通信节点的数据类型及Twist
如果我们想查看数据类型的具体信息,则可以输入
rosmsg show geometry_msgs/Twist
最后我们可以看到在python代码中,如下,我们可以发现通信话题名称以及输出的数据结构类型都要一一对应
这样我们就可以写控制代码实现对机器人(本文时小海龟的控制)例如:
三、传输自定义数据结构类型
test是我src工作空间下的功能包
如下图,我想传输一个person类
然后,我们需要在package.xml文件中添加依赖
在cmakelist中添加如下依赖
最后catkin_make 编译
需要我们在代码中引用一下
最终我们就可以实现自定义数据类型的通信