室内自主机器人位置检测

时间:2015-08-19 21:14:07

标签: arduino artificial-intelligence sensor robotics sensor-fusion

我制造了一个由Arduino和Processing控制的机器人,它通过自身旋转(如球体)在房间内移动。

我需要的是能够在地板移动后获得新位置(让我们说在3米x 3米的房间内)。我使用9DOF传感器(3轴加速度计数据,3轴陀螺仪和3轴磁力数据)来确定其滚转,俯仰和偏航及其方向。

如何准确识别机器人在笛卡尔坐标(x,y,z)坐标相对于其起始位置的位置?我不能使用GPS,因为每次旋转的移动距离小于20厘米,机器人将在室内使用。

我找到了一些室内测距和3D定位解决方案,如pozyx或使用固定相机。但是我需要它具有成本效益。

有没有办法转换9DOF数据以获取新位置或任何其他传感器来做到这一点?任何其他解决方案,如算法?

2 个答案:

答案 0 :(得分:6)

正如人们在评论中指出的那样,积分加速度给出了速度,并且再次积分得到了位置。然而,这不是很准确,因为错误会立即累积。

相反,人们正在使用的是传感器融合&#34 ;,它将几个传感器的数据组合成更好的估计,例如这个职位。但是,如果你单独依靠加速度计和陀螺仪,它仍然会随着时间累积误差。磁矢量会帮助你,但它可能仍然是不准确的。

我在网上找到了以下指南,介绍了在arduino上使用卡尔曼滤波器进行传感器融合的介绍。

http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1114&context=aerosp

警告:您需要了解一些数学知识才能启动并运行。

答案 1 :(得分:2)

我的以下答案不包括具体实施,我的专业知识不包括机器人。 (我是机器学习,NLP,AI领域的研究员。)但是,我相信我的缺乏细节的建议在某种程度上是有用的,因为你的问题设置仍然保持在一般水平。

SLAM是研究如何通过感觉 - 运动数据估计序贯机器人位置的最着名的领域之一。在现场,有很多研究通过感觉 - 运动数据来估计机器人的位置。

研究人员已经针对各种具体情况研究了SLAM方法,例如在柔软的地板和复杂形状的房间或有噪声的传感器等。我认为您当前的设置比那些研究中的设置稍微不那么具体。

所以,如果我是你,我会先尝试一些标准的SLAM方法。我会从SLAM教科书中学习一些流行的和通用的方法,并寻找实现这些方法的开源软件。

据我所知,particle filter(PF)是SLAM领域最受欢迎和最成功的方法之一。 PF是卡尔曼滤波器(KF)的高级方差。 PF很容易实现。数学比KF简单得多。我认为PF在你的情况下值得尝试。