第二章 ROS通信机制
采用赵虚左的ROS教程学习ROS,教程:
视频链接🔗 https://www.bilibili.com/video/BV1Ci4y1L7ZZ
文档链接🔗 http://www.autolabor.com.cn/book/ROSTutorials/
我的设备 : Unbuntu 20.04 双系统 | ROS 1 noetic
学习内容
- 话题 (Topic) 通信
- 服务 (Service) 通信
- 参数服务器 (Param)
最终实操 : 结合已经介绍ROS命令获取节点、话题、话题消息、服务、服务消息与参数的信息,最终再以编码的方式实现乌龟运动的控制、乌龟位姿的订阅、乌龟生成与乌龟窗体背景颜色的修改。
实操推荐 : 全程不看教程自己写。
需要注意的点
-
topic
orservice
通信建立过程 : 要配置cpp
orpython
文件同级的CMakeList
文件 -
python
文件需要添加可执行权限,在scripts
下打开终端输入chmod +x *.py
-
在案例二中
cpp
创建订阅者对象函数的问题, 代码为ros::Subscriber sub = nh.subscribe("turtle1/pose", 100, doPose);
这里的
"turtle1/pose"
为话题的名称 (Topic) -
在案例二中
python
配置rospy.Subscriber
时的问题, 代码为sub = rospy.Subscriber("turtle1/pose", Pose, Pose_CallBackFunc, queue_size=100)
其中,
"turtle1/pose"
指的是通信的话题名称 (Topic) ,Pose
指的是数据载体 (msg) -
在案例三中
cpp
处理请求的函数的问题, 代码为ros::service::waitForService("spawn");
这里的
"spawn"
表示服务的名称 (Service) -
在案例三中
python
配置rospy.ServiceProxy
时的问题, 代码为client = rospy.ServiceProxy("/spawn", Spawn)
其中,
"/spawn"
指的是通信的服务名称 (Service) ,Spawn
指的是数据载体 (srv)