前面已经运行了几个demo,其实运行自己的包只需要录制和之前格式一致的rosbag即可。里面可以根据自己的需要,主要包括:激光(scan)、齿轮编码器(odom)、惯导(imu)、静态路标(landmark)等。
第一步:验证数据包
cartographer提供了cartographer_rosbag_validate程序来检测数据包的是否符合cartographer的运行格式。官网文档说这个cartographer_rosbag_validate程序功能强大,不仅能够检测是否数据完整还能给出合理的数据格式建议,不过小编在实际使用中并未发现,此处吐槽一下。
不过这个工具还是有用的,下面要说小编最常用到的是,通过这个工具可以知道每个数据的frame_id,这个挺重要的,frame_id就是urdf里面的每个部件的名称。
[为什么?] urdf是什么?urdf是描述机器人各个硬件之间的3维空间连接关系,urdf有什么用呢?如果你只有激光laser数据源可能urdf的功能体现不出来,但是如果你同时有相机和激光数据源,slam过程中需要显示激光地图下相机看到的landmark路标,那么就需要把相机看到的landmark转换到激光坐标系下,而这时候我们就需要知道相机在激光坐标系下的空间位姿(相机和激光之间的外参),这个urdf就是的手动提供外参的输入文件,这下明白了吧。你可能还想问:我干嘛要把相机看到的landmark转换到激光坐标系下呢?这个答案是上一篇文章讲到的static landmark的作用,即用于机器人的快速定位。