栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【记录ROS学习(四)2022/07/20】关于“ROS中订阅subscribe 多个话题并汇聚回调信息处理”以及“UR5 接收关节信息”的学习记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【记录ROS学习(四)2022/07/20】关于“ROS中订阅subscribe 多个话题并汇聚回调信息处理”以及“UR5 接收关节信息”的学习记录

文章目录
  • 【记录ROS学习(四)2022/07/20】关于“ROS中订阅subscribe 多个话题并汇聚回调信息处理”以及“UR5 接收关节信息”的学习记录
    • 一、ROS中订阅subscribe 多个话题并汇聚回调信息处理
    • 二、UR5 接收关节信息

【记录ROS学习(四)2022/07/20】关于“ROS中订阅subscribe 多个话题并汇聚回调信息处理”以及“UR5 接收关节信息”的学习记录 一、ROS中订阅subscribe 多个话题并汇聚回调信息处理
  • 在学习的过程中,我需要用到多个订阅内容集合到单个函数中进行处理的操作。
  • 但是一般网络上的订阅方式是没有回调参数的,于是我走了很多歪路,例如
  1. 获取内存地址并用python中的ctypes,进行一个地址内容抽取,参考《python通过内存地址获取数据》),但是效果很差,估计是ROS本身封装的很严所以一般的抽取内存数据的方式不可用;
  2. 调取rospy.topics.Subscriber***函数里的方法,也是无法解决这个问题:
    于是我开启了面向搜索引擎编程,发现这个两个教程
    (1) 利用message_filter进行多传感器时间同步
    (2) ROS官方教程[翻译]—message_filter的使用

附上代码示例:

import message_filters
#---------------------订阅----------------------
sub1 	= message_filters.Subscriber('/topic1' , msg) 
#message_filters.Subscriber 跟rospy.Subscriber 一样需要传入的函数
sub2	= message_filters.Subscriber('/topic2' , msg) 

#---------------------集合-----------------------
ts = message_filters.TimeSynchronizer([sub1,sub2],1)
ts.registerCallback( 要传入的函数 )
#---------------------END----------------------

以上仅为使用模板topic 的选择还得看用户

二、UR5 接收关节信息

在实验的过程中,我希望收集UR5机械臂的关节信息,但是当我把 订阅rospy.Subscriber() 函数放在执行UR5控制(运动)的函数前面时会出现无法进入下一个函数的情况,在查阅很多网络资料后发现未知作者操作UR5机械臂一文中出现了一句话
也就是说必须UR5机械臂有出现关节变化时该订阅才会生效,因此必须让机械臂动起来或者把订阅消息的程序放在机械臂控制运动的函数之后

附上示例代码

rospy.Subscriber('/joint_states',JointState,getUR5State)
def getUR5State:
	UR5state = state.position
    rospy.loginfo(UR5state)

通过这一年的学习算是对强大的ROS系统有了浅薄的了解,但还有很多地方需要学习,例如 “把所有的节点放到一个Lanuch里” 或者"做成一个Qt可视化界面",以及接入力传感器数据等等更多的挑战需要去面对

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022457.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号