我制作了一个由 Arduino 和 Processing 控制的机器人,它通过旋转自己(就像一个球体)在房间里移动。
我需要的是一旦它在地板上移动就能够获得新位置(假设在 3m x 3m 的房间内)。我正在使用 9DOF 传感器(3 个加速度计数据轴、3 个陀螺仪轴和 3 个磁数据轴)来确定它的滚动、俯仰和偏航以及它的方向。
如何准确识别机器人在笛卡尔 (x,y,z) 坐标中相对于其起始位置的位置?我无法使用 GPS,因为每次旋转的运动小于 20 厘米,并且机器人将在室内使用。
我找到了一些室内测距和 3D 定位解决方案,例如 pozyx或使用固定相机。但是我需要它具有成本效益。
有没有办法转换 9DOF 数据以获得新位置或任何其他传感器来做到这一点?任何其他解决方案,例如算法?
最佳答案
正如评论中指出的那样,积分加速度给出速度,再次积分给出位置。然而,这不是很准确,因为错误会立即累积。
相反,人们使用的是“传感器融合”,它将几个传感器的数据组合成更好的估计,例如位置。但是,如果您单独依靠加速度计和陀螺仪,它仍然会随着时间的推移积累误差。然而,磁矢量会帮助你,但它可能仍然不准确。
我在网上找到了以下指南,介绍了在 arduino 上使用卡尔曼滤波器进行传感器融合。
http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1114&context=aerosp
警告:您需要了解一些数学知识才能启动并运行它。
关于arduino - 室内自主机器人位置检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105769/