我正在使用加速度计进行基本距离计算,在MATLAB中通过在物理类的单轴上拖动对象,并且在绘制数据方面存在问题。
我的步骤是:
1)校准设备以在每个轴上读取零g后,我消除了漂移误差:
X_real = X_sample - X_calibrated;
if(X_real <= X_drift )
{
X_real = 0;
}
X_drift为2 mg(来自加速度计数据表)
2)计算速度:
velocity = 0; % On start
% Integration
v(i) = v(i-1) - x(i-1)-(x(i)+x(i-1)+x(i-2)+x(i-3))/4;
%Check if we stopped
if(x(i-1)==0 && x(i)==0)
v(i)=0;
end
%Check if velocity is under 0 (Not allowed)
if(v(i) < 0)
v(i)=0;
end
velocity = velocity + v(i);
3)计算距离:
distance = 0; % On start
%Integration
s(i) = s(i-1) + v(i-1) + (v(i)-v(i-1)-v(i-2)-v(i-3))/4;
distance = distance + s(i);
通过在20厘米的桌子上拖动加速度计测试后,我得到了这些结果:
velocity = 0.09 m/s
distance = 0.21 m
time = 3.2s
1厘米的错误适用于教室。
图表说明了不同之处:
我试图在此之后绘制距离:
s(i) = s(i)+s(i-1);
并且在图表上得到了21厘米,但是在6秒之后没有它应该是4秒。 我做错了什么?
*更新:位置y值以mm为单位,而不是cm!遗憾