不知道大家有没有碰到这样的情况,拿小车在建图的时候不管是gmapping算法也好,还是cartographer算法,拿默认参数进行建图的时候往往达不到我们预期的效果,需要进行参数调整,但是每修改一次参数进行调整,我们就要拿键盘开一次车,费时费力费功夫,也不知道还会开几次,所以就想到能不能有什么工具能够记录下我们每次开车的路径或者是发布的速度指令?很幸运的是ROS有rosbag这么一个包,不由的敬佩ROS开发者。不仅仅是发布的速度指令可以记录,能够保存一次完整的小车运行过程数据,方便大家进行复盘分析。
本文只是记录自己使用所需的几个指令,具体的完整的rosbag包用法参考ros官方wiki:http://wiki.ros.org/rosbag/Commandline
录制
录制全部话题:
rosbag record -a
录制指定话题,设置 bag 包名:
rosbag record -O bag_name.bag /topic1_name /topic2_name /xxx
如果不设置名称的话,默认按照录制结束时间命名(我自己也非常偷懒不设置名字):
rosbag record /topic1_name /topic2_name /xxx
回放
想要结束录制的时候,直接ctrl c终止就好了,然后就会在当前路径中生成一个xxxx.bag文件,这个就是保存的录制文件。
以暂停的方式启动的话似乎可以防止跑掉数据:
rosbag play --pause record.bag
我一般选的就是直接回放:
rosbag play record.bag
-r后面跟一个数值,表示倍速回放,就和平时看视频时候的倍速一样,如果有时候车开太快了影响建图效果了,就稍微减慢一些:
rosbag play -r 0.5 record.bag
回放过程中可以使用rostopic list
查看下发布的话题,验证是否正常保存了所需的话题:
rostopic list
当然这种记录键盘发布的速度指令的方式,我觉得只适用于在较为封闭的环境和静态的环境中,不会有过多的外界因素影响小车的行驶,才能按照预设的路线走,比如说在赛道上或者是房间里。