【问题标题】:Autonomous robot location detection indoors室内自主机器人位置检测
【发布时间】:2015-08-19 21:14:07
【问题描述】:

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

我需要的是,一旦它在地板上移动(假设在 3m x 3m 的房间内),就能够获得新的位置。我正在使用一个 9DOF 传感器(3 轴加速度计数据、3 轴陀螺仪和 3 轴磁数据)来确定它的滚动、俯仰和偏航以及它的方向。

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

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

有什么方法可以转换 9DOF 数据以获取新位置或任何其他传感器来做到这一点?算法之类的其他解决方案吗?

【问题讨论】:

  • 加速度积分给出速度,积分速度给出位置。不过,它不会很准确。
  • @DonReba 你知道有什么办法吗?有没有关于这个的教程或文章?
  • @DonReba 你知道其他更准确的方法吗?
  • 积分只是将每次测量乘以自上次测量以来的时间并相加。当然,如果你有角加速度,你必须将其转换为线性,但这也很容易。可能有使用其他传感器减少错误的方法。这只是最简单的方法。
  • 如果你的机器人滚动没有滑动,也许使用电机旋转会更准确。使用 9-DOF,您可以计算从起点开始的位置,但所有误差都会累积起来,很快误差就会大于该值。问题将是正确定位捕获器以匹配球体的中心。

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


【解决方案1】:

正如在 cmets 中指出的那样,积分加速度给出速度,再次积分给出位置。然而,这不是很准确,因为错误很快就会累积。

人们正在使用的是“传感器融合”,它将多个传感器的数据组合成更好的估计,例如位置。但是,如果您仅依靠加速度计和陀螺仪,它仍会随着时间的推移累积误差。然而,磁矢量会帮助你,但它可能仍然不准确。

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

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

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

【讨论】:

  • 感谢您的回答。我检查了附件,但是据我所知不是计算 XYZ 坐标。
【解决方案2】:

我的以下答案不包括具体的实现,我的专业知识不包括机器人技术。 (我是机器学习、NLP、AI 领域的研究员。)但是,我相信我缺乏细节的建议会有所帮助,因为您的问题设置仍然处于一般水平。

SLAM 是研究如何通过感觉运动数据估计连续机器人位置的最著名领域之一。在该领域,有很多研究通过感觉运动数据来估计机器人的位置。

研究人员研究了针对各种特定情况的 SLAM 方法,例如在湿滑的地板和复杂形状的房间或嘈杂的传感器等。我认为您当前的设置比那些研究中的设置要少一些。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多