使用 Flutter、ARKit 和 Viam 通过 iPhone 控制机器人手臂 |维亚姆

Viam 平台使没有机器人经验的移动工程师团队能够在短短几天内构建机器人手臂控制应用程序。

来源:Viam 博客

作为移动工程师,我们拥有多年构建 iOS 和 Android 应用程序的经验。我们了解 Swift、Kotlin、移动 UI 框架以及应用程序部署的复杂性。我们不知道的是机器人技术。我们从未研究过逆运动学、实施过电机控制系统或调试过机器人运动规划算法。

因此,当我们的创始人兼首席执行官 Eliot Horowitz 向我们提出一个挑战(让操作机器人手臂像在太空中移动手机一样直观)时,我们不知道从哪里开始。没有机器人背景的移动工程师真的可以建造这个吗?

事实证明,我们可以。我们所需要的只是 Flutter、ARKit 和 Viam。

版本 1:使用原始传感器数据进行姿势跟踪

我们最初的方法使用手机的内置传感器来确定位置和方向。加速度计跟踪手机的运动,陀螺仪跟踪其旋转。我们使用这些测量值来执行许多计算:首先,为了获得手机的速度,我们对加速度随时间的变化进行积分;接下来,为了得到它的位置,我们对速度进行积分;最后,为了获得其方向,我们对陀螺仪提供的角速度进行积分。然后,我们将位置和方向组合成一个“姿势”,发送到 Viam 的 moveToPosition API 以实时移动机器人。我们花了几天时间研究这个方法,最后我们找到了一个解决方案,但它是有缺陷的。

核心问题是传感器噪声。加速度计读数的双重积分意味着误差以二次方的方式复合。例如,假设加速度计的误差为 0.01m(这并不罕见)。 10秒后,速度误差为0.01x10=0.1m。但位置误差为1/2x0.01x10^2=0.5m。 60 秒后,该误差为 1/2x0.01x60^2=18m,使得计算基本上无法使用。我们尝试添加死区滤波器,这有一点帮助,但无法充分降低传感器噪声以实现可靠的手臂控制。

想在 Viam 上构建一些东西吗?