我使用的是arduino uno,gy-521 mpu 6050和Jeff Rowberg库。虽然代码是完美的,但结果并不理想。我正在使用RealAccel选项但是当我将加速度计向右移动时,数据首先正确的正数增加,因为向右移动。但是一旦我停止移动设备,就会出现负值。在大多数情况下,正值和负值都有相同的值,这意味着如果我将加速度计移动到相当于' 100'一旦我停止移动,那么在正方向上也会有多个其他负值加起来大约为' -100'值。我认为这是因为每一个行动都有相反和平等的反应,但如果不是,我想知道为什么会发生这种情况,即使有这种情况,也必须有办法解决这个问题,对吧?我之前通过多个if语句解决了这个问题,基本上说如果最后7个数字中的任何一个是正数(因为噪音)那么接下来的x个数字将为零,但我想听听这个问题的任何其他想法或解决方案。谢谢你。
答案 0 :(得分:1)
如果在一个方向上加速对象,对象将永远不会减速或停止。它将永远朝着这个方向前进。减速或停止的唯一方法是产生负加速度。对于你的情况下的积极因素而言你是对的 - 它是因为你从速度零开始并以零速度结束。
我认为你实际上是在尝试计算那个方向的速度,它将从0开始,高于0,然后返回0.要获得该数字,总和(加速*(时差))来自时间= 0到你需要速度的任何时间。这被称为黎曼加速度和。
如需进一步阅读,请在一个维度中查找'