使用加速度计计算的绘图速度和距离

Plotting speed and distance calculated using accelerometer

我正在 MATLAB 中通过在物理 class 的单个轴上拖动对象来使用加速度计进行基本距离计算,但在绘制数据时遇到问题。

我的步骤是:

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);

通过将加速度计拖动到 table 20 厘米进行测试后,我得到了这些结果:

velocity = 0.09 m/s
distance = 0.21 m 
time = 3.2s  

class房间有 1 厘米的误差是可以的。

图表说明了一些不同的东西:

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

并在图表上得到 21 厘米,但在 6 秒之后而不是在 4 秒之后它应该在的位置。 我做错了什么?

*更新:位置 y 值的单位是毫米而不是厘米!抱歉

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

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;

图表是:

再次抱歉。我希望这会帮助某人计算速度和距离。下次在寻求帮助之前,它确实帮助了我更好地研究我的代码。