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