arduino - 室内自主机器人位置检测

标签 arduino artificial-intelligence sensors robotics sensor-fusion

我制作了一个由 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/

相关文章:

Arduino无法同时在LED屏和串口监视器上输出

audio - 使用来自arduino的串行信息在Processing中播放音频

java - SpeechRecognizer onResults 未触发

java - 'Blokus' 游戏的人工智能(1-4 人)

android - 传感器融合 : Which sensors are required for finding Rotation Vector?

python - 通过 pyserial 接收多个值并在 Python GUI 中显示

c - 在库中覆盖#define

java - 广度优先搜索算法JAVA 8-puzzle

java - 在Android上,当 Activity 被销毁时是否有必要删除传感器监听器?

Contiki 时间戳值为 int