ROS话题通信机制实操Python
- 创建ROS工程
- 发布方(二狗子)
- 订阅方(翠花)
- 编辑配置文件
- 编译并执行
- 计算图查看Python话题机制节点
ROS话题通信的理论查阅ROS话题通信流程理论
在ROS话题通信机制实现中,ROS master 不需要实现,且连接的建立也已经被封装了,需要关注的关键点有三个:
- 发布方(二狗子)
- 订阅方(翠花)
- 数据(此处为普通文本)
创建ROS工程
创建一个ROS工程包括以下几个步骤:
- 创建一个topic_ws的ROS工作空间
- 启动VScode
- VScode 编译ROS
- 创建ROS功能包
- 在功能包下创建一个scripts文件
详细操作可以查阅VScode创建ROS项目 ROS集成开发环境
发布方(二狗子)
-  基本流程 - 1.包含头文件
- 2.初始化 ROS 节点:命名(唯一)
- 3.实例化 发布者 对象
- 4.组织被发布的数据,并编写逻辑发布数据
 
-  代码实现 #! /usr/bin/env python3import rospy from std_msgs.msg import String""" 实现流程:1.导包 2.初始化 ROS 节点:命名(唯一)3.实例化 发布者 对象4.组织被发布的数据,并编写逻辑发布数据 """if __name__ == "__main__":#2.初始化 ROS 节点:命名(唯一)rospy.init_node("erGouzi")#3.实例化 发布者 对象pub = rospy.Publisher("fang",String,queue_size=10)#4.组织被发布的数据,并编写逻辑发布数据msg = String() #创建 msg 对象count = 0 #计数器 # 设置循环频率rate = rospy.Rate(1)rospy.sleep(3) # 休眠3s等待 publisher 注册完成,不然订阅者读不到第一条消息while not rospy.is_shutdown():#拼接字符串msg.data = "cuiHua 你好 ---> " + str(count)pub.publish(msg)rate.sleep()rospy.loginfo("写出的数据:%s",msg.data)count += 1
-  添加可执行权限 
 进入到scripts文件下,打开Terminal,执行chmod +x demo_pub_p.py对demo_pub_p.py文件添加可执行的权限
  
-  验证是否存在问题 -  编辑配置文件 
 修改plumbing_pub_sub功能包下的CMakeLists.txt,找到catkin_install_python,修改成如图所示
  
-  按快捷键 ctrl + shift + B编译
-  开启一个Terminal,运行 roscore 命令;再开启一个新的Terminal,运行 source ./devel/setup.bash rosrun plumbing_pub_sub demo_pub_p.py;再开启一个Terminal,运行rostopic echo fang,查看订阅数据
  
 
-  
订阅方(翠花)
-  基本流程 - 1.包含头文件
- 2.初始化 ROS 节点:命名(唯一)
- 3.实例化 订阅者 对象
- 4.处理订阅的消息(回调函数)
- 5.设置循环调用回调函数
 
-  代码实现 #! /usr/bin/env python3import rospy from std_msgs.msg import String""" 实现流程:1.导包 2.初始化 ROS 节点:命名(唯一)3.实例化 订阅者 对象4.处理订阅的消息(回调函数)5.设置循环调用回调函数 """def doMsg(msg):rospy.loginfo("订阅到的数据是:%s", msg.data)if __name__ == "__main__":#2.初始化 ROS 节点:命名(唯一)rospy.init_node("cuiHua")#3.实例化 订阅者 对象sub = rospy.Subscriber("fang", String, doMsg, queue_size=10)#4.处理订阅的消息(回调函数)#5.设置循环调用回调函数rospy.spin()
-  添加可执行权限 
 进入到scripts文件下,打开Terminal,执行chmod +x *.py对demo_sub_p.py文件添加可执行的权限
  
发布方、订阅方声明的话题必须一致,案例中的话题是 fang
编辑配置文件
修改 plumbing_pub_sub 功能包下的CMakeLists.txt,找到同时复制一个catkin_install_python,修改成如图所示
 
编译并执行
- 按快捷键 ctrl + shift + B编译
  
- 执行代码 -  1.启动 roscore; 
 开启一个Terminal,启动 roscore
  
-  2.启动发布节点; 
 开启一个新的Terminalcd topic_ws/ source ./devel/setup.bash rosrun plumbing_pub_sub demo_pub_p.py 
-  3.启动订阅节点。 cd topic_ws/ source ./devel/setup.bash rosrun plumbing_pub_sub demo_sub_p.py 
 
-  
计算图查看Python话题机制节点
开启一个Terminal,运行 roscore 命令;再开启一个新的Terminal,运行source ./devel/setup.bash rosrun plumbing_pub_sub demo_pub_p.py ;再开启一个Terminal,运行rostopic echo fang,查看订阅数据;再开启一个Terminal,运行 rqt_graph
 
 计算图如图所示:
 