为什么我不能让matchScans功能正常工作?

4视图(30天)
我一直在试图使用matchScans函数随着transformScans估计两个激光雷达扫描之间的姿势,但我发现估计构成计算是远离它实际上应该什么,我不知道这是为什么。
上下文,我把数据从一个自由空间传感器在汽车制造商基本上(激光雷达)的x和y笛卡尔坐标形式但我也试过用范围和角度值没有运气。当我试着找到两个扫描之间的姿势,将估计变换0.0001 -0.0527 -0.0003为例,我将适用于当前扫描(使用transformScans)并获得一个转换扫描理论上应该使几乎完全与参考扫描。但是当我看当前的笛卡尔坐标和参考扫描对转换后的扫描cartersian坐标和比较,我发现翻译/旋转应用是太小了。在这个例子中,它试图应用一个翻译0.05米左右的范围值,实际上我知道扫描之间的位置是相隔2.5米,这不是被反映在估计姿势。
有人知道为什么这可能是发生和为什么它无法估计准确的扫描之间的姿势。仅供参考我的数据是由约1000点与笛卡尔坐标,所以我不认为它会有什么过于少分测量有效地估计。任何帮助都是感激。谢谢。

答案(2)

MathWorks机器人和自治系统的团队
你好Amrik,
我们不能确定扫描匹配不准确的原因。然而,使用不同的算法来做扫描匹配可能有助于降低这一问题。试着用 matchScansGrid 而不是 matchScans ,让我们知道。

soorajanilkumar
soorajanilkumar 2019年9月13日
嗨Amrik,
matchScans () 使用无损检测扫描匹配,容易陷入局部极大值。这意味着,除非你给一个好的初始姿势估计,你不会得到一个好的结果 matchScans ()。 很有可能你会得到一个完全错误的相对姿态输出。
随着mathworks建议尝试使用 matchScansGrid () 使用多分辨率相关扫描匹配算法健壮和更广泛的搜索空间。的 matchScansGrid () 远低于 matchScans (), 可以加速到一定的扩展提供了初始姿势估计测程法如果你有它。
以后你可以使用的结果 matchScansGrid () 姿态估计 matchScans () 得到一个更好的结果。
这是跟着lidarSLAM函数的方法。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的