我已经制作了一个由Arduino和Processing控制的机器人,它通过旋转自己(就像一个球体)在房间里移动。
我需要的是,一旦它在地板上移动(假设在一个3m x 3m的房间内),就能够获得新的位置。我使用一个9自由度的传感器(3轴加速度计数据,3轴陀螺仪和3轴磁性数据)来确定它的滚动,俯仰和偏航以及它的方向。
如何在笛卡尔(x,y,z)坐标中准确识别机器人相对于其起始位置的位置?我不能使用GPS,因为每次旋转的移动小于20厘米,并且机器人将在室内使用。
我发现了一些室内测距和3D定位解决方案,比如pozyx或使用固定摄像头。然而,我需要它的成本效益。
有没有办法转换9DOF数据以获得新的位置或任何其他传感器来实现这一点?是否有其他解决方案,如算法?
发布于 2015-08-21 01:33:48
正如有人在评论中指出的那样,积分加速度给出了速度,再次积分给出了位置。然而,这并不是很准确,因为错误很快就会累积起来。
相反,人们使用的是“传感器融合”,它将几个传感器的数据组合成对位置的更好估计。然而,如果你仅依靠加速度计和陀螺仪,随着时间的推移,它仍然会积累误差。然而,磁矢量将帮助你,但它可能仍然是不准确的。
我在网上找到了以下指南,介绍了arduino上使用卡尔曼滤波器进行传感器融合的方法。
http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1114&context=aerosp
警告:您需要了解一些数学知识才能启动和运行它。
发布于 2015-08-29 10:25:20
我的以下答案不包括具体的实现,我的专业知识也不包括机器人技术。(我是机器学习,NLP,AI领域的研究员。)然而,我相信我的缺乏细节的建议会在某种程度上有用,因为您的问题设置仍然处于一般水平。
SLAM是研究如何根据感知运动数据估计顺序机器人位置的最著名的领域之一。在该领域,已经有很多研究利用感知运动数据来估计机器人的位置。
研究人员已经研究了各种特定情况下的SLAM方法,如在光滑的地板和复杂形状的房间或具有嘈杂传感器等情况下。我认为您当前的设置比那些研究中的设置更不具体。
所以,如果我是你,我会先尝试一些标准的SLAM方法。我会从SLAM的教科书中选择几种流行的通用方法,并寻找实现这些方法的开源软件。
据我所知,particle filter(PF)是SLAM领域最流行和最成功的方法之一。PF是卡尔曼滤波(KF)的一种改进方差。PF非常容易实现。数学比KF简单得多。我认为PF在你的情况下值得一试。
https://stackoverflow.com/questions/32105769
复制相似问题