guojh's Blog.

基于ROS获取Android图像和惯导数据

字数统计: 586阅读时长: 2 min
2018/11/01

0 将手机与ROS连接

首先,通过局域网将手机与ROS相连接。我使用的是hitcm博客的程序,具体可以参考他的博客。到这一步已经可以订阅相关话题,并在程序中做相关计算了。但是如果还想记录下来手机传感器发布的数据,以便未来再次回放使用,则还需要进一步处理。

1 记录bag

ROS与手机相连后,使用rosbag命令开始记录数据,这里指定只保存android/imu和camera/image_raw两个话题下的消息:

1
rosbag record android/imu camera/image_raw # rosbag record <topic-names> or rosbag record -a 表示记录全部topic

更多请参考ROS wiki 。最后,按ctrl+C结束记录。

2 解析bag

现在已经可以在程序中写一个订阅节点来订阅图像和imu数据,然后在程序中进行相应处理,这个可以参考ROS wiki的例子,只需将相应订阅的类型和话题名改变即可。而如果你还不习惯使用bag文件在程序中做处理,那么你可以将数据保存成常见格式的文件,再进一步处理。从bag恢复数据网上有许多方法。比如使用roslaunch How to export image and video data from a bag file,还可以使用ROS自带的image_view功能包。进入一个空的文件夹,并使用image_view将相应话题中的数据记录下来:

1
2
3
4
# in a new terminal
rosrun image_view image_saver _filename_format:=%04d.png image:=camera/image_raw
# in a new terminal
rosbag play <.bag filename>

更多参数设置等用法请参考ROS wiki

然后就可以看到对应的数据被保存在文件夹下了。但是上述操作很多参数都不方便获得,因此不推荐。另外Matlab自带的Robotics Toolbox也很方便,提供了相应的解析rosbag的函数,详细的使用方法可以参考官方文档。我将自己的代码托管到Github上了,可以改变代码读取其他类型的传感器数据,还是挺方便的。 不过,最好还是自己写一个订阅节点,然后保存下来相应的数据,这个并不难。然后还可以在程序中使用ros自带的message_filters做实时的多传感器时间戳同步,非常使用。

原文作者:GJGJH

原文链接:https://gjgjh.github.io/ros1.html

发表日期:November 1st 2018, 4:46:35 pm

更新日期:February 2nd 2022, 7:37:38 pm

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG
  1. 1. 0 将手机与ROS连接
  2. 2. 1 记录bag
  3. 3. 2 解析bag