1.序言
倒腾一段时间的LIO-SAM,实在是累,是那种没任何收获的感觉。吐槽几点
a.输入点云需要按照最新的Velodyne雷达的数据格式(用速腾的累烦)
b.里程计的输入还需要三维的,二维轮式的实现起来烦
c.IMU预积分和紧耦合对消费级IMU和实际中很难严格时间对齐的开发真的有必要吗
d.增加的GPS,神烦坐标系对齐不讲清楚怎么搞?连github issue也没讲…
e.个人觉得创新不够,没什么大优点(还请各位多多包含…)
2.改进思路
改进还是基于lego-loam(lego-loam刚出来也是很多小错误)
改进1.二维轮式里程计+IMU = 三维里程计 替换 原本3D激光前端里程计
前端里程计是保证整个系统鲁棒性的前提(恶劣场景,剧烈运动)。
之前我们团队在狭小空荡的商品房(三房一厅 80多平)原本3D激光前端里程计飞得不成样子,当然系统也飞了。改成 二维轮式里程计+IMU = 三维里程计 就好了。LIO-SAM作者特意提到的鲁棒性的演示,就是因为前端的改进。另外前端对精度的要求没那么高,所以这里我觉得搞个预积分加融合模块性价比并不怎么高。
二维里程计提供位移 + IMU航姿模块提供三向角度 投影成三维轮式IMU里程计 算率很低,实现很方便。做产品不就这样嘛(简简单单不丢位置不丢位置)。
改进2.增加GPS模块
GPS因子的添加着重提高建图精度和长时间的鲁棒性,也可以用做回环检测。融合思路没什么好写的,下面着重说一下如何实现GPS获取的当地里程计坐标系与机体坐标系的对齐。贴几张之前文档的截图,该算法可以直接集成在建图算法中,无需另外操作,注意建图起始位置需要满足假设
改进3.SC回环策略确实比原本的好用
改进4.添加一段距离的闭环约束
回环检测粗暴直观上就是终点回到起点,检测到回环,轨迹重新拉一下。单这样的话有个小问题,回环半径大的情况下,前半程累积误差已经接受不了。所以提出帧间闭环约束(比如第10m的激光帧与第2m的激光帧做一个约束)。思路就是这样啦。对累积误差的消除还是有作用的。当然这个算法得自己好好调试。
3.分享
欢迎各位爱好者留言和加微信讨论(15112119047),也欢迎加入高新兴机器人!