0

我正在做一个实验程序。我在汽车仪表板上安装了一个智能手机,在旅行期间,我从应用程序中读取了一些惯性传感器的价值。加速到位移

准确地说,我读了每秒注册的加速度计数据时间(以固定间隔)。

所以,现在我想从垂直加速度转移到垂直位移,为此,我应该进行双重积分。

我试过欧拉法。从最初的条件,如:

v0=0.v0=0这是零时间的初始速度。

x0=0.x0=0这是零时刻的初始位置。

限定,

deltaT=registrationinterval.deltaT=registrationinterval(在我的情况0,04s)

然后为每个注册制成,我做的:

vi=vi−1+ayi∗deltaT.vi=vi−1+ayi∗deltaT

xi=xi−1+vi∗deltaT.xi=xi−1+vi∗deltaT

i其中表示目前,还有先例。

但是我得到的图表并不是很现实,实际上速度和位移都只是增长,而我必须得到的效果是垂直位移出现类似于加速度图。

鉴于应用此程序,我也是一个很高的错误,有可能图形只是增长,我没有看到任何类型的垂直振荡?

我也读过卡尔曼滤波器可以提前应用来清洗信号,可能是解决方案吗?

或者我应该改变积分方法并从龙格库塔切换到欧拉? (但最后,我没有丝毫知道如何设置它)。

或者有人知道一个算法可以帮助我吗?

在这里有登记,如果是有帮助的数据的example

回答

0

两个欧拉和龙格库塔是数值积分。一个可能比另一个更精确,取决于你正在整合的方程类型,但两者应该给出相同的定量结果。如果一个给你一个不断增加的速度,另一个不给你,那么你有一个错误。

我认为这是一个比编程问题更多的物理问题。

从数据看,垂直加速度计数据看起来像是重力引起的加速度,在地球表面约为9.8米/秒^ 2。当然,你的汽车是由道路支持的,所以它实际上并没有加速下滑。

你使用的方程式假定没有其他的作用力,所以它们正确地表明汽车的速度和位置会不断增长(就像你从直升机上掉下汽车一样)。但还有其他的力量(推动轮胎的道路),所以你必须找到一种方法来模拟这些力量。

你可以做的一件事是将前几个测量值作为基线平均值(它应该接近9.8 m/s^2),然后从后续读数中减去该值。当汽车在山上上下移动时,传感器的数值会随着基线而变化,而这些差异就是你所关心的。

这是一个很好的第一个近似值。但是当你上山或下山时,手机不再与引力场相关,所以引力的一部分将反映在水平传感器中。为了获得准确的结果,您需要对此进行说明。