01前言
Cartographer是google在2016年推出的一套基于图优化的激光SLAM算法。如果你是SLAM研究者你一定听说过它的大名。这套算法可以融合多种传感器数据,以较低的资源消耗、较高的实时性构建栅格地图(这里仅指二维地图,虽然cartographer也支持3d建图,但建出来的地图既不是栅格地图也不是3d点云或其他常见格式,这种地图只能用于定位,没法用于路径规划、任务决策等,所以稍显鸡肋,目前业界很少使用这种地图))。可以说这套算法是目前激光slam界算法中的老师傅:没有新算法的眼花缭乱,但稳健、出色。无论在机器人领域还是自动驾驶领域都大量借鉴了cartographer中的思想,也因此,众多相关企业在招聘SLAM人才时都要求对其有较深的理解。
02学习它
学习cartographer并不容易。
难在哪里?根据笔者自身经验和调研周围的朋友,最难的部分并不在于cartographer相关论文中提出的新算法。关于这一部分的讲解,网络上资源很多,有好有差,但多看看总能看出些眉目直到理解(虽然也要费点力气)。反而最难的部分在于:
前端:
ROS版本中数据流的传递,乍一看乱七八糟的多态、继承,不知怎的就把数据送去进行scan match 了?
外推器中乱七八糟的imu_tracker都是啥?反正不管