我正在做一个实验程序。我有一个固定在汽车仪表板上的智能手机,在旅行期间,我从应用程序中读取了惯性传感器的一些值。
准确地说,我读到了每个注册的加速度计数据时间(以固定间隔),以秒为单位。
所以现在我想从垂直加速度传递到垂直位移,为此我应该做一个双重积分。
我尝试了欧拉方法。从初始条件如:
v0=0.v0=0
这是零时间的初始速度。
x0=0.x0=0
这是零时间的初始位置。
定义,
deltaT=registrationinterval.deltaT=registrationinterval
(在我的情况下为 0.04 秒)
然后对于每个注册,我都会:
vi=vi−1+ayi∗deltaT.vi=vi−1+ayi∗deltaT
xi=xi−1+vi∗deltaT.xi=xi−1+vi∗deltaT
其中i
代表当前和i-1
先例。
但是我得到的图表不是很真实,实际上速度和位移都只是增长,而我必须得到的效果是垂直位移出来的东西类似于加速度图。
鉴于应用此程序,我的错误也很高,有可能图形只是在增长,而我没有看到任何类型的垂直振荡?
我还阅读了卡尔曼滤波器可以提前应用来清理信号,这可能是一个解决方案吗?
或者我应该改变积分方法并从龙格库塔切换到欧拉?(然而,最后一个,我一点也不知道如何设置)。
或者有人知道可以帮助我的算法吗?
这里有一个注册数据的例子,如果有帮助的话: