序文
個人的には AI 教育に 10 年近く携わっており、途中で BIT の学外講師、Microsoft MVP、CSDN テクニカル エキスパートなどの称号を獲得しており、このブログの PV 数も 1,700 万を超えており、 AIサークルで非常に高い評価を得ています。2015 年にチームでビジネスを開始し、AI 職業教育プラットフォーム「July Online」を設立してから 7 年近くになりますが、ここ 6 ~ 7 年間、AI 職業教育で良い仕事をしてきました。同業他社がやったことのないことをやっていきます、同業他社が及ばない深さに到達しました(ここでの同業他社とは、AI社会研修機関のみを指します)。
6 年以上にわたり、成人向け AI 職業教育に焦点を当てながら、多くの業界の刺激に直面してきましたが、私は常に AI に焦点を当てることを主張してきました。しかし、その過程で、AI が産業界に深く組み込まれて初めて、AI が真の価値を発揮できることを実感するようになりました。自動車、スマートカー、AI は自動運転を強力に後押しするため、1 か月前に当社のプラットフォームの位置付けを「AI 職業教育プラットフォーム」から「AI と自動車の職業教育プラットフォーム」に変更しました (後に最終的に:Smart Times Online職業教育プラットフォーム)。
当初200名以上だった自動車の専門家・講師を1ヶ月で50名(年末時点で100名)編成し、従来の自動車会社の変革の緊急性を皆で感じました。知能。たまたま、自動車会社のお客様の現場で、知覚融合の古典的アルゴリズムであるカルマンフィルター(Kalman Filter)についてお話ししたので、この新しいブログを書きました。このアルゴリズムの素晴らしさは? たとえば、誰かがアポロが月面着陸に使用したと主張しました:)
カルマン フィルター処理については、古典的な記事「カルマン フィルターの仕組みを写真で見る」がインターネット上にあり、多くの友人がそれを翻訳しています。何度か読んだことがありますが、カルマン フィルターをより一般的な方法で説明することは可能だと思います.結局のところ、比較的複雑なアルゴリズムをできるだけ簡単に説明できるので、初心者の方がよりよく、より早く理解できるようになります.私は今、ブログを更新し続ける唯一の動機です。
さらに、インテリジェント ネットワーク接続や自動運転について聞いたことがない従来型の自動車関係者や友人の世話をするために、この記事から何かを得ることができるので、インテリジェント ネットワーク接続と無人運転から始めて、カルマン フィルタリング アルゴリズムについて説明し、最後に関連するカルマン フィルターの拡張アルゴリズムについて説明します。プロセスは、Sheng、Xiao、Ye などの関連する 7 月の講師によって修正されました。読者の批判と修正も歓迎します。
第 1 部 インテリジェント ネットワーキングと自動運転
1.1 自動運転・無人運転とは
一般的にインテリジェントネットワークには自動運転とカーネットワークがあり、高度な自動運転は無人運転とも呼ばれます。
現在、すべての自動車会社が自動運転に投資しています (数百億ドルの費用がかかる可能性があります). 自動運転がなければ、テーブルで使用できる車にはならないようです. 結局、スマート 3 電気 (バッテリー) 、モーター、電子制御)、スマート コックピットと自動運転は、未来の自動車の開発動向を代表するものであり、自動運転なくして未来はないと言われています。自動運転の敷居は比較的高く、技術の種類も多いため、市場に出回っている類似の本や講座は多くありません(例えば、「初の自動運転技術本」も発売されています)。 2019 年 7 月オンラインによる「無人運転の実戦」、その後、ターゲット検出、ターゲット追跡、スラム、知覚融合などに関する小さなコース)。
無人ソフトウェア システムは、一般的に 6 つの主要なモジュールとして定義されます (もちろん、いくつかのモジュールはさまざまなシナリオで組み合わされます)。
- 高精度マップ(つまり、高次元マップ、ここでの高精度マップは、日常生活のナビゲーションマップとは異なりますが、より高次元の情報を持っています)、マップは知覚、位置決め、予測、および計画中
- 衛星航法 (米国の GPS、ロシアの「GLONASS」、欧州の「ガリレオ」、中国の「北斗」など)、慣性航法 (IMU)、車輪速度計、視覚および LiDAR 測位 (レーザー レーダーなど) を含むがこれらに限定されない測位壁にレーザーが当たって反射する時間から壁との距離を判断し、その位置を判断して測位を実現します)
- 周囲のオブジェクトの状態 (位置、速度、向きなど) を推定する知覚は、一般に次の 2 つの段階に分けられます。ミリ波ポイントクラウド)、ターゲット追跡(一般的に使用される方法には、ベイジアンフィルタリング/カルマンフィルタリング、および歩行者再識別人物リードなどの深層学習関連の方法があります)、後者の追跡は前者の検出結果に基づいています
- 行動予測、周囲の歩行者や車両の将来の軌跡(位置、速度)を予測
- 障害物を自律的に回避する方法や目的地に到達する方法を含む意思決定計画 ( A*、ダイクストラ、その他のアルゴリズムなど)
- アクチュエーター(加速、ブレーキ、ハンドル)を制御して、計画された加速、減速、旋回などの動作を完了するように制御します。
無人運転における状態推定問題としては、1) ポジショニング、自身の状態を推定する、2) 追跡、周囲の物体の状態を推定する (位置や速度などの経時変化など)、3) マッピング、周囲を推定する、の 4 つの主要な状態推定問題があります。静的な環境状態; 4) センサー間の時空間関係を推定するキャリブレーション。後述する SLAM (Simultaneous Positioning and Composition Technology) は、同時測位とマッピングの問題を解決するものです。
より具体的には、7 月にオンラインで開催された「無人運転実戦」の講師である Sheng 氏が、自動運転 L4 技術に関する短い記事を書きました. 以下の引用はその内容の一部です:
無人運転には 4 つの重要な問題を解決する必要があります。私の周りには何がありますか 次は何ですか?私は何をすべきか?
ここはどこ?ポジショニング、高精度マップ
測位は、高精度マップと呼ばれる技術に依存する必要があります。高精度マップは、車線、横断歩道、看板など、無人車両が移動するすべての静的環境を記述します。これらの静的な情報は、交通信号の重要な情報を提供することができます, また、それ自体の位置を調整するための測位スキームのアンカーとしても使用されます. 例えば, 左の看板からの距離がカメラを通して2.5mである場合,看板は地図上で分かります車両の座標は自車両の座標も分かります。同時に、GPS/IMU などのグローバル デバイスに依存して位置を特定しますが、これは現在のスマートフォンの GPS 精度要件よりもはるかに高く、ディファレンシャル フュージョン技術によりセンチメートル レベルの精度を達成できます。 .
私の周りには何がありますか 視覚認識、ライダーなど。
測位後、無人車両の認識システムは、センサーと AI アルゴリズムを使用して、周囲の障害物の位置、サイズ、ステータス、およびカテゴリを識別します。現在、主流の L4 レベル センサーには、GPS/IMU、LIDAR、カメラ、レーダーなどがあります。後者の 3 つは、周囲の障害物を認識するために使用される主なセンサーであり、さまざまな環境でさまざまな利点があります。この情報は、人間の運転者が周囲の動的環境オブジェクトを見て識別するようなもので、車両の左右の状態に注意しながら、車両の背後にある物体を正確に識別するなどです。状態であればライダーで正確に識別できます。次は何ですか?行動予測と速度予測
無人車両は、周囲の動的オブジェクトを認識した後、行動予測と速度予測を含め、これらのオブジェクトの方向を可能な限り予測できる必要があります。たとえば、この車は左折するのか直進するのか、その車は赤信号を無視するのか、交通の流れに合流するときの速度はどれくらいかなどです。これらの問題は、無人車両がどのように追跡し、衝突の危険を回避するかを決定します。私は何をすべきか?意思決定、計画、および制御の
最終ステップは、上記の情報に基づいて無人車両に最適な道路を選択することです.人間の脳と同様に、無人車両の最終的な行動を担当し、最も適切な方法を選択します.目的地に到着します。これには、運転感覚、安全性、速度などの要素を考慮し、最適化アルゴリズム、検索アルゴリズム、モンテカルロ木サンプリングなどのさまざまなアルゴリズムを使用して、将来の運転行動を取得する必要があります。
1.2 インテリジェントネットワーク接続に関する業務
上記のインテリジェント ネットワーク化された車両の定義に基づいて、多くの技術が関与しており、各技術がポストに対応していることがわかります。
ビジュアル SLAM アルゴリズム エンジニアなど、これらのポジションのいくつかを詳細に分析してみましょう。
では、スラムとは?従来の画像処理は基本的に 2 次元画像に基づいており、人間の目は 2 つの眼の視差 (両眼立体視) を通じて周囲の 3 次元空間を認識していることがわかります。3D ビジョン センサーの急速な発展に伴い、3D ビジョンのコア テクノロジである SLAM (正式名称 Simultaneous Localization And Mapping、Simultaneous Localization and Mapping と訳される) テクノロジは、基本的に、移動する被写体自体と周囲の環境の不確実性の推定です。 1.地図が不明なので地図(周辺環境)の推定が必要 2.場所も不明なので場所の推定が必要 2つの問題を解く。よく使われる方法としてはカメラがあり、ライダーの検出距離や周辺環境の画像などもさまざまです。
Visual SLAMのセンサーはカメラです(カメラを介してポジショニングとマップの問題を同時に解決します)
- カメラが深度カメラを使用している場合、障害物の距離を直接取得し、点群データを生成できます
- もちろん、単眼カメラ、双眼カメラ、魚眼カメラを使用したビジュアル SLAM もありますが、これらのカメラは、周囲の障害物との距離を間接的に取得するために別の方法を使用する必要があります。
一部の学生は、visual SLAM をゼロから学ぶにはどのような技術が必要かという質問をするかもしれません (もちろん、以下の技術はすべてこのスラム クラスで習得できます)。
- よく使われているOSもLinuxで、ITのバックグラウンド開発やAIアルゴリズムの研究開発を行っているのと同じで、Linuxを理解していなければ何もできません。 、 就職活動中や会社生活の中で、それを補う時間を見つけなければなりません。
- プログラミング言語: C、C++、今日の AI 時代では、Python はデータ サイエンスの分野で最初の言語と言えます。Python を通じて AI を始めるのは確かに良い選択ですが、始めた後は、 IT、AI、自動車業界で働くには、Python を 1 つだけ知っているだけでは十分ではないかもしれません. 2 番目の言語は C/C++ (C++ 入門書やC++ オブジェクト モデルが適しています)、または Java (ここにも Java とデータ構造クラスがあります)
- 線形代数の基礎 (行列演算)、3 次元空間での剛体運動、SLAM の空間点とさまざまな座標系、回転の表現 (四元数、回転行列、回転ベクトル、ユークリッドのプル角)、リー群とリー代数、カメラ イメージングと一般的な視覚センサー、最小二乗法
- SLAMコア技術のポイント:ビジュアルオドメトリ、マルチビュージオメトリ、ビジュアルオドメトリにおける姿勢推定法、非線形最適化(カルマンフィルタなど)、ループ検出と再構成 ORB-SLAM、SVO、DSO、MonoSLAMなどの一般的に使用されるvSLAMアルゴリズム、 VINS、RGB-Dカメラなど
- 拡張カルマン フィルター、無香料カルマン フィルター、エラー状態カルマン フィルターなど、カルマン フィルター アルゴリズムの関連アルゴリズムで、英語の略語は EKF、UKF、ESKF などです。
- ROS ロボット オペレーティング システム。
上記の 6 つのポイントについて、もう一度2 つのポイントを言及する必要があります。私はそうは思いませんが、全文を読むと間違いなくそう思うでしょう);ポイント4については、「RGB-Dカメラでの直接法適用」の模式図を以下に示します。
もう 1 つの例は、視覚認識アルゴリズム エンジニアです。
- 知覚アルゴリズムの開発とシステムの実装、視覚ベースの障害物検出、追跡、行動予測など。
- 知覚視覚幾何学計算の 3D 再構成、ターゲットの検出と追跡、画像セグメンテーション、画像認識などのアルゴリズムの研究と開発。
最後に、もう 1 つの例は、センサー フュージョン アルゴリズムのシニア エンジニアです. このポジションの一般的な職務は、カメラ、レーザー レーダー、ミリ波などのセンサー情報を融合することにより、周囲の動的および静的環境の正確な記述と予測を実現することです。レーダー。
- 知覚情報の前処理、ターゲットの作成、関連付け、状態の推定、マージと削除などを含む、マルチセンサーのマルチターゲット追跡と意図予測。
- 高性能の 3D 知覚融合システムを構築します。
- ミリ波レーダー疎点群に基づくターゲット検出の設計と開発;
- グリッド マップ\静的環境はリアルタイムで構築されます。
仕事の要求に応えるには、一般的に次のようなポイントがあります。
- Linux 環境での C++\Python 開発に精通している確かなプログラミング能力。一般的なデータ構造と STL の使用法を理解しています。
- カルマン フィルタリングなどのベイジアン フィルタリング アルゴリズムの深い理解、数学的モデリングと状態推定の熟達、および一般的に使用されるデータ関連付けアルゴリズムと距離計算方法の深い理解。
- カメラ、ライダー、ミリ波レーダー、その他のセンサーに精通しており、コンピューター ビジョンとそのアプリケーションに精通している場合は、SLAM\Deep Learning の基礎が優れています。
カルマン フィルター処理は知覚融合で広く使用されており、さまざまなセンサーによって取得されたデータをさらに包括的に処理して、より良い推定状態を実現できることがわかります。
カルマン フィルター アルゴリズムの 2 番目の部分
2.1 カルマンフィルタリングとは
カルマンフィルターとは何かについて、ウィキペディアに以下の説明があります(もちろん、簡単にするために、説明の一部を変更しています)。
カルマン フィルターは、一連の不完全でノイズの多い測定値から動的システムの状態を推定できる高効率の再帰フィルター (自己回帰フィルター) です。カルマン フィルター処理は、異なる時点での各測定値に基づいて、各時点の結合分布を考慮し、未知の変数の推定値を生成するため、単一の測定値のみに基づく推定方法よりも正確になります。カルマン フィルタリングの名前は、主要な貢献者の 1 人である Rudolf Kalman に由来します。
カルマン フィルター処理のアルゴリズム プログラムには、推定と更新の 2 つのステップがあります。
- 推定ステップでは、カルマン フィルターが現在の状態に関する推定値を生成します。これには不確実性も含まれます。
- 更新ステップでは、次の測定 (ランダム ノイズを含むある程度の誤差を含む必要があります) が観測される限り、推定値は加重平均によって修正され、より確実性の高い測定の重みが高くなります。
このアルゴリズムは反復的で、リアルタイム制御システムで実行できます。現在の入力測定値、過去の計算値、およびその不確実性マトリックスのみが必要であり、その他の過去の情報は必要ありません。
カルマン フィルターの後、非線形システムで動作する拡張カルマン フィルターやアンセンテッド カルマン フィルター (アンセンテッド カルマン フィルター) など、拡張または一般化されたカルマン フィルターがいくつか開発されました。基礎となるモデルは隠れマルコフ モデルに似ていますが、潜在変数の状態空間が連続であり、すべての潜在変数と観測可能な変数が正規分布している点が異なります。
ウィキペディアの定義は常に正確で厳密ですが、唯一の問題は、それが十分に普及しておらず、理解しにくいことです. どうすればよりよく理解できますか? 繭を剥ぎ取るだけの簡単なものです. アルゴリズムは比較的複雑です. 一般的に言えば, 背景知識がたくさんあるからです. 1つずつ分析してみましょう. 切り取った方が理解しやすいでしょう.
まず、正規分布(別名ガウス分布、1 つの意味)の定義を確認します。
数学的な期待値と分散については、下の図に示されています
次に、例を通してカルマン フィルター処理の考え方を理解します。
1 車があり、初期状態での車の位置が次の図のようにわかっているとします (車の位置は正規分布に従います。たとえば、正規分布の平均に近い場合があります)。 )、横軸は車の前方座標です。
一部の人々は、なぜ特定の点ではなく正規分布なのかと尋ねるかもしれません。ここで提供するのは現時点での推定状態であるため、マップ上のオブジェクトについては、特定の位置情報を正確に取得することはできません。GPS を使用して位置を特定したとしても、常に特定のエラーが発生します。そのため、システムの入力 (車の速度など) とシステムの出力 (GPS による位置情報) によってのみ、現在の状態 (実際の位置情報) を推定することができます。
2 次に、最初の時点での車の位置に応じて、次の時間ステップで可能な位置分布を予測できます。下の図からわかるように、その正規分布関数は前の瞬間よりも大幅に広くなっています。これは、車の移動中に道路のくぼみ、風、車輪のスリップなどのランダムな要因の干渉に必然的に遭遇するため、推定位置値の不確実性が大きくなり、実際の移動距離が車がモデルと違う 予測距離が違う
3 これまでのところ、上記のプロセスは当社の数理モデルによって推定されていますが、実際には、センサー測定によっても同じデータが得られ、測定値は正規分布していることがよくあります (つまり、周波数未知の値は明確な値です)。 .ベイジアンでは、未知の値は確率分布です.この時点で眉をひそめないでください.すぐに理解が深まります)、これはモデルの予測値とは異なります.分散はノイズを含む測定の不確かさを表します。
4こんな時どうすればいい?多分あなたはぼんやりするでしょう:数学モデルの予測値とセンサーの測定値を組み合わせて、車の最良の位置推定値を取得します、それをどのように組み合わせるのですか?加重平均して、もう一度繰り返します!具体的には、この例では、図の灰色の正規分布曲線に示されているように、2 つの確率密度関数を乗算して、現時点での最良の状態推定を取得します。これは、カルマン フィルター処理の核となる考え方です。したがって、カルマンフィルタリングは、センサー フュージョン アルゴリズムとも呼ばれます。
次に、前回の時刻情報を変更する、例えば、前の瞬間の時刻 k-1 における自動車の位置の推定値を知っており、数理モデル予測によって時刻 k における位置の推定値を取得し、次に、それを車のセンサーと比較します。測定値と組み合わせて、現在の k 瞬間における車の最適な推定位置が取得されます。
問題は、ここでは初期状態を与えていないので、時間 k-1 で推定された位置はどのようにして得られるのかということです。そうです、時刻 k-2 の状態量から推定しました。
2.2 カルマン フィルター処理の完全なプロセスと数学的導出
前のセクションの例を通じて、カルマン フィルター処理の核となる考え方を理解した後、別の例を使用して、その完全なプロセスと数学的モデリングの導出の詳細と原理について説明します。
2.2.1 ロボットの位置と速度のモデル化
森の中を自律的に移動できる小さなロボットを開発するとします。
一連の状態変数を通じて、位置や速度を含むロボットの状態を記述できます。
次に、ナビゲートするためにロボットがどこにいるかを知る必要があります。場所はどうやって決める?
まず、ロボットに GPS センサーを取り付けましたが、精度は 10m しかありません。ロボットがいる森には谷や崖が多いことを考えると、ロボットが数歩離れた場所でも位置を誤ると、ピットに落ちてしまう可能性があるため、この正確な GPS だけを頼りに位置を特定することは、十分でない。
位置を特定する方法をもっと増やす必要があります。たとえば、ロボットの動きに関する情報、つまり車輪を駆動するモーター コマンドを取得できます。外部干渉がなく、一方向にしか移動しない場合、次の瞬間の位置は、前の瞬間の位置と比較してその方向に一定の距離だけ移動します。しかし、外部からの干渉がある場合はどうなるでしょうか? たとえば、風に逆らって運転したり、車輪を滑らせたり、でこぼこした地形を転がったりします...したがって、車輪が回転する距離は、ロボットの移動距離を完全に表していないため、回転によってロボットの位置を予測することは困難です。車輪の非常に正確。
したがって、同等
- GPS センサーはロボットの状態に関する情報を教えてくれますが、GPS は正確ではない場合があります。
- また、ロボットの移動距離は車輪の回転で予測できますが、ある程度の誤差(外力による乱れ)もあります。
悪いところに行って考え方を変える:「GPS+車輪回転予測」の情報を組み合わせたら?単一の情報源に頼るよりも正確な結果を得ることができますか? 明らかに、これはカルマン フィルター処理が解決しようとしている問題です。
強調するために、序文に記載されている記事「カルマン フィルターの仕組みを写真で見る」では、カルマン フィルター処理のアルゴリズム フローが生々しく説明されています。記事の読みやすさを向上させるために、原文の写真や数式を元に、原文やインターネット上の他の記事にない多くの説明と説明。
上記のシステムでは、位置と速度を含むシステムの状態を確立します。
位置と速度の正確な値はわかりませんが、正確な値が含まれる可能性のある間隔をリストすることはできます。この間隔内では、いくつかの値の組み合わせが他のものよりも可能性が高くなります。
カルマン フィルター処理では、すべての変数 (この場合は位置と速度) がランダムで正規分布していると仮定します。各変数には、ランダム分布の中心値 (最も可能性の高い値を表す) を表す平均u と、不確実性の尺度として使用される分散があります 。
上の図では、位置と速度は無相関です。つまり、一方の変数から他方の変数を推測することはできません。
実際、位置と速度は関連しています。たとえば、前の状態の位置の値がわかっている場合、次の状態の位置の値を予測する必要があります。
- ロボットの速度が速い場合、ロボットは一定時間内に遠くに移動する可能性があります。
- 逆に、速度が非常に遅い場合、ロボットは同時に非常に近くまで移動します。
この関係は、システムの状態を追跡する際に重要です。これにより、より多くの情報が得られるからです。1 つの測定値から、別の測定値がどのように見えるかがわかります。
この相関関係を捉えるために、共分散行列を使用できます。つまり、行列の各要素はth 変数と th変数の間の関係を表します(共分散行列は対称です。つまり、添字と和を交換しても効果はありません)。
共分散行列は通常 Σ で表され、その要素は で表される ため、
2.2.2 マトリックスを使用してシステム状態をさらに説明する
状態に関する上記の情報を正規分布としてモデル化するには、時間 k での 2 つの情報が必要です: 最良の予測値 (平均、つまりu ) とその共分散行列です。
(ここでは位置と速度のみを記録しましたが、問題に関連する限り、任意のデータ変数をシステム状態に入れることができます)
次に、k-1 時間の状態から次の状態 (k 時間) を予測します。しかし、状態の正確な値はわかりません。どうすればよいでしょうか? 予測関数は、時間 k-1 で可能なすべての値の範囲を予測し、時間 k での新しい値の分布範囲を取得します。
この予測プロセスは、状態遷移行列によって表すことができます。これは、時間 k-1 で可能なすべての状態値を新しい範囲に転送します (元の予測から各ポイントを取得し、新しい予測位置に移動します)。この新しいrange は、k-1 時間での推定値の範囲が正確である場合、システムの新しい状態値の可能な範囲を表します。
一定速度の状態 S (距離) = v (速度) xt (時間) を考慮して、次の式を使用して、「次の状態を予測する」プロセスを記述します ( を忘れないでください ) :
次に、マトリックスに編成されます。
次の状態を単純に予測できる予測行列ができましたが、共分散行列をどのように更新すればよいのでしょうか?
各点で行列 A 変換を実行すると、その共分散行列 Σ はどうなるか想像してみてください。
(4) と (3) を組み合わせる:
2.2.3 不確実な外部要因の推定: ベイジアン理論
システム状態の変化は最後のシステム状態に依存するだけでなく、外力もシステム状態の変化に影響を与える可能性があるため、これまでのところ、すべての影響要因を考慮していません。外力には2種類ある
- 1つ目は人間の指示です。たとえば、電車の動きを追跡しているときに、電車の運転手がアクセルを踏んで電車を加速させることがあります。
- 第 2 は、2.1 節で述べた甌穴、風、車輪のスリップなど、人間が制御できないもので、それらによってもたらされる変化は未知で予測が難しく、具体的な値を厳密に決定することはできません。さて、おなじみのベイジアン理論の味はありますか?
ベイジアン理論について言及する必要があります (特に、以前に書いたベイジアンノートを引用します。詳細については、参考文献 5 を参照してください)。
2つの例を見てみましょう
例えば、白玉と黒玉が数個入った袋があり、その袋から白玉が出る確率 θ はいくらか。"
白玉を出す確率は1/2 で、白玉を出すか出さないか、つまり θ の値は 1 つしかありません。そして何回撮っても、白玉が出る確率θは常に1/2、つまり観測結果Xの変化で変化しません。
ベイジアン理論では、白球が得られる確率は偶然の要素を含んでいるため、不確かな値であるとされています。
別の例として、友人が起業した場合、起業には 2 つの結果、つまり成功または失敗があることを明確に知っていますが、それでも彼が起業に成功する可能性を推定せずにはいられません。 ? あなたが彼の性格をよく理解していて、彼が方法論、明確な思考、忍耐力を持ち、周囲の人々を団結させることができるなら、彼の起業家としての成功の確率は 80% から 90% の範囲にあるかもしれないと思わず推測するでしょう. この本来の「白か黒、0か1」とは異なる考え方がベイジアンの考え方です。
言い換えると
- 頻度論者は、推論する必要があるパラメーター θ を固定された未知の定数、つまり、確率は不明ですが、少なくとも明確な値であると見なします. 同時に、サンプル X はランダムであるため、頻度論者は次のことに焦点を当てます.サンプル空間の研究. の確率計算はすべてサンプル X の分布に対するものです。
- ベイジアンの考え方はまったく逆で、パラメータは確率変数であり、サンプル X は固定されていると考えられています.サンプルが固定されているため、パラメータの分布に焦点を当てています.
最初の外力として、このロボットの例では、ナビゲーション ソフトウェアが車輪の始動またはブレーキのコマンドを発行する場合があります。これは簡単に解決でき、この情報を vector で記述し、それを予測方程式に修正として追加します。
速度 - 加速度の式と加速度 - 変位の式に従って、発行されたコマンドから予想される加速度 a を取得すると、上記の運動方程式は次のように変更できます。
再びマトリックスに編成します。
これはコントロール マトリックスと呼ばれ、コントロール ベクトルと呼ばれます (外部ダイナミクスの影響を受けるシステムがない場合、この項目は無視できます)。
2つ目の外力は、風の影響を受けたり、車輪が滑ったり、地面に穴が開いたり、異物が突き出たりして、追跡対象の速度が制御不能に変化するなど、比較的厄介です。
どうやってするの?「世界」のこれらの不確実性は、予測ステップに不確実性項を追加して、均一にモデル化できます。
元の状態の各点に相当するものは、特定の点ではなく、範囲に遷移すると予測できます。数式に変換すると、の各点が共分散に適合するガウス分布に移動する(つまり、青色のガウス分布が紫色のガウス分布の位置に移動する)、またはこれらの不確実な外部要因を次のガウス ノイズ記述することができます。予測されるセンサー ノイズ (imu やホイール スピード メーターなど) に応じた の 共分散:
外部要因の共分散を追加した後、拡張された紫色のガウス分布は、外部要因のない元の小規模な紫色のガウス分布と同じ平均値を持ちますが、共分散は異なります
の単純な重ね合わせの場合、拡張された共分散を取得できます。これにより、予測ステップの完全な式が得られます。
上記(7)の2つの式を説明してください
- 新しい最良の見積もりは、元の最良の見積もりに基づいて既知の外部の影響を修正することによって得られる予測値です。
- 新しい不確実性は、元の不確実性と、不確実な外部要因の影響から得られる予測を組み合わせたものです。
この時点で、とで表される範囲という漠然とした推定範囲があります。私たちのセンサーからのデータと組み合わせるとどうなるでしょうか?
2.2.4 数理モデルに加え、予測値を実測値で補正
実際には、予測結果を示すために複数の方法を使用することがよくあります. 前のセクションでは、数学モデルを確立することによって予測しました. さらに、システムの状態を測定するためにいくつかのセンサーを使用する場合があります.
もちろん、1 つの測定位置と 1 つの測定速度など、複数のセンサーを使用することもできます。各センサーは、システムの状態に関するデータ情報を提供できます (各センサーはシステム変数を検出し、読み取り値を生成します)。
センサー測定の範囲と単位は、システム変数を追跡するために使用する範囲と単位と一致しない可能性があることを考慮して、マトリックスを介してセンサーをモデル化する必要があります。
初めて見た初心者の方は、何の為にあるの?と疑問に思うかもしれません。
上記の 2.1 節から、カルマン フィルター処理の本質は、予測状態量のガウス分布と観測量のガウス分布を融合して新しいガウス分布を生成することであることがわかりました。
そしてすぐに、この新しいガウス分布の平均と分散が、2 つの独立したガウス分布の関連するパラメーターの重み付けであることが次からわかります. この重み付けはカルマンゲインですが、予測された状態量と観測された量は異なる次元.それらを同時にベクトル空間に変換する必要があるため、観測には線形変換行列があり、これは状態ドメインを観測ドメインに変換することと同等です。
この記事の読みやすさを損なうことを避けるために、別の例を挙げてみましょう. たとえば、車速は車輪速度計の速度にマッピングでき、車速と速度の変換関係は次のように表すことができます。
得られたセンサー読み取り値の分布を一般的な形式に変換します。
つまり、当社のセンサーにも独自の精度範囲があり、実際の位置と速度の場合、ガウス ノイズの影響により、センサーの読み取り値は一定の範囲内で変動します。
私たちが観察するすべてのデータは、実際の状態に対応していると見なすことができます。しかし、不確実性があるため、一部の州は他の州よりも可能性が高くなります。
観測センサー(カメラ、ライダーなど)のノイズに応じて決定される、測定値と真の値(つまり、観測センサーのノイズ)との間の不確かさの共分散を平均値 として設定します。
これで、2 つのデータが得られました。1 つは数学モデルによる予測から、もう 1 つはセンサーからの測定値です。
2 つのデータの予測値 (ピンク) と測定値 (緑)をブレンドする必要があります。
実際には、どの状態でも、2 つの可能性があります。
- センサーの読み取り値は、システムの真の状態により近くなっています
- 予測値はシステムの実際の状態により近くなります
それを統合する方法は?確率論では、2 つのイベントが同時に発生すると乗算されるため、2 つのガウスブロブを一緒に乗算してみましょう。
乗算後、重複部分が得られます.この領域は同時に2つのガウスブロックに属し、どちらかの領域のみよりも正確です. この領域の平均値は、信頼できるデータ ソースによって異なります。そのため、手元にあるデータから最適な推定値を取得します。
さて、別のガウス ブロックです。
2 つのガウス分布 (それぞれの平均と共分散行列を一緒に) を乗算すると、独立した平均と共分散行列を持つ新しいガウス分布が得られることがわかります。最後に、残りの問題は解決するのが難しくありません。新しいガウス分布の平均と分散は、古い平均と分散から取得できます。
2.2.5 2 つのガウス スポットの融合: カルマン ゲインが登場
まず、1 次元データから始めて、1 次元ガウス (平均 u、分散) の方程式は次のように定義されます。
2 つのガウス分布を乗算するとどうなるか (前述のように、予測値はピンク、測定値は緑)、下の青い曲線は 2 つのガウス分布の交点を表します。
(9) を (10) に入れ、いくつかの変換を行うと、次のようになります。
ちょっと待ってください、上記の式 11 の導出を段階を追って実行しないと、初心者のあなたは頭がおかしくなり、同じ人を見るとやはり頭がおかしくなるので、展開してみましょう。上記の変換:
その中で A はその他の項目を表すので、
一部を因数分解すると、この部分は k で表されます。
1次元のデータであれば、前回の予測値に対して、2つを単純に重ね合わせて乗算するだけで新たな予測値が得られるのと同じことです。
多次元行列の場合はどうなりますか? (12) と (13) を行列形式で表します。Σ は共分散行列を表し、平均ベクトルを表します。
上記の行列 K はカルマン ゲインです。
これで、システム状態を推定するための 2 つの独立した次元が得られました。
予測値
測定
2 つを (15) に掛けて、重なり合う領域を見つけます。
(14) から、カルマン ゲインは
ここからが重要なステップです。元のテキストは文章ですが、この記事の人気のために、さらに 2 つの文章を説明します。
- (16) の第一式の両辺を(18) の第一式で割る (注定義されているので結合する) と同時に (16) の第二式の左辺と右辺を) は Drop についてであり、(18) の 2 番目の式を得ることができます (この定義とも結合されます)。
- 次に、(17) の両辺を(上記の定義を組み合わせて) で割ると、(19) が得られます。
それだけだと思いますか?この記事を読んでいるあなたに質問があります. なぜ上記が (16) (17) から(18) (19) に変わったのですか. これはカルマンゲインの本質についてです. カルマン ゲインの本質は、実際には (11) でよく使用される中間結果を持つ変数を定義することであり、その物理的な意味は次のとおりです。
- 最終的な重みは、2 つの側面の分散に応じて決定されます。これは、誰もが理解していると思います。
- 観測ドメインを状態ドメインに戻します。つまり、(16) は観測ドメインにあり、 (18) で割ることによって状態ドメインに戻すことができます。すぐに疑問を抱く学生もいるかもしれません。このとき、前の定義を忘れないでください:を掛けて状態領域を観測領域に変換し、さらに観測領域を で割って状態領域に戻します。
2.2.6 プロセス全体のレビュー: センサー ノイズの予測からセンサー ノイズの観測まで
ここまでは、カルマン フィルター処理の元の外国語のプロセスはほぼ同じですが、この記事の読みやすさを高めるために、次のように要約します。
プロセス全体を確認する
- 最初に、システムの共分散行列と状態遷移/予測行列をそれぞれ確立し、センサーの不確実性を外部要因は、共分散が のガウス ノイズとして記述されます。
- 次に、予測された状態量から観測された量への変換行列を設定し、測定値と実際の値 (つまり、観測されたセンサー ノイズ) の間の不確実性の共分散を設定し、読み取り値の平均値を に設定します。
次に、カルマン ゲインの計算式が得られます。
再帰式に戻ります (中心となるアイデアは、測定値を使用して予測値を修正することです)。
したがって持っている
- 特に大きい場合(測定値は比較的信頼性が低く、結局Rはセンサーノイズを表し、Rが大きいほどノイズが大きく、測定値の信頼性が低いことを意味します)、カルマンゲインはゼロになる傾向があります、つまり、より多くの予測を信じてください。
- それが非常に小さい場合(測定値が比較的信頼できる場合)、カルマン ゲインは であり 、再帰式に代入できるため、
カルマンフィルタリングにおけるデータ融合の考え方を再検証しているといえます。
最後に、最良の予測値 が得られ、それを別のラウンドの予測、連続反復 ( とは無関係) に使用し続けることができます。
上記の式はすべて、(7)(18)(19) を実装するだけでよく、これにより任意の線形システムをモデル化できます。
式 7 は未来を予測することに似ており、式 18 と 19 は現在を修正することに似ています. つまり、前者は後者を更新するように予測します。
また、式18のカッコ内の部分がいわゆる「更新量」であり、この更新量の物理的な意味は実測値と期待値との誤差であり、カルマンゲインはこれです。更新量の一部 予測値の重み。
もちろん、カルマン フィルタリングには多くの派生アイデアがあります: 1 重み付けの観点から; 2 ベイジアンの観点から; 3 最小二乗法の観点から. スペースの都合上、この記事では重み付けの角度のみを紹介しますが、後者の 2 つについては、参考文献 14 の「ロボティクスにおける状態推定」などの関連記事を参照してください。関連する記号は異なる場合があります. 相違点 (たとえば、この記事では, ,本では , はそれぞれ,です) がありますが、理解に影響はありません。19.
非線形システムについては、拡張カルマン フィルター (EKF) を使用できます。これは、測定値と予測値の平均値の単純な線形化に相当します。これについては、次のセクションで詳しく説明します。
3 番目の部分は、カルマン フィルターの相関拡張アルゴリズムです。
3.1 拡張カルマン フィルター EKF
3.1.1 EKF とは: KF の非線形拡張
序文の次の文をまだ覚えていますか: 「このアルゴリズムはどれほど素晴らしいですか? たとえば、誰かがアポロがそれを使用して月に着陸したと主張しました:)」 、実際、この声明は真実です.
月に着陸したアメリカの航空宇宙技術者は、アポロ計画のまさに軌道推定問題にカルマン フィルターを使用し、後に開発された拡張カルマン フィルターを導出しました。
- KF を非線形運動および観測モデルに拡張します。
- 非線形性の影響を低減するための線形化方法が提案されています。
- 元の KF を現在よく知られている標準形式に再定式化 (予測 + 更新)
言い換えると
- システムが線形ガウス モデル (正規分布) である場合、カルマン フィルターは最適な推定値を与えることができますが、実際のシステムには、2 乗、三角関係、平方根など、常に異なる程度の非線形性があります。これはシステムの状態遷移関数(状態遷移行列に対応) と等価であり、観測関数(観測変換行列に対応) は非線形関数です。
- 非線形システムの場合、使用できる 1 つの方法は、線形化法、つまり拡張カルマン フィルター EKF によって非線形システムを近似線形システムに変換することです. 核となるアイデアは、非線形関数をテイラー レベルに展開することです。フィルタ値をカウントし、2 次以降の項目を省略して近似線形モデルを取得し、カルマン フィルタを適用して状態推定を完了します。
3.1.2 EFK の例: 車の軌跡の追跡
視覚的な説明のために、別の例を見てみましょう。これは、ミリ波レーダーを介して車の軌跡を追跡することです
まず、次の変数を定義します (写真は Udacity から引用)
次に、観測値 z と予測値 x' の差を y として記録すると仮定すると、
、および を使用して、予測された位置と速度を表すと、次のようになります。
一連の変換によって取得できます (中間変換プロセスについては、リファレンス 20 を参照してください。この記事はスペースに制限されており、中間変換プロセスを 1 つずつリストすることはしません。結局、この部分は焦点ではありません。この記事では、アイデアを理解してください)
上記の式から、方程式の両辺の変換が非線形であり、方程式の両辺を成り立たせる定数行列 H がないことが簡単にわかります。
ガウス分布を非線形関数への入力として使用すると、得られた結果がガウス分布に適合しなくなり、カルマン フィルターの式が適用されなくなります。
したがって、上記の非線形関数を近似線形関数に変換して解く必要があります。
大学のコース「高度な数学」で、非線形関数 y=h(x) は、テイラーの式を介してある点でテイラー級数に展開できることを学びました。
2 次以上の高次項を無視すると、非線形関数 h(x) を置き換える近似線形方程式が得られます。つまり、次のようになります。
非線形関数 h(x) を多次元に拡張します。つまり、各変数の偏導関数を見つけます。つまり、次のようになります。
x に関する偏導関数に対応する項は、ヤコビアンと呼ばれます。
ヤコビ行列は、関数の一次偏導関数を特定の方法で並べた行列です。
- 1 つの変数の量の関数の導関数は、量、勾配です。
- 多変量関数の導関数はベクトル、つまり勾配です。
- 多変量ベクトル値関数の導関数は行列、ヤコビア
詳細については、参考文献 21 を参照してください。その発明の歴史から段階的に説明されています。
偏導関数の式を以前に導出された式と比較して x の係数を調べると、ここでの測定行列 H が実際にはテイラーの式のヤコビアンであることがわかります。
多次元ヤコビ行列の導出過程に興味のある学生は、自分で学習できます. ここでは、その結論を直接使用します:
、 、に関する非線形関数 h(x') の一次偏導関数を求め、それらを行列に配置し、最終的にヤコビ行列 H を取得します。
の
次は、高度な数学の偏導関数のスキルをテストするときです。
一連の計算の後、測定行列 H は最終的に次のように取得されます。
上記の式によると, 障害物の状態の各予測の後, 対応する測定行列 H は、予測された位置と速度に応じて計算する必要があります. この測定行列は、導出される非線形関数 h(x') です. x' の位置での結果。
3.2 アンセンテッド カルマン フィルター UKF
EKF はすでに非線形問題を非常にうまく解決できるのに、なぜ UKF が必要なのでしょうか?
その理由は、実際には完全に不規則な分布が多数存在し、より良い近似とより高いパフォーマンスが必要だからです。EKF で非線形問題を解決する方法を見てみましょう (下の図は参考文献 15 からのものです。偶然にも、著者の William は湖南省の仲間 + WeChat の友人でもあります)。
元のガウス分布は実際には非線形変換後の不規則な非線形分布であることがわかります.EKFでは、テイラー級数を使用してガウス平均点付近の非線形分布を近似し、近似ガウス分布を取得します. しかし、問題は、このおおよそのガウス分布が十分に正確でない場合があり、単一の平均点では、上の図の非常に不規則な分布を予測できないことが多いことです。現時点では、無香料のカルマン フィルター UKF が必要です。
UKF は、元のガウス分布から平均点を含む一連の代表点を抽出し、代表点を非線形方程式に組み込み、これらの点の周りで近似を実行して、より良い近似結果を取得します。
上の図では、青い楕円で表されたUKF近似ガウス分布が実際の不規則分布により近いことがわかります。
全体として、UKF はEKFよりも非線形プロセス モデルまたは非線形測定モデルを処理するための優れた代替手段です。UKF は非線形関数を線形化せず、いわゆるシグマ ポイントで確率分布を近似します。利点は、多くの場合、非線形変換のシグマ ポイント近似が線形化よりもうまく機能し、複素ヤコビアンの計算も節約できることです。詳細については、参考文献 16 を参照してください。
参考文献と参考文献
- ICV テクノロジー ロードマップ 2.0 と革新的なアプリケーション ロードマップ
- 自動運転技術の始め方と学び方 (1)
- 7月オンライン「無人運転実戦」少人数クラス
- ウィキペディアでのカルマン フィルター処理の説明
- ベイジアン手法からベイジアンネットワークへ
- 隠れマルコフ モデル HMM を一般に理解するにはどうすればよいですか?
- カルマンフィルターの分かりやすい解説
- カルマン フィルター処理に関する古典的な外国語: 「カルマン フィルターのしくみを図で説明」
- これは上記の翻訳の 1 つです:カルマン フィルタリングを可能な限りシンプルかつ詳細な方法で説明するにはどうすればよいですか?
- これは上記の別の翻訳です: Illustrated Kalman Filter, an easy-to-understand tutorial . どちらの翻訳にもそれぞれ小さな問題があります. もちろん、この記事は回避しました
- グーグルの無人運転の創始者であるセバスチャン・スランらが書いた「確率的ロボティクス」は、権威ある包括的な本ですが、十分な人気はありません。
- 「Visual SLAM Fourteen Lectures: From Theory to Practice (2nd Edition)」は非常に優れた本で、7 月の SLAM クラスと組み合わせれば SLAM をマスターするには十分です。
- カルマン ゲインの導出
- 状態推定の方向性については必読の「State Estimation in Robotics」が「Probability Robotics」より人気があり、興味深いことに、この本の翻訳者は、Lecture 14 on Visual SLAM などの著者である Gao Xiang 氏です。
- SLAM の基本 - 拡張カルマン フィルター
- 自動運転のための知覚融合 - アンセンテッド カルマン フィルター (Lidar&Radar)
- データマイニングに必要な確率論や数理統計学の知識
- ベイジアンの観点からのカルマン フィルター処理
- 最小二乗法からカルマン フィルター処理まで
- わかりやすい - カルマン フィルターと拡張カルマン フィルター
- ヤコビ行列の幾何学的意味の直感的な説明と応用
- カルマン フィルターの実装の詳細
あとがき
正直なところ、このブログを書く前にたくさんの記事や資料を読みましたが、書く前にカルマン フィルターとそれに関連するアルゴリズムについて明確かつ完全に理解しているわけではありませんでした。
中秋節の 3 日間を含めて、この記事を完成させてきました.10 年間ブログを書いてきたので、私の記事を勉強していない人にも理解できるようにするという強迫観念が常に心にありました。コンピューター (そうでなければ、なぜ書くのが面倒なのか) のため、私はこれに特別な注意を払います 2 つの点:
- 複数の写真、複数の例
- 他の方の記事にあるワンステップの派生、私の場合、10ステップに分解できるなら10ステップに分解しなければなりません
理解しやすいからこそ、より多くの初心者がより早く始めることができ、より充実感と満足感を得ることができるからです. もちろん、誰もが批判と修正を歓迎します. 最後に、より詳細な情報については、関連する記事を読むことができますクラス。
以下は、この記事の修正記録です (執筆から 1 週間以内に、基本的に毎日改善/深化されました)。
- 9 月 19 日と 21 日に、セクション 1.1 が改善されました。特に、ドライバーレス ソフトウェア アーキテクチャの 6 つのモジュールが改善されました。
- 21 年 9.20、セクション 2.1 を改善 カルマン フィルターとは;
- 21 年で 9.21、セクション 2.2 を改善、主にカルマン ゲインの導出
- 21 年の 9.22 では、セクション 2.2 が再び改善されました。主に、カルマン ゲインの物理的な意味です。
- 21 年 9 月 23 日、セクション 2.2 が再び改善され、主にカルマン フィルター処理の 3 つの導出アイデアがまとめられ、セクション 3.1 で拡張カルマン フィルター処理 EKF が最適化されました。
- 10 月 10 日、21 日、Qi Yuexiao 氏は、セクション 1.1 の関連する詳細を改善および修正するのに役立ちました。
- 10 月 11 日、21 日、Qi Yuexiao 氏は、予測されたセンサーのノイズ共分散と観測されたセンサーのノイズ共分散の選択基準の改善を支援しました. 決定するノイズ (カメラ、ライダーなど)
- 3 月 17 日、23 日に、この記事のコメントの下にある 2 人の読者からのフィードバックに従って、関連する説明が次のように修正されました。外部要因のない小規模な紫色のガウス分布. , 平均は同じですが、それらの間の共分散は異なります"