当前位置:   article > 正文

ROS通信机制——python实现_rospy shutdown

rospy shutdown

一、普通话题通信

1. 创建发布者

注意:不要在开头添加注释,下面代码第一行是指定编译器,第二行是防止因为代码中的中文注释而出现乱码

  1. #! /usr/bin/env python
  2. #coding:utf-8
  3. #导包
  4. import rospy
  5. from std_msgs.msg import String
  6. if __name__=="__main__":
  7. #初始化ROS节点
  8. rospy.init_node("talker")
  9. #创建发布者
  10. pub=rospy.Publisher("Matlab",String,queue_size=10)
  11. #创建消息类型
  12. msg=String()
  13. #设置发布排频率
  14. rate=rospy.Rate(1)
  15. count=0
  16. #休眠1秒,防止出现前面的数据没有接受到
  17. rospy.sleep(1)
  18. #循环发布数据,其中rospy.is_shutdown()的意思是只要节点关闭就返回true
  19. while not rospy.is_shutdown():
  20. count+=1
  21. #str(count)可以将count转变为字符串
  22. msg.data="hello"+str(count)
  23. pub.publish(msg)
  24. #rospy.loginfo()相当于C++版本里面的ROS_INFO()
  25. rospy.loginfo("I talk %s",msg.data)
  26. #休眠
  27. rate.sleep()

2. 创建订阅者

注意:不要在开头添加注释,下面代码第一行是指定编译器,第二行是防止因为代码中的中文注释而出现乱码

  1. #! /usr/bin/env python
  2. #coding:utf-8
  3. #导包
  4. import rospy
  5. from std_msgs.msg import String
  6. def Callback(msg):
  7. rospy.loginfo("I hear %s",msg.data)
  8. if __name__=="__main__":
  9. #初始化ROS节点
  10. rospy.init_node("listener")
  11. #创建订阅者
  12. sub=rospy.Subscriber("Matlab",String,Callback,queue_size=10)
  13. #回调函数
  14. #spin
  15. rospy.spin()

3.添加可执行权限

注意:一定要在scripts文件夹下打开终端

4. 编译配置

在Cmakelist中添加如下代码:

  1. catkin_install_python(PROGRAMS
  2. scripts/talker.py
  3. DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
  4. )
  5. catkin_install_python(PROGRAMS
  6. scripts/listener.py
  7. DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
  8. )

5. 执行

二、自定义话题通信

1. 准备工作

先写好自定义的消息,然后再编译,这时会生成相应的头文件。

打开lib下面的python2.7/dist-package....,鼠标放在这个文件上然后打开终端。

 在终端中输入pwd,然后赋值路径

将路径赋值到setting.json中的“python.autoComplete.extraPaths” 中,保存。

2. 编写发布者

  1. #! /usr/bin/env python
  2. #coding:utf-8
  3. #导包
  4. import rospy
  5. from learning_communication.msg import person
  6. if __name__ == "__main__":
  7. #初始化节点
  8. rospy.init_node("talkermsg")
  9. #创建发布者
  10. pub=rospy.Publisher("Matlab",person,queue_size=10)
  11. #创建消息对象
  12. per=person()
  13. per.age=10
  14. per.name="zhangpeng"
  15. per.height=180
  16. #设置频率
  17. rate=rospy.Rate(1)
  18. while not rospy.is_shutdown():
  19. pub.publish(per)
  20. rospy.loginfo("I am talking %s %d %d",per.name,per.age,per.height)
  21. per.age+=1
  22. rate.sleep()

3. 编写接收者

  1. #! /usr/bin/env python
  2. #coding:utf-8
  3. import rospy
  4. from learning_communication.msg import person
  5. def Callback(per):
  6. rospy.loginfo("I hear %s %d %d",per.name,per.age,per.height)
  7. if __name__ == "__main__":
  8. rospy.init_node("listenermsg")
  9. sub=rospy.Subscriber("Matlab",person,Callback,queue_size=10)
  10. rospy.spin()

4. 配置相关的文件

 在CmakeList中添加:

  1. catkin_install_python(PROGRAMS
  2. scripts/talker.py
  3. scripts/listener.py
  4. scripts/talkermsg.py
  5. scripts/listenermsg.py
  6. DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
  7. )

5. 添加可执行权限

注意:一定要在scripts文件夹下打开终端

6. 编译运行

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号