【发布时间】:2016-12-29 10:51:17
【问题描述】:
我正在做一个实验程序。我有一个固定在汽车仪表板上的智能手机,在旅行期间,我从应用程序中读取了惯性传感器的一些值。
准确地说,我读到了每个注册的加速度计数据时间(以固定间隔),以秒为单位。
所以现在我想从垂直加速度传递到垂直位移,为此我应该进行双重积分。
我尝试了欧拉法。从初始条件如下:
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 先例。
但是我得到的图表不是很真实,实际上速度和位移都只是增长,而我必须得到的效果是垂直位移出来的东西类似于加速度图。
鉴于应用此程序,我的错误率也很高,可能图形只是在增长,而我没有看到任何垂直振荡?
我还阅读了卡尔曼滤波器可以提前应用来清理信号,可以是一个解决方案吗?
或者我应该改变积分方法并从龙格库塔切换到欧拉? (不过最后一个,我一点儿也不知道怎么设置)。
或者有人知道可以帮助我的算法吗?
这里有一个注册数据的example,如果有帮助的话:
【问题讨论】:
标签: algorithm accelerometer numerical-methods numerical-integration numerical-computing