2016-03-31 54 views
1

我目前正在研究涉及机器人必须导航玉米田的(学校)项目。labview中的机器人测距法

我们需要完整的软件的NI LabVIEW

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

作为传感器,我们有一个6-DOF IMU,一些unrealiable轮编码器和2D激光扫描器(SICK TIM351)。

直到现在我无法找出任何算法或教程,从而真正停留在这个问题上。

我想知道如果有谁试图在使SLAM工作在LabVIEW中,如果是的话是否有任何例子或者解释这样做呢?

或者是否有可能包含此函数/算法的LabVIEW工具包?

亲切的问候, 杰西Bax蛋白 三年级学生机电一体化

回答

1

正如Slavo提到的那样,LabVIEW Robotics模块包含像A *这样的路径查找算法。但是那里并没有很多可以帮助你解决我所知道的SLAM问题。 SLAM问题由以下部分组成:地标提取,数据关联,状态估计和状态更新。

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

我还没有好的方法进行数据关联阅读起来,但你可以例如只考虑一个新的标志性建筑,如果它是有一定距离的任何现有的地标或更新旧的标志性建筑,如果没有。

状态估计和状态的更新可与互补滤波器或扩展卡尔曼滤波器(EKF)来实现。 EKF对于非线性状态估计[1]是事实上的,并且在实践中倾向于很好地工作。 EKF背后的理论虽然不错,但实施起来应该稍微简单一些。如果您要编程EKF,我会推荐使用MathScript模块。这两个滤波器的要点是从车轮编码器和激光扫描仪提取的地标估计机器人的位置。

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

在SLAM上也有很多很好的论文。

1

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