8

私は最近、約 10 フィート (飛行中に取得したデータから計算) の精度を持つ気圧高度計を搭載したロケットを打ち上げました。記録されたデータはサンプルごとに 0.05 秒の時間単位であり、飛行全体をズームアウトすると、高度と時間のグラフはほぼ同じように見えます。

問題は、データから速度や加速度などの他の値を計算しようとすると、測定値の精度が計算値をほとんど価値のないものにすることです。速度と加速度の妥当な値を計算 (または概算) できるように、データを平滑化するにはどのような手法を使用できますか? 主要なイベントが時間内に残っていることが重要です。最も顕著なのは、最初のエントリの 0 と飛行中の最高点 (2707) です。

高度データが続き、地表からのフィートで測定されます。最初の時間は 0.00 で、各サンプルは前のサンプルから 0.05 秒後です。飛行開始時のスパイクは、リフトオフ中に発生した技術的な問題によるものであり、スパイクを取り除くことが最適です。

私は当初、近くのデータポイントを平均化する線形補間を使用しようとしましたが、統合に十分なほどデータを平滑化するのに多くの反復が必要でした.曲線の平坦化により、重要な遠地点と地上レベルのイベントが削除されました.

すべてのヘルプは大歓迎です。これは完全なデータ セットではないことに注意してください。データを分析するためのより良い方法についての提案を探しています。変換されたデータ セットで誰かが返信するのではありません。必須ではありませんが、完全な飛行データを知らなくても現在の高度/速度/加速度を予測できるアルゴリズムを将来のロケットに搭載するとよいでしょう。

00000
00000
00000
00076
00229
00095
00057
00038
00048
00057
00057
00076
00086
00095
00105
00114
00124
00133
00152
00152
00171
00190
00200
00219
00229
00248
00267
00277
00286
00305
00334
00343
00363
00363
00382
00382
00401
00420
00440
00459
00469
00488
00517
00527
00546
00565
00585
00613
00633
00652
00671
00691
00710
00729
00759
00778
00798
00817
00837
00856
00885
00904
00924
00944
00963
00983
01002
01022
01041
01061
01080
01100
01120
01139
01149
01169
01179
01198
01218
01238
01257
01277
01297
01317
01327
01346
01356
01376
01396
01415
01425
01445
01465
01475
01495
01515
01525
01545
01554
01574
01594
01614
01614
01634
01654
01664
01674
01694
01714
01724
01734
01754
01764
01774
01794
01804
01814
01834
01844
01854
01874
01884
01894
01914
01924
01934
01954
01954
01975
01995
01995
02015
02015
02035
02045
02055
02075
02075
02096
02096
02116
02126
02136
02146
02156
02167
02177
02187
02197
02207
02217
02227
02237
02237
02258
02268
02278
02278
02298
02298
02319
02319
02319
02339
02349
02359
02359
02370
02380
02380
02400
02400
01914
02319
02420
02482
02523
02461
02502
02543
02564
02595
02625
02666
02707
02646
02605
02605
02584
02574
02543
02543
02543
02543
02543
02543
02554
02543
02554
02554
02554
02554
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02543
02533
02543
02543
02543
02543
02543
02543
02543
02543
02533
02523
02523
02523
02523
02523
02523
02523
02523
02543
02523
02523
02523
02523
02523
02523
02523
02523
02513
02513
02502
02502
02492
02482
02482
02482
02482
02482
02482
02482
02482
02482
02482
02482
02482
02482
02482
02482
02472
02472
02472
02461
02461
02461
02461
02451
02451
02451
02461
02461
02451
02451
02451
02451
02451
02451
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02441
02431
02441
02431
02441
02431
02420
02431
02420
02420
02420
02420
02420
02420
02420
02420
02420
02420
02420
02420
02410
02420
02410
02410
02410
02410
02400
02400
02410
02400
02400
02400
02400
02400
02400
02400
02400
02400
02400
02400
02400
02390
02390
02390
02380
02380
02380
02380
02380
02380
02380
02380
02380
02380
02380
02380
02380
02370
02370
02380
02370
02359
02359
02359
02359
02359
02359
02359
02359
02359
02359
02359
02359
02359
02359
02349
02349
02349
02349
02349
02339
02339
02339
02339
02339
02339
02339
02339
02339
02339
02339
02339
02339
4

6 に答える 6

8

これが、カルマンフィルターを使用した私の解決策です。多かれ少なかれスムーズにしたい場合は、パラメーターを調整する必要があります(+-桁でも)。

#!/usr/bin/env octave

% Kalman filter to smooth measures of altitude and estimate
% speed and acceleration. The continuous time model is more or less as follows:
% derivative of altitude := speed
% derivative of speed := acceleration
% acceleration is a Wiener process

%------------------------------------------------------------
% Discretization of the continuous-time linear system
% 
%   d  |x|   | 0 1 0 | |x|
%  --- |v| = | 0 0 1 | |v|   + "noise"
%   dt |a|   | 0 0 0 | |a|
%
%   y = [1 0 0] |x|     + "measurement noise"
%               |v|
%               |a|
%
st = 0.05;    % Sampling time
A = [1  st st^2/2;
     0  1  st    ;
     0  0  1];
C = [1 0 0];

%------------------------------------------------------------
% Fine-tune these parameters! (in particular qa and R)
% The acceleration follows a "random walk". The greater is the variance qa,
% the more "reactive" the system is expected to be, i.e.
% the more the acceleration is expected to vary
% The greater is R, the more noisy is your measurement instrument
% (less "accuracy" of the barometric altimeter);
% if you increase R, you will smooth the estimate more
qx = 1.0;                      % Variance of model noise for position
qv = 1.0;                      % Variance of model noise for speed
qa = 50.0;                     % Variance of model noise for acceleration
Q  = diag([qx, qv, qa]);
R  = 100.0;                    % Variance of measurement noise
                               % (10^2, if 10ft is the standard deviation)

load data.txt  % Put your measures in this file

est_position     = zeros(length(data), 1);
est_speed        = zeros(length(data), 1);
est_acceleration = zeros(length(data), 1);

%------------------------------------------------------------
% Kalman filter
xhat = [0;0;0];     % Initial estimate
P    = zeros(3,3);  % Initial error variance
for i=1:length(data),
   y = data(i);
   xpred = A*xhat;                                    % Prediction
   Ppred = A*P*A' + Q;                                % Prediction error variance
   Lambdainv = 1/(C*Ppred*C' + R);
   xhat  = xpred + Ppred*C'*Lambdainv*(y - C*xpred);  % Update estimation
   P = Ppred - Ppred*C'*Lambdainv*C*Ppred;            % Update estimation error variance
   est_position(i)     = xhat(1);
   est_speed(i)        = xhat(2);
   est_acceleration(i) = xhat(3);
end

%------------------------------------------------------------
% Plot
figure(1);
hold on;
plot(data, 'k');               % Black: real data
plot(est_position, 'b');       % Blue:  estimated position
plot(est_speed, 'g');          % Green: estimated speed
plot(est_acceleration, 'r');   % Red:   estimated acceleration
pause
于 2009-12-24T06:51:21.657 に答える
3

ローパス フィルターを通してデータを実行してみることができます。これにより、高周波ノイズが滑らかになります。単純な FIR かもしれません。

また、主要なイベントを生データから取得することもできますが、速度と加速度のデータには多項式近似を使用します。

于 2009-12-24T06:07:40.747 に答える
2

値のスクロールウィンドウ平均を実行してみましたか?基本的に、たとえば10個の値(0から9)のウィンドウを実行し、その平均を計算します。次に、ウィンドウを1ポイント(1から10)スクロールして、再計算します。これにより、ポイント数を比較的変更せずに値を平滑化できます。ウィンドウが大きいほど、より多くの高周波情報が失われる代わりに、よりスムーズなデータが得られます。

データに外れ値の急上昇が見られる場合は、平均の代わりに中央値を使用できます。

自己相関を試すこともできます。

于 2009-12-25T16:37:35.503 に答える
1

データの分析に取り組む方法の1つは、モデルとのマッチングを試み、関数を生成してから、データセットへの適合性をテストすることです。これはかなり複雑で、おそらく不要です...しかし、要点データから直接加速度/速度データを生成する代わりに、モデルに一致させることができます(ロケットの場合はかなり単純で、上向きに加速した後、ゆっくりと一定速度で降下します)。少なくとも、物理学でそれを行う方法実験。

飛行中に速度と加速度の感覚を生成することに関しては、これはいくつかの異なる結果から速度を平均するのと同じくらい簡単でなければなりません。EsitimatedV = Vmeasured *(1 / n)+(1-1 / n)*EstimatedVの線に沿ったもの。ベロシティを調整する速度に基づいてnを設定します。

于 2009-12-24T06:13:45.960 に答える
1

私はロケットについて何も知りません。私はあなたのポイントをプロットしました、そしてそれらは素敵に見えます。

そのプロットで私が見たものに基づいて、通常は単一の遠地点があり、あなたのポイントを生じさせた関数にはその遠地点での微分時間がないと仮定しましょう。

提案:

  1. 飛行中の最大高度を監視します。
  2. 最新のいくつかのポイントを現在の最大値と比較することにより、(たとえば、単純に)遠地点を継続的に監視します。
  3. 最大値に達するまで、(0,0)を固定し、任意のノットのセットを使用して、現在の高度までの自然スプラインのコレクションを計算します。スプラインの残差を使用して、破棄するデータを決定します。スプラインを再計算します。
  4. 最大で、最後に計算されたスプラインを保持します。アポジを超えた曲線のスプラインの新しいセットの計算を開始します。
于 2009-12-25T16:23:40.033 に答える
0

ARIMAモデルと残差の自己相関の検索は標準的な手順です。別のボラティリティモデル。

于 2009-12-25T16:40:56.603 に答える