如何使用加速计传感器来检测和匹配两个玩具车的碰撞

时间:2015-06-13 01:29:15

标签: embedded accelerometer

我正在使用Accelerometer传感器收集玩具车的加速度数据,以判断它是否碰到某物或与另一辆玩具车发生碰撞。我的想法是检查其加速度数据是否发生急剧变化(为简单起见,仅考虑其x轴和y轴加速度数据,因为它是在平滑地面上运行的玩具车)。但是当汽车停止启动时,其加速度数据也会发生巨大变化。所以我需要区分它们。根据我的直觉,碰撞会在短时间内引起急剧变化的加速度,而发动机启动会导致加速数据平滑变化。 我认为这应该是一个非常普遍的问题。但我是一个非常新的手。所以我想知道是否有一种算法或方法来区分它们。如果在C中有实现,那将会很棒。 非常感谢。

[更新碰撞情况]
让我更具体地提出我的问题。我的项目涉及几辆玩具车,它们可以相互撞击,或撞到其他东西(如墙壁)。我需要做的是找出哪两辆车相互碰撞。我的想法是尝试比较两辆车的加速度数据,看看它们是否与相同的模式匹配。我将这个项目分为几个步骤:
1.检测颠簸,所以我需要区分汽车撞到某些东西而不是开始或其他一些情况,例如道路上的颠簸。
2.匹配两辆汽车的撞击特征,看看它们是否相互碰撞。我可以使用哪些功能?

[更新]
我发现这个网址包含非常有用的高峰发现信息 http://terpconnect.umd.edu/~toh/spectrum/PeakFindingandMeasurement.htm

2 个答案:

答案 0 :(得分:2)

我会发一个答案,因为你的问题中至少有一些有趣的元素接近StackOverflow。

  
      
  1. 检测颠簸,所以我需要区分汽车撞到某些东西而不是开始或其他一些情况,例如路上的颠簸。
  2.   

碰撞通常涉及高幅度的大负加速度。正常启动是正的,而停止通常是低幅度的。

此外,您可以将电机控制与加速度计融合使用。如果加速度与电机的要求匹配,则是正常的,而如果加速度与电机需求不相关,则它是独立的并且由一些外力引起。

由不平坦的地形引起的加速(我故意避免你的条款"颠簸"和#34;颠簸"因为它们令人困惑和不精确)通常具有垂直分量并且是短期的在窗口积分器中积分为零(即地形平均为#34;平均值为#34;)。车辆可能具有的任何悬架都会阻碍这种加速度,因此处理这种加速度必然是车辆特定的,但只需忽略垂直分量即可。

  
      
  1. 匹配两辆车'凹凸特征以查看它们是否相互碰撞。我可以使用哪些功能?
  2.   

如果这两辆车共用一个共同的或同步的时间源,例如来自GPS或普通的遥控器,则两辆车在同时同时出现异常加速的车辆表明它们相撞彼此。此外,具有相同质量的车辆的正面碰撞将具有大致相等的加速度曲线。倾斜碰撞更复杂(并且更可能),它们将涉及垂直于预期行进方向(即侧向)的更大加速度分量。您可能会以与电机需求类似的方式将侧向加速度与转向需求相关联。如果在没有转向需求的情况下存在侧向运动,则由外力引起。

我认为总的来说,你的问题需要经验数据。您需要运行实验来产生您希望区分的情况,捕获数据,绘制数据并观察每种情况的区别特征。数据应包括所有加速度计轴和电机需求。然后,您可以确定如何在数学上区分它们。然后,您可以构建预期算法并通过它们传递捕获的数据,以验证它们在车辆上实施之前是否有效。

我相信在任何情况下解决方案都涉及数字信号处理的元素 - 它不太可能是在离散瞬时输入中做出的决定。

由于任何碰撞的性质在很大程度上是非确定性和可变的,因此建模"正常"在一系列地形上驾驶情况,然后简单地检测正常情况下的任何东西作为潜在的碰撞。因此,不要试图描述碰撞的特征,你要表征"正常"并检测"异常"。

答案 1 :(得分:0)

这更像是一个关于编码的物理问题。尽管如此:

玩具车可以从其自身动力(加速/减速/向心力)达到的最大加速度是橡胶轮胎能够传递到地面的最大加速度。这个最大加速度受到轮胎与地面之间摩擦系数的限制。

理论上(除非你的理想地面上有非常软的轮胎,摩擦系数> 1),这将是最大1克(可能更少,因为你的发动机可能没有足够的动力)。

考虑到这一点,你可以从加速度数据中得知的唯一一点就是,一旦你测量了1g以上的任何东西,你就必须打一些东西。

这并不一定意味着低于该值的所有物品都是“正常运动”,因为 - 特别是如果您的汽车有软壳或碰到软物或碰撞到障碍物 - 由此产生的加速度凹凸也可能低于1克。

根据您的汽车结构,动力和地形,您可能需要使用较低的值。

根据所有这些,你可能会认识到单靠加速数据可能不足以清楚地识别发生的事情。