【记录ROS学习(四)2022/07/20】关于“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可视化界面",以及接入力传感器数据等等更多的挑战需要去面对

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值