Chinaunix首页 | 论坛 | 博客
  • 博客访问: 261894
  • 博文数量: 76
  • 博客积分: 773
  • 博客等级: 军士长
  • 技术积分: 759
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-24 23:52
个人简介

victory for prepared

文章分类

全部博文(76)

文章存档

2022年(1)

2021年(1)

2018年(8)

2017年(3)

2016年(20)

2015年(12)

2013年(5)

2012年(25)

2011年(1)

我的朋友

分类: LINUX

2016-02-18 10:58:12

ROS系统是一个松耦合的系统, 节点之间通过消息进行交互. 消息是至关重要的.
Topic是名字, 而消息类型是数据结构.
要使一则消息从一个节点成功到达另一个节点. 首先, 需要topic是一样的, 这样就确定了接口相同. 接着是消息的类型需要使一样的, 这样接收方才能将收到的数据进行正确的提取(类似于解码), 得到发送方原来的意思.
现在如果已经知道了topic的名字, 如何去查找消息的类型, 以便我们可以根据正确的格式去发送或者读取消息呢?
1, rostopic info [消息名字]; 可以得到Type:信息.

$ rostopic info /odom
Type: nav_msgs/Odometry


Publishers: 
 * /mobile_base_nodelet_manager ()


Subscribers: None
2, 根据上述操作得到 topic 消息类型为nav_msgs/Odometry;
使用工具 $rosmsg show nav_msgs/Odometry  后可以得到如下结果
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
  geometry_msgs/Pose pose
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
  float64[36] covariance
geometry_msgs/TwistWithCovariance twist
  geometry_msgs/Twist twist
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z
  float64[36] covariance
根据得到的数据结构就可以仿造消息了. 不同的缩进代表的是级别, 有些类似于目录级别的感觉, 可以找到msg文件进行对比加深理解.
3, 如果想要查看上述msg的说明文件可以使用
$roscd nav_msgs
进入目录下的msg文件夹查看, 该msg文件夹下有很多*.msg文件. 用于描述不同的msg的说明. 不过在文件中经常会用到其他包中使用到的消息类型, 即存在类型嵌套,不是很直观.


阅读(5877) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~