扫描匹配算法为转换提供错误的值,但为旋转提供正确的值

时间:2014-10-21 12:19:40

标签: python robotics least-squares slam-algorithm

我已将它发布在robotics.stackexchange上,但我没有相关的答案。

我目前正在机器人上开发SLAM软件,我尝试使用扫描匹配算法来解决测距问题。

我读过这篇文章: Metric-Based Iterative Closest Point Scan Matching for Sensor Displacement Estimation

我发现它解释得非常好,我严格按照文章中给出的公式来实现算法。

你可以在python中看到我的实现: ScanMatching.py

我遇到的问题是,在我的测试中,发现了正确的旋转,但翻译完全错误。翻译的价值非常高。

你有没有人知道我的代码中可能出现什么问题?

否则,我应该在数学堆栈交换中发布我的问题吗?

ICP部分应该是正确的,因为我多次测试,但最小二乘最小化似乎没有给出好的结果。

正如您所注意到的,我使用了许多bigfloat.BigFloat值,因为有时最大浮点数不足以包含一些值。

1 个答案:

答案 0 :(得分:0)

不知道你是否已经解决了这个问题。

我没有阅读完整的文章,但我注意到它已经过时了。

恕我直言(我不是这里的专家),我会尝试聚合特定的算法,如特征检测和描述,以获得点云,描述符匹配器关联点,束调整以获得旋转相关矩阵。

我自己要尝试sba(http://users.ics.forth.gr/~lourakis/sba/),或者更具体地说是cvsba(http://www.uco.es/investiga/grupos/ava/node/39/)因为我在opencv上。

如果你有足够的cpu / gpu功率,请有机会使用AKAZE特征探测器和描述符。