labview中的机器人里程计

时间:2016-03-31 10:22:03

标签: labview slam-algorithm slam

我目前正在开展一项涉及机器人必须在玉米田中航行的(学校)项目。

我们需要在 NI Labview 中制作完整的软件。

由于机器人必须能够执行的任务,机器人必须知道它的位置。

作为传感器,我们有一个6自由度IMU,一些不可测试的车轮编码器和一个2D激光扫描仪(SICK TIM351)。

到目前为止,我无法弄清楚任何算法或教程,因此真正坚持这个问题。

我想知道是否有人试图在SLview中使SLAM工作,如果有的话,是否有任何示例或解释来做到这一点?

或者是否有一个包含此功能/算法的LabVIEW工具包?

亲切的问候, 杰西巴克斯 第三年机电一体化学生

2 个答案:

答案 0 :(得分:1)

LabVIEW提供LabVIEW Robotics模块。机器人模块还有很多模板。首先,您可以查看Starter Kit 2.0 template这将为您提供简单的自动驾驶机器人项目。您可以基于这样的模板,从工作模型开发自己的应用程序,而不是从头开始。

答案 1 :(得分:1)

正如Slavo所提到的那样,LabVIEW Robotics模块包含用于寻路的A *等算法。但是,我所知道的并不是那里可以帮助你解决SLAM问题。 SLAM问题包括以下部分:地标提取,数据关联,状态估计和状态更新。

对于地标提取,您必须选择希望机器人识别的一个或多个要素。例如,这可以是角落或线条(3D中的墙壁)。例如,您可以使用群集,拆分和合并或RANSAC算法。我相信您的激光扫描仪提取并将点存储在按角度排序的列表中,这使得拆分和合并算法非常可行。虽然RANSAC是其中最准确的,但也具有更高的复杂性。我建议从一些最佳数据点开始测试线提取。例如,您可以将激光扫描仪放在带有直壁的小房间中,并执行一次扫描并将其保存到阵列或文件中。确保轮廓比四面墙更复杂。并在测量之前或之后去除噪音。

我还没有读过有关数据关联的好方法,但是你可以考虑一个具有里程碑意义的新方法,如果它距离任何现有的地标有一定的距离,或者如果不是那么就更新旧地标。

状态估计和状态更新可以通过互补滤波器或扩展卡尔曼滤波器(EKF)来实现。 EKF是非线性状态估计的事实上[1],并且在实践中往往非常有效。 EKF背后的理论是相当的,但它应该更容易实现。如果您要对EKF进行编程,我建议您使用MathScript模块。这两个滤波器的要点是从轮式编码器和从激光扫描仪中提取的地标估计机器人的位置。

由于SLAM问题是一项重大任务,我建议将其编程为多个较小的SubVI。这样您就可以在不增加太多复杂性的情况下正确测试零件。

还有很多关于SLAM的好文章。