扫描匹配算法在平移上给出错误值,但在旋转上给出正确值
我之前在 robotics.stackexchange 上发过这个问题,但没有得到相关的回答。
我现在正在为一个机器人开发 SLAM 软件,尝试使用扫描匹配算法来解决里程计问题。
我读了这篇文章:基于度量的迭代最近点扫描匹配用于传感器位移估计
这篇文章讲得非常清楚,我严格按照里面的公式来实现这个算法。
你可以在这里看到我的 Python 实现:ScanMatching.py
我遇到的问题是,在测试过程中,虽然找到了正确的旋转,但平移的结果完全错误,平移的数值非常高。
你们有没有想过我代码中可能有什么问题?
另外,我是不是应该把我的问题发到数学 Stack Exchange 上呢?
ICP 部分应该是正确的,因为我测试过很多次,但最小二乘法的结果似乎不太好。
正如你们注意到的,我使用了很多 bigfloat.BigFloat 的值,因为有时候最大浮点数不够大,无法容纳某些值。
1 个回答
0
不知道你是否已经解决了这个问题。
我没有读完整篇文章,但我注意到这篇文章有点旧。
在我看来(我不是专家),我会尝试把一些特定的算法组合在一起,比如特征检测和描述来获取点云,然后用描述符匹配来关联这些点,最后用束调整来得到旋转和平移矩阵。
我自己打算试试sba(http://users.ics.forth.gr/~lourakis/sba/),更具体一点是cvsba(http://www.uco.es/investiga/grupos/ava/node/39/),因为我在使用opencv。
如果你的电脑或显卡性能足够强,可以试试AKAZE特征检测器和描述符。