参考网站:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
本人学习视频:哔哩哔哩【Autolabor初级教程】ROS机器人入门
话题通信涉及的角色
话题通信一般包含三种角色:
- ROS Master (管理者)
- Talker (发布者)
- Listener (订阅者)
其中我们在编写代码的时候不需要编写管理者部分,因为已经封装好了库函数(理解可能有误)。
Python实现话题通信
发布者实现:
#! /usr/bin/env python
import rospy
from plumbing_pub_sub.msg import Person
"""
发布者:发布人消息
1.导包;
2.初始化ROS节点
3.创建发布者对象;
4.组织发布逻辑并发布数据。
"""
if __name__ == "__main__":
# 2.初始化ROS节点
rospy.init_node("dama")
# 3.创建发布者对象;
pub = rospy.Publisher("guangchangwu", Person, queue_size=10)
# 4.组织发布逻辑并发布数据。
#4-1.创建Person数据
p = Person()
p.name = "奥特曼"
p.age = 8
p.height = 1.85
#4-2.创建Rate对象
rate = rospy.Rate(1)
#4-3.循环发布数据
while not rospy.is_shutdown():
pub.publish(p)
rospy.loginfo("发布数据:%s, %d, %.2f",p.name, p.age, p.height)
rate.sleep()
订阅方实现:
#! /usr/bin/env python
import rospy
from plumbing_pub_sub.msg import Person
"""
订阅方:订阅人消息
1.导包;
2.初始化ROS节点
3.创建订阅者对象;
4.处理订阅的数据;
5.spin()
"""
def doPerson(p):
rospy.loginfo("小伙子的数据:%s, %d, %.2f", p.name, p.age, p.height)
if __name__ == "__main__":
# 2.初始化ROS节点
rospy.init_node("daYe")
# 3.创建订阅者对象;
sub = rospy.Subscriber("guangchangwu", Person, doPerson)
# 4.处理订阅的数据;
# 5.spin()
rospy.spin()
基础的配置:
1.我们在用Python编写的时候,需要在终端加入可执行权限,让你编写的Python可以被执行。
2.同时需要在CMakeLists文件中去配置一些基本项: