3

移動中の車の小さなデータセットがあります。

Data_=[time x,y,z];    %# ONLY THIS DATA

この場合、速度と加速度は一定ではないことを私は知っています。

いろいろな時間に車の位置を推定したい。カルマンフィルターを使うことにしました。カルマンフィルターを検索しましたが、速度と加速度で3D空間内のオブジェクトを追跡するためのコードが見つかりませんでした。どこから始めたらいいのかわからない。カルマンフィルターは速度と加速度を自動的に処理できますか?

誰かが私を助けて、リンクやガイダンスを与えることができますか?

4

5 に答える 5

3

私の推奨事項は、 Mathworksファイル交換に行き、カルマンフィルターを検索することです。

この非常に標準的なアルゴリズムに適したコードがいくつかあります。

カルマンフィルター自体に関する限り、それらはいわゆる予測子-推定量です。つまり、時間nまでの観測を前提として、時間の状態を予測することができますn-1。次に、時間に観測値を受け取った後、時間nまでのすべての時間の推定(平滑化と呼ばれることもあります)を行うことができますn。推定の部分は、いわゆるイノベーションと現在のカルマンゲインによって行われます。

カルマンフィルターは、「状態空間」の概念を介して機能します。つまり、状態には、オブジェクトに関する必要なすべての情報が格納されます。異なる観測ベクトルは、システムについて観測できるものです。たとえば、一定の加速度モデルでは、状態には3つの位置値と3つの速度値(それぞれx、y、z)のみが含まれていると想定します。状態空間と状態遷移モデル(観測がない場合に状態がどのように変化するかを予測する方法)を決定するのは、フィルターの仕事の設計者です。

状態遷移行列を選択する必要があります。観測値の誤差の共分散行列、状態遷移行列の誤差の共分散行列(つまり、状態遷移がどれだけ優れているか)についてある程度の知識が必要です。モデルは)、および初期状態推定の共分散行列(これも選択する必要があります)。また、状態ベクトルと観測ベクトルの間の関係を選択する必要があります。

カルマンフィルターは、ガウス観測ノイズ、ガウス過程ノイズ、およびその他のいくつかの標準的なものを想定した場合の最尤最適線形推定量です。

于 2012-06-02T14:58:46.530 に答える
0

Kalman Filterループ内の5〜6行です。誰かの実装は必要ありません。

必要なのは、車の軌道を記述する線形システムモデルです。システム行列A,B,C(またはF,G,H)がある場合は、実際に完了です。

Kalman Filter一般的なBayesianフィルタリングアルゴリズムです。これは、線形ガウスの場合に機能します。

于 2012-06-02T17:22:56.807 に答える
0

AI、CS373のudacity.comコースをチェックしてください。そこで彼らはカルマンフィルターを非常にうまく説明しました。

于 2013-07-04T10:30:37.063 に答える
0

Computer VisionSystemToolboxにvision.KalmanFilterオブジェクトが追加されました。これは、オブジェクトの追跡に使用する方法の例です。例は2Dですが、3Dに簡単に一般化できます。

于 2013-11-17T04:28:37.560 に答える
0

(線形)カルマンフィルターは、おそらくあなたの場合に最適なオプションです(最初のアプリケーションの1つは、実際には、月に適切に当たるようにアポロ宇宙船の位置を追跡することでした!)。したがって、まさにこの問題に関するチュートリアルがたくさんあります。たとえば、このかわいい小さなロボットの例を参照してください。実際には、5行のコードです(永続変数を使用する必要があることに注意してください)。共分散行列(多くの場合、 PRQ)の調整は、知識に基づいた推測です。Pを対角行列Pとして初期化し、状態ベクトルxまたは測定値y= eye(length(x))*1e3とほぼ同じ順序でノイズ行列RQを選択します。それぞれ。

ノイズ行列のファジーが気に入らない場合は、再帰的近似を使用できます。RLS(recursive-least-squares)は標準の識別方法ですが、カルマンフィルターとして統計を使用しません。つまり、傾向があります。測定のノイズに。それはさらに少ないコード行で構成されていますが、永続変数も使用しています。

function [x_est] = RLS(y,x0,mk,fnc)
% (non)linear recursive-least-square
%
% y     measurements
% x0    initial value of the to-be-identified state vector
% mk    measurement matrix, so that y = mk'*x
% fnc   function handle, if the system is non-linear and when mk is the
%       linearized version of this function

persistent  x P 
if isempty(x)

    x = x0;
    P = eye(length(x)) * 1e3;
end


% adaption factor (usually [0.9 1))
AdaptFct = .995;


%% nonlinear prediction
if nargin > 4
    y_sim = fnc(x);
else
    y_sim = mk*x;
end
e = y_sim - y;


%% RLS
% Kalman gain
G = P*mk / (AdaptFct + mk'*P*mk);

% Update
% state
x = x + G*e;
% covarianve matrix
I = eye(length(P));
P_new = (I - G*mk')*P;
P = P_new/AdaptFct;

%% output
x_est = x;

end

すべてを再起動する場合は、関数の永続変数をクリアする必要があることに注意してください。clear RLS

于 2019-12-03T11:39:27.993 に答える