ROS通过话题订阅得到自己需要的信息——Gazebo仿真软件中模型的位姿信息为例

本文介绍如何在ROS中通过话题订阅获取Gazebo仿真软件中模型的位姿信息。首先通过`rostopic list`找到相关话题,然后使用`rostopic info`检查消息类型和内容,确保话题包含所需信息。接着,了解消息类型和成员信息,编写C++代码进行消息订阅。文章还提到,虽然提供C++代码示例,但Python代码可按需补充。
摘要由CSDN通过智能技术生成

前言

最近毕业设计需要用到ROS去控制机械臂,且现在因为疫情被困家中只能用仿真的形式来完成,于是不得已通过仿真的形式完成实验。由于话题(Topic)是ROS系统中最常用的通信手段之一,ROS系统在运行时各个节点间的信息交互、参数传递等都需要用到发布和订阅话题的手段完成,但很多Fresh fish like me(像我一样的菜鸟)并不能在短时间内很好地从官方的教程提炼出其中的用法和思路。授人以鱼不如授人以渔,本文重点讲解在一个系统或者一套(开源)代码运行起来之后,找到自己想要的信息,然后一步一步通过话题订阅获得自己想要的信息的思路。Gazebo是常用的物理仿真环境之一,本文就以Gazebo中对应模型的位姿信息为例。
以下是笔者的系统信息与编程环境:

操作系统:Ubuntu18.04-amd64
ROS版本:ROS-Melodic

查找所需信息所在的话题——若已知目标话题名可略过该节

首先我们需要将这个系统运行起来,如果是开源代码往往通过运行launch文件,自己写的代码也还有可能是运行自己的节点,如此我们才能在系统的消息列表中找到我们需要的信息。系统运行之后Gazebo界面如下图所示,在左侧可以看到当前环境中存在的模型信息。本文的目标模型为 box
在这里插入图片描述

系统开始运行之后,首先通过指令 rostopic list 得到当前系统中所有的消息名称

rostopic list

在这里插入图片描述
找到这时候往往会发现系统的消息名称列表特别多,很难找到自己想要的那一部分信息,于是我们快速拖动滑块浏览一下列表,快速查找有没有那一部分可能是我们需要的信息。不难发现在消息列表偏上的不分有几个话题是以/gazebo为开头的,这里面很可能就包含我们需要的信息。于是重新通过指令rostopic list /gazebo来查看所有以/gazebo为开头的话题列表。

rostopic list /gazebo

在这里插入图片描述
找到相关的消息列表后,其中第二行的消息为/gazebo/model_states,看名字就很像我们需要的消息内容,但如果并不确定的话可以继续往下查看该话题的相关信息。

rostopic info /gazebo/model_states

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值