流程:
1、编写发布方实现;
2、编写订阅方实现;
3、为python文件添加可执行权限;
4、 编辑配置文件;
5、编译并执行。
0.VScode配置
为了方便代码提示以及误抛异常,需要先配置 vscode,将前面生成的 python 文件路径配置进 settings.json
{
"python.autoComplete.extraPaths": [
"/opt/ros/melodic/lib/python2.7/dist-packages",
"/home/zxr/Ros_zhao/learning_topic_ws/devel/lib/python2.7/dist-packages"
],
1.发布方实现
#! /usr/bin/env python
# coding=utf-8
import rospy
from pub_sub.msg import Person
if __name__ == "__main__":
#1、初始化ROS节点
rospy.init_node("talker_person")
#2、创建发布者对象
pub = rospy.Publisher("talk_person", Person , queue_size=10)
#3、组织消息
p = Person( )
p.name = "葫芦瓦"
p.age = 18
p.height = 180
#4、编写消息发布逻辑
rate = rospy.Rate(1)
while not rospy.is_shutdown():
pub.publish(p)
rate.sleep()
rospy.loginfo("姓名:%s,年龄:%d,身高:%.2f",p.name,p.age,p.height)
p.age +=1
2.订阅方实现
#! /usr/bin/env python
# coding=utf-8
def person_callback(p):
rospy.loginfo("接收到的人的信息:%s, %d, %.2f",p.name, p.age, p.height)
import rospy
from pub_sub.msg import Person
if __name__ == "__main__":
rospy.init_node("listener_person")
sub = rospy.Subscriber("talk_person",Person,person_callback,queue_size=10)
rospy.spin()
3.权限设置
终端下进入 scripts 执行:chmod +x *.py 或者chmod 777 *.py
4.配置CMakeLists.txt
catkin_install_python(PROGRAMS
scripts/pub.py
scripts/sub.py
scripts/sub_person.py
scripts/pub_person.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
5.执行
启动节点
发布话题
订阅话题