目录
流程:
1、编写发布方实现;
2、编写订阅方实现;
3、编辑配置文件;
4、编译并执行;
具体实现:
创建一个工作空间
首先创建一个工作空间以及一个src子目录,然后再进入工作空间调用catkin_make命令编译
- mkdir -p demo01_ws/src
-
- cd demo01_ws/
-
- catkin_make
启动VScode
code .
右键点击src,点击Create Catkin Package
输入
plumbing_pub_sub
roscpp rospy std_msgs
在plumbing_pub_sub功能包中的src中新建Python功能包目录 scripts
再到scripts中新建demo01_pub_p.py
- #! /usr/bin/env python
-
- import rospy
- from std_msgs.msg import String #要发布的消息的类型
-
- """
- 使用python实现消息发布:
- 1.导包;
- 2.初始化ros节点;
- 3.创建发布者对象;
- 4.编写发布逻辑并发布数据;
- """
-
- if __name__ == "__main__":
-
-
- #2.初始化ros节点;
- rospy.init_node("sanDai") #传入节点名称
-
- #3.创建发布者对象;
- pub = rospy.Publisher("che",String,queue_size=10)
-
- #4.编写发布逻辑并发布数据;
- #创建数据
- msg=String()
- #指定发布频率
- rate = rospy.Rate(1)
- #设置计算器
- count = 0
- #先休眠一会,度过pub连接roscore这段时间
- rospy.sleep(3)
- #使用循环发布数据
- print("aa")
- while not rospy.is_shutdown():
- count += 1
- msg.data = "hello" + str(count)
- #发布数据
- pub.publish(msg)
- #设置日志
- rospy.loginfo("发布的数据:%s",msg.data)
- rate.sleep()#休眠一秒中然后醒过来
右键点击scripts打开终端
chmod +x *.py
打开plumbing_pub_sub文件中的CMakeLists.txt
找到
# catkin_install_python(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
将其修改为
catkin_install_python(PROGRAMS
scripts/demo01_pub_p.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
Shift+Alt+B编译一下
开三个终端
roscore
- cd demo03_ws
- source ./devel/setup.bash
- rosrun plumbing_pub_sub demo01_pub_p.py
- cd demo03_ws
- source ./devel/setup.bash
- rostopic echo che
在scripts中新建python文件demo01_sub_p.py
- #! /usr/bin/env python
- import rospy
- from std_msgs.msg import String
- """
- 订阅实现流程:
- 1.导包;
- 2.初始化ROS节点;
- 3.创建订阅者对象
- 4.回调函数处理数据;
- 5.spin()
- """
-
- def doMsg(msg):
- rospy.loginfo("我订阅的数据:%s",msg.data)
-
- if __name__ == "__main__":
- #2.初始化ROS节点;
- rospy.init_node("lala")
- #3.创建订阅者对象
- sub = rospy.Subscriber("che",String,doMsg,queue_size=10)
- #4.回调函数处理数据;
-
- #5.spin()
- rospy.spin()
-
找到CmakeLists.txt文件
找到
scripts/demo01_pub_p.py
在其后添加
scripts/demo02_sub_p.py
开三个终端
roscore
- cd demo03_ws
- source ./devel/setup.bash
- rosrun plumbing_pub_sub demo01_pub_p.py
- cd demo03_ws
- source ./devel/setup.bash
- rosrun plumbing_pub_sub demo02_sub_p.py
出现下图所示则表明话题通讯成功