如何使用加速度计传感器检测和匹配两辆玩具车的碰撞
how to use accelerometer sensor to detect and match two toy cars' collision
我正在使用加速计传感器收集玩具车的加速度数据,以判断它是否撞到某物或与另一辆玩具车相撞。我的想法是检查它的加速度数据是否有急剧变化(为了简单起见,只考虑它的 x 和 y 轴加速度数据,因为它是一辆玩具车 运行 在光滑的地面上)。但是当汽车从停止启动时,其加速度数据也发生了巨大的变化。所以我需要区分它们。根据我的直觉,颠簸会导致短时间内加速度的急剧变化,而发动机启动会导致加速度数据平滑变化。
我认为这应该是一个很常见的问题。但我真的是个新手。所以我想知道是否有一种算法或方法来区分它们。如果有 C 语言的实现就好了。
非常感谢。
[更新碰撞情况]
让我更具体地提出我的问题。我的项目涉及几辆玩具车,它们可以相互碰撞,或碰撞其他东西(如墙壁)。我需要做的是找出哪两辆车相撞了。我的想法是尝试比较两辆车的加速度数据,看看它们是否匹配相同的模式。我把这个项目分为几个步骤:
1.检测颠簸,所以我需要区分汽车撞到东西是启动还是其他一些情况,比如路上颠簸。
2. 匹配两辆车的碰撞特征,看它们是否相互碰撞。我可以使用什么样的功能?
[更新]
我发现这个 url 包含对找峰非常有用的信息。
http://terpconnect.umd.edu/~toh/spectrum/PeakFindingandMeasurement.htm
与其说是关于编码的问题,不如说这是一个物理问题。尽管如此:
玩具车可以通过自身动力(speedup/slowdown/centripetal 力)达到的最大加速度是它的橡胶轮胎能够传递到地面的最大加速度。这个最大加速度受限于轮胎与地面的摩擦系数。
理论上(除非您在理想地面上使用摩擦系数 > 1 的非常软的轮胎),这将是最大 1g(可能更少,因为您的引擎可能没有足够的动力)。
考虑到这一点,你从加速度数据中唯一可以看出的是,一旦你测量到任何超过 1g 的东西,你一定是撞到了东西。
这并不一定意味着低于该值的所有东西都是 "normal movement",因为 - 特别是如果你的车有软 shell 或者你撞到软的东西或者你有切线撞击障碍物 - 碰撞产生的加速度也可能低于 1g。
根据您汽车的结构、功率和地形,您可能需要使用较低的值。
根据所有这些,您可能会认识到仅靠加速度数据可能不足以清楚地确定发生了什么。
我会 post 回答,因为你的问题至少有一些有趣的元素接近适合 Whosebug。
- detect bumps, so I need to distinguish the car bumping into something from being started or some other situations, such as jolts on the road.
碰撞通常涉及高幅度的大负加速度。正常启动是积极的,而停止通常是低幅度的。
此外,您可以将电机控制与加速度计结合使用。如果加速度与电机的需求相匹配,这是正常的,而如果加速度与电机需求无关,则它是独立的并且是由一些外力引起的。
由不平坦地形引起的加速度(我故意避免使用您的术语 "bumps" 和 "jolts",因为它们令人困惑且不精确)通常具有垂直分量并且是短期的,因此在窗口中积分器积分为零(即地形平均为 "flat")。此类加速度会被车辆可能具有的任何悬架所阻尼,因此处理此问题必然会因车辆而异,但可能只需要简单地忽略垂直分量即可。
- match two cars' bump features to see if they are bumped into each other. What kind of features can I use?
如果两辆车共享一个共同的或同步的时间源,例如来自 GPS 或一个共同的遥控器,那么两辆车在 恰好 同时经历异常加速是一个表明他们相互碰撞。此外,具有相同质量的车辆的正面碰撞将具有大致相等的加速度曲线。倾斜碰撞更复杂(也更有可能),它们将涉及垂直于预期行进方向(即侧向)的更大加速度分量。您可能会以与电机需求类似的方式将横向加速度与 转向需求 相关联。如果在没有转向需求的情况下出现横向运动,那么就是外力作用。
我认为总体而言,您的问题需要经验数据。您需要 运行 产生您希望区分的情况的实验,捕获数据,绘制数据并观察每种情况的显着特征。数据应包括所有加速度计轴以及电机需求。然后您可以确定如何在数学上区分它们。然后,您可以构建前瞻性算法并通过它们传递捕获的数据,以验证它们是否有效,然后再将它们应用到车辆上。
我相信在任何情况下,解决方案都将涉及数字信号处理的元素——这不太可能是可以在离散瞬时输入中做出的决定。
由于本质上任何碰撞在很大程度上都是不确定的和可变的,因此在一定范围内对 "normal" 驾驶情况进行建模可能更简单,然后简单地将法线之外的任何事物检测为潜在碰撞.因此,与其尝试表征碰撞,不如表征 "normal" 并检测 "abnormal".
我正在使用加速计传感器收集玩具车的加速度数据,以判断它是否撞到某物或与另一辆玩具车相撞。我的想法是检查它的加速度数据是否有急剧变化(为了简单起见,只考虑它的 x 和 y 轴加速度数据,因为它是一辆玩具车 运行 在光滑的地面上)。但是当汽车从停止启动时,其加速度数据也发生了巨大的变化。所以我需要区分它们。根据我的直觉,颠簸会导致短时间内加速度的急剧变化,而发动机启动会导致加速度数据平滑变化。 我认为这应该是一个很常见的问题。但我真的是个新手。所以我想知道是否有一种算法或方法来区分它们。如果有 C 语言的实现就好了。 非常感谢。
[更新碰撞情况]
让我更具体地提出我的问题。我的项目涉及几辆玩具车,它们可以相互碰撞,或碰撞其他东西(如墙壁)。我需要做的是找出哪两辆车相撞了。我的想法是尝试比较两辆车的加速度数据,看看它们是否匹配相同的模式。我把这个项目分为几个步骤:
1.检测颠簸,所以我需要区分汽车撞到东西是启动还是其他一些情况,比如路上颠簸。
2. 匹配两辆车的碰撞特征,看它们是否相互碰撞。我可以使用什么样的功能?
[更新]
我发现这个 url 包含对找峰非常有用的信息。
http://terpconnect.umd.edu/~toh/spectrum/PeakFindingandMeasurement.htm
与其说是关于编码的问题,不如说这是一个物理问题。尽管如此:
玩具车可以通过自身动力(speedup/slowdown/centripetal 力)达到的最大加速度是它的橡胶轮胎能够传递到地面的最大加速度。这个最大加速度受限于轮胎与地面的摩擦系数。
理论上(除非您在理想地面上使用摩擦系数 > 1 的非常软的轮胎),这将是最大 1g(可能更少,因为您的引擎可能没有足够的动力)。
考虑到这一点,你从加速度数据中唯一可以看出的是,一旦你测量到任何超过 1g 的东西,你一定是撞到了东西。
这并不一定意味着低于该值的所有东西都是 "normal movement",因为 - 特别是如果你的车有软 shell 或者你撞到软的东西或者你有切线撞击障碍物 - 碰撞产生的加速度也可能低于 1g。
根据您汽车的结构、功率和地形,您可能需要使用较低的值。
根据所有这些,您可能会认识到仅靠加速度数据可能不足以清楚地确定发生了什么。
我会 post 回答,因为你的问题至少有一些有趣的元素接近适合 Whosebug。
- detect bumps, so I need to distinguish the car bumping into something from being started or some other situations, such as jolts on the road.
碰撞通常涉及高幅度的大负加速度。正常启动是积极的,而停止通常是低幅度的。
此外,您可以将电机控制与加速度计结合使用。如果加速度与电机的需求相匹配,这是正常的,而如果加速度与电机需求无关,则它是独立的并且是由一些外力引起的。
由不平坦地形引起的加速度(我故意避免使用您的术语 "bumps" 和 "jolts",因为它们令人困惑且不精确)通常具有垂直分量并且是短期的,因此在窗口中积分器积分为零(即地形平均为 "flat")。此类加速度会被车辆可能具有的任何悬架所阻尼,因此处理此问题必然会因车辆而异,但可能只需要简单地忽略垂直分量即可。
- match two cars' bump features to see if they are bumped into each other. What kind of features can I use?
如果两辆车共享一个共同的或同步的时间源,例如来自 GPS 或一个共同的遥控器,那么两辆车在 恰好 同时经历异常加速是一个表明他们相互碰撞。此外,具有相同质量的车辆的正面碰撞将具有大致相等的加速度曲线。倾斜碰撞更复杂(也更有可能),它们将涉及垂直于预期行进方向(即侧向)的更大加速度分量。您可能会以与电机需求类似的方式将横向加速度与 转向需求 相关联。如果在没有转向需求的情况下出现横向运动,那么就是外力作用。
我认为总体而言,您的问题需要经验数据。您需要 运行 产生您希望区分的情况的实验,捕获数据,绘制数据并观察每种情况的显着特征。数据应包括所有加速度计轴以及电机需求。然后您可以确定如何在数学上区分它们。然后,您可以构建前瞻性算法并通过它们传递捕获的数据,以验证它们是否有效,然后再将它们应用到车辆上。
我相信在任何情况下,解决方案都将涉及数字信号处理的元素——这不太可能是可以在离散瞬时输入中做出的决定。
由于本质上任何碰撞在很大程度上都是不确定的和可变的,因此在一定范围内对 "normal" 驾驶情况进行建模可能更简单,然后简单地将法线之外的任何事物检测为潜在碰撞.因此,与其尝试表征碰撞,不如表征 "normal" 并检测 "abnormal".