理論から実践的に - どのように理解するには、そのスペースカルマンフィルタアルゴリズムカルマンフィルタにチャンE?


オリジナルリンクします。https://zhuanlan.zhihu.com/p/77327349

直感的な理解

**どのような最初のカルマン・フィルタの問題を解決するには?**私は例えば軍事ミサイル攻撃の敵のターゲットを、起動するための固定位置持つ(常にどのようなスポーツカーの話、技術の合計ポイントの感情のうちに、低すぎるこれらの温度計)。ミサイルはレーダー測定で対象に毎秒距離を開く必要があります。エラーレーダーがあるため、必要性に関する情報は、現在時刻からターゲットまでの距離をより正確に決意するなど、その時間位置、速度、統合しますこれは、問題を解決するために、カルマン・フィルタの必要です

カルマン・フィルタの直感的な理解から、この問題を解決する方法ですか?

まず、既知のミサイル「ターゲットミサイルからの距離のこの第二の現在のレーダー測定(我々はそれを呼び出すのように直接ターゲットミサイル7メートルからの距離を測定するレーダーとして、観測)、」「ミサイル離れた目標距離からの時間」と「彼らの現在のミサイル時間の速さ、「3つのデータ。「時間内にターゲットミサイルからの距離」と「現在の速度ミサイル自身の時間」我々は(我々はそれからミサイルのターゲットを呼び出すまでの距離を推定することができるによる推定値)。例えば:10メートルからゴールに1秒、速度は4メートル/秒であり、ここでターゲットからの距離にこの第二の推定値は6Mです速度データは、センサ内部から得ることができるエンジンから読み取ることができます。(「:制御コマンドに従って予測ロボットの位置移動ロボットモデル」スピードに応じて、記事を見ることができるモデルと観測と携帯フィルタリング・アルゴリズムとの間のリンクを理解したい、モデリングと呼ばれるモバイルコンピューティングからミサイルを推定)

質問があるので、今、両方の観測が7Mターゲットミサイルからの距離、6メートルの推定値があります。私は最後何を信じていますか?単にケースの観測が敵のレーダーは、それを妨害していることを信じますか?私は、時間や速度の推定値で距離の簡単な推定値の場合に行うことを許可されていないことを信じますか?そこで、我々は、観測と推定値の精度に基づいて、目標のミサイルからの距離の最終推定値を取得したいです。低い割合で低い精度の高い割合の最終結果に高精度。7メートルであれば、推定6メートルの速度に応じて49%のレーダー測定精度、その1%の精度、最終的な結果は、距離推定することである
ここに画像を挿入説明(我々は次のように持って、これらのデータの直感的な理解が、計算の方法を説明する端部)

カルマン・フィルタは、どのように行うには?

私たちは、最初にそれを行う方法の直感的な理解に見直さ。

一つの第二のミサイルのミサイルの速度と位置は、時間のミサイル概算の現在位置を推定しました。
我々は両方のデータの信頼性に応じて重み付け線形かつ正確な位置推定ミサイルにミサイルの位置の概算を計算ミサイルレーダ測定値の測定位置。
また、以前のミサイルとレーダー測定の位置で言及誤っています。だから、カルマンは、データの信頼性を測定するための確率を使用したいです。

たとえば:レーダデータの測定は、それだけの数ではありません。それ尺度はその位置にミサイル7メートル0.8を検出する確率は、7.2メートル0.1で確率その位置があります。その位置6.9メートル確率0.1。このデータは、確率分布と呼ばれています。値の数で構成見えるどれだけのデータだけでなく、それぞれの確率の確率分布は、確率分布と呼ばれていることを意味しています。

カルマンは、速度ミサイル、ミサイルの位置、通常(すなわち、通常の高校であるために)分散されるレーダ測距測定値を信じます。これはどういう意味ですか?例えば、以下のチャートは、それがその位置で最も高い確率の縦10メートル(横軸)で最大となるようにグラフから、時間的にミサイルの位置の確率分布についてです。これは、比較的少ない他の場所の確率です。
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明

カルマンフィルタPythonコードの練習

この方法は、水平運動ミサイルの量を知られている、ミサイル公知の標準的な毎時間速度DV用の偏差、速度計測器も知られている、v_stdでGPS及びGPS付きミサイル位置position_noise分散があるたびに測定predict_var。(標準偏差は分散の正方形であることに注意してくださいは、驚かないでください)
私たちは、この情報に基づいて、2つの統合センサーカルマン・フィルタの後に位置情報position_predictを取得する必要があります
ここに画像を挿入説明

#coding=utf-8

import numpy as np
#-----------------------------生成无误差的GPS坐标点------------------------------------------
# 模拟数据
t = np.linspace(1,100,100)#在1-100之间,按照同样的间隔生成100个数据
a = 0.5 #加速度
position = (a * t**2)/2 #根据加速度获取位置,模拟GPS获取的位置
#给位置添加一个具有正态分布的误差
# random.normal 正态分布 均值,标准差。样本数(t.shape[0]获取和第一维度数一样的样本数)
#---------------------------生成带高斯分布误差的GPS测量值误差--------------------------
position_noise = position+np.random.normal(0,120,size=(t.shape[0]))
import matplotlib.pyplot as plt
plt.plot(t,position,label='truth position')
plt.plot(t,position_noise,label='only use measured position')

#----------------------------------------设定初始值-----------------------------------------------------------------
# 初始的估计导弹的位置就直接用GPS测量的位置
predicts = [position_noise[0]]
position_predict = predicts[0]
#------------------------------------------设定方差-------------------------------------------------------------------
predict_var = 0 #预测方差
odo_var = 120**2 #这是我们自己设定的位置测量仪器的方差,越大则测量值占比越低,位置误差方差
v_std = 50 # 速度标准差
for i in range(1,t.shape[0]):#循环从1开始到样本数前一个结束
  
    dv =  (position[i]-position[i-1]) + np.random.normal(0,50) # 模拟从IMU读取出的速度
    #------------------预测--------------------
    position_predict = position_predict + dv # 利用上个时刻的位置和速度预测当前位置
    predict_var += v_std**2 # 预测速度方差
    # ---------------更新------------------------
    #根据权重更新位置预测
    position_predict = position_predict*odo_var/(predict_var + odo_var)+position_noise[i]*predict_var/(predict_var + odo_var)
    predict_var = (predict_var * odo_var)/(predict_var + odo_var)**2#更新速度方差
    predicts.append(position_predict)

    
plt.plot(t,predicts,label='kalman filtered position')

plt.legend()
plt.show()
公開された34元の記事 ウォンの賞賛2 ビュー2298

おすすめ

転載: blog.csdn.net/weixin_44088559/article/details/105414291