关于电路
项目

测试机器人的碰撞检测系统具有不同的冲击阻力

2017年9月28日经过罗伯特·基姆(Robert Keim)

我们将使用真实的碰撞数据来完善检测算法,甚至更好,我们将确认该系统实际上有效。

我们将使用真实的碰撞数据来完善检测算法,甚至更好,我们将确认该系统实际上有效。

支持信息

我们在一个上开始了这个项目机器人碰撞检测系统通过收集用于模拟碰撞事件和非碰撞影响事件的加速数据(即手指水龙头)。然后,我们使用这些数据来制定一种算法,该算法可以识别真正的碰撞,并忽略机器人可能会作为正常操作的一部分所经历的各种颠簸和敲击。在本文中,我们将根据实际碰撞数据调整该算法。

振动,加速度

不过,首先,我想解释我在上一篇文章中提到的一些内容。显然,电动机是高频,低振幅加速度的重要来源,这意味着没有电动机的算法可以很好地工作,并且与电动机活跃的电动机可能不太好。以下图说明了我的观点。这是一个模拟的加速度曲线,它是随着电动机停止而生成的。

噪声是最小的 - 也许几毫伏达到峰值。下一个波形记录在电动机运行的情况下记录:

现在,噪声更像是30至50 mV的峰值。加速事件在所有这些额外的噪音中看起来非常不同:

如上一篇文章中的最后一段视频所示,尽管有这种电动机噪声,我的初始算法(令我惊讶的是)仍然有效。事实证明,(您将在一分钟内看到)现实生活中的碰撞事件会导致更高的振幅加速度配置文件,因此更新的算法很容易忽略电动机噪声。但是,如果您要开发基于敏感加速的机器人功能,则需要记住电动机振动。

不同的碰撞,不同的加速度

我的现实生活碰撞测试清楚地表明了一件事:开发一种对大多数可以描述为碰撞的事件有效的算法可能有点困难。我通过将机器人驱动到四种类型的表面来收集数据:

  • 实木被毯子覆盖;
  • 实木(没有毯子);
  • 纸板构成纸板箱的一部分,没有重量将其固定在适当的位置;
  • 和纸板构成一个较重的盒子的一部分。

如下图所示,加速度差异足以使设计普遍有效算法的过程变得复杂。每个图之前都有生成数据的碰撞的视频。

所有这些图的尺寸和时间尺寸都是等效的,因此您可以在视觉上比较不同波形的宽度。这里真正的问题是:所有这些概况是否与非碰撞事件的概况完全不同,以允许通用算法?也许是这样,但是我不能确定地说,因为我考虑过的唯一非碰撞事件是水龙头。当然,如果没有使算法过敏的算法,可能会更难识别其他类型的碰撞。

One thing to note from the above data is the generous amplitudes: three of the four profiles actually saturate at the ADC’s 2.4 V reference voltage, and the fourth (for the lighter cardboard box) reaches 1.917 V. These maximum amplitudes are significantly higher than those of the simulated collisions (around 1.685 V) and that of the tap event (about 1.81 V). So it’s possible that the temporal details of the collision profiles might not create too much difficulty because the algorithm could be developed primarily around the amplitude characteristics.

微调

出于本文的目的,我决定专注于绿色的束缚碰撞。这是三个碰撞的概况,包括上面显示的一场。

您会看到它们都相当快地通过2 V,并保持高倾斜度向上朝着饱和点(2.4 V)。因此,与模拟碰撞相比,最大幅度要高得多。它们的持续时间比模拟轮廓要短得多。主脉冲的宽度通常约为12毫秒,而模拟脉冲(仅是正截面)至少约100毫秒宽。最初,这引起了我的关注,因为我使用脉冲宽度将模拟碰撞与TAP事件区分开,但这确实不是问题,因为上面提到的幅度优势。

我没有理由放弃原始算法的一般结构。我所做的只是根据新数据调整常数。这是更新的值:

  • 第一个阈值:12971计数(1900 mv)
  • 第二个阈值:15019计数(2200 mV)
  • 从第一阈值交叉到第二个阈值交叉的最大样品数量:7
  • 最小宽度(即,从上升边缘的第二个阈值交叉到跌落边缘第一阈值交叉的最小样品数量):4

我还必须将固件从以前使用的数据收集版本转换为操作版本。这是整体程序流的描述:

  • 我手动将ADC窗口功能设置为比第一个阈值更大的值,这样我就不必记得每次调整阈值时都要更改配置文件。
  • 固件延迟三秒钟,使操作员有时间准备。
  • 启用了碰撞检测(以前对此语句进行了评论)。
  • 启用电动机并将其设置为全速前进运动。
  • 在这一点上,如果要收集数据,可以调用startAccelerometerdataCollection(),但是目前,由于数据收集和碰撞检测不能同时发生,因此该语句已评论。您要输入enable_collisionDetection()或startAccelerometerdataCollection(),而不是两者。
  • 延迟语句用于在三秒钟后禁用电动机。如果机器人错过了目标,或者如果碰撞检测系统无法正常工作,则可以防止运行AMOK。很容易将检测到的碰撞与电动机的三秒删除的残疾区分开,因为电动机制动器(即迅速停止)响应碰撞。

您可以使用以下链接下载源和项目文件:

proj_nondestCollisionTest_firmware.zip

该算法始终如一。以下视频是成功碰撞检测的蒙太奇。

下一个视频证实了该算法对TAP事件的强大功能。这些水龙头非常粗糙,这使我认为该算法会成功地忽略许多非碰撞颠簸和敲击。

结论

我们已经成功地开发并测试了围绕加速度计,微控制器和一些精心设计的固件构建的自动碰撞检测系统。当前的算法是针对涉及少量缓冲表面的碰撞进行了优化的,而不是由木材或混凝土组成的非常固体的表面。但是,该算法是灵活的,可以通过修改常数轻松调整。

只是为了记录,我的罗米机器人在所有这些碰撞之后仍然有效。