使用加速度计计算绘制速度和距离

时间:2016-03-22 14:43:31

标签: matlab accelerometer

我正在使用加速度计进行基本距离计算,在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厘米的错误适用于教室。

图表说明了不同之处: Acceleration, velocity and distance chart

我试图在此之后绘制距离: s(i) = s(i)+s(i-1);

并且在图表上得到了21厘米,但是在6秒之后没有它应该是4秒。 我做错了什么?

*更新:位置y值以mm为单位,而不是cm!遗憾

1 个答案:

答案 0 :(得分:0)

我很抱歉寻求帮助,我认为我的公式还可以,但他们没有。经过一步一步的计算,我的最终解决方案是:

1)速度:

v(i) = v(i-1) - x(i-1)-(x(i)+x(i-1))/2;

2)距离:

s(i) = s(i-1) + v(i-1)+(v(i)+v(i-1))/2;

图表是:

Acceleration,Velocity,Position chart

再次抱歉。我希望这能帮助有人计算速度和距离。在我寻求帮助之前,下次更好地学习我的代码肯定会帮助我。