我目前正在做一个(学校)项目,涉及到一个机器人必须导航玉米地。
我们需要用NI Labview制作完整的软件。
由于任务,机器人必须能够执行,机器人必须知道它的位置。
作为传感器,我们有一个6自由度IMU,一些不可实现的车轮编码器和一个2D激光扫描仪(病态TIM351)。
到目前为止,我还无法找到任何算法或教程,因此,我真的困在这个问题上了。
我想知道是否有人试图在labview中使用SLAM,如果是的话,是否有任何例子或解释来做到这一点?
或者,是否有一个包含此函数/算法的LabVIEW工具包?
你好,杰西? Bax三年级机电工程系学生。
发布于 2016-04-11 20:32:20
正如斯拉沃所提到的,有一个LabVIEW机器人模块,它包含像A*这样的路径查找算法。但是没有什么能帮你解决SLAM问题,我知道。SLAM问题包括地标提取、数据关联、状态估计和状态更新。
对于地标提取,你必须选择一个或多个特征,你想让机器人识别。例如,这可以是一个角或一条线(3D中的墙壁)。例如,您可以使用聚类、拆分和合并或RANSAC算法。我相信您的激光扫描仪提取并存储在一个按角度排序的列表中的点,这使得分割和合并算法非常可行。虽然RANSAC是其中最精确的,但也具有较高的复杂度。我建议从一些测试行提取的最佳数据点开始。例如,你可以把你的激光扫描仪放在一个有直墙的小房间里,执行一次扫描,并将它保存到一个数组或一个文件中。确保轮廓比四面墙要复杂一点。并在测量前后消除噪音。
我还没有读过关于数据关联的好方法,但是如果距离任何现有的地标都有一定的距离,那么您可以考虑使用一个新的地标,或者更新一个旧的地标。
状态估计和状态更新可以通过互补滤波或扩展卡尔曼滤波(EKF)来实现。EKF是非线性状态估计[1]的一种实用方法,在实际应用中效果良好。EKF背后的理论是相当简单的,但是它应该更容易实现。如果要编程EKF,我建议您使用MathScript模块。这两个滤波器的要点是从车轮编码器和从激光扫描仪提取的地标中估计机器人的位置。
由于SLAM问题是一项很大的任务,我建议在多个较小的SubVI中编写程序,这样您就可以正确地测试您的部件,而不会增加太多的复杂性。
还有很多关于SLAM的好文章。
发布于 2016-03-31 13:51:56
LabVIEW提供LabVIEW机器人模块。机器人模块也有大量的模板。首先,您可以检查初学者工具包2.0模板,这将为您提供简单的工作自动驾驶机器人项目。您可以基于这样的模板,从工作模型开发自己的应用程序,而不是从头开始。
https://stackoverflow.com/questions/36330657
复制相似问题