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

3

我正在使用加速计进行基本距离计算,通过在MATLAB中将物体沿单轴拖动来进行物理课程的学习,并且在绘制数据时遇到了问题。

我的步骤如下:

1)在对设备进行零重力校准后,消除漂移误差:

  X_real = X_sample - X_calibrated;

  if(X_real <= X_drift )
  {
   X_real = 0;
  }

X_drift为2毫克(来自加速度计数据表)

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厘米,但不是在应该是4秒而是6秒之后。 我哪里做错了吗?

*更新:位置y值为毫米而非厘米!抱歉


你的测量时间间隔是多少? - Shai
采样率为50毫秒。 - Alex Zed
1个回答

1
抱歉向您求助,我原以为我的公式没问题,但实际上不是。经过逐步计算,我的最终解决方案如下:
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

再次道歉。我希望这可以帮助某人计算速度和距离。它确实对我有所帮助,让我在请求帮助之前更好地学习我的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接