ゼロから始めるレーザー SLAM (11) - SLAM の問題の解決方法

皆さん、こんにちは。私は SLAM を目指す博士候補者です。その過程で SLAM 学習プロセスの浮き沈みを知っています。質の高い記事とソース コードを提供してくれた皆さんにとても感謝しています。知識が増えてきたので、私自身のレーザー SLAM 学習ノートのコラムを整理して、誰でもすぐにレーザー SLAM を始められるように 0 から説明します。また、SLAM と Xiaobai を始めたい学生にも便利です。研究の参考になれば、読んでいただけると思います。最終的には一定の利益が得られるでしょう。間違っている点があればご指摘いただき、皆さんで交流・議論し、共に前進していきましょう。

目次

1. SLAMの問題を深く理解するためのゲームを作る

2. フィルターベースの SLAM 問題

2.1 ベイズ確率

 2.2 ベイジアンフィルタリング

 2.3 粒子フィルタリング

 2.3 SLAM 問題の解決

3. グラフ最適化に基づく SLAM

3.1 図

3.2 最小二乗アルゴリズム

3.3 最小二乗解

3.4 グラフ最適化に基づく SLAM フレームワーク

1. SLAMの問題を深く理解するためのゲームを作る

まず、ゲームをしましょう。私がどこにいるか当ててください。

下の写真は私たちの学校の地図を選択し、私が学校にいるということだけを示しています。私がどこにいるか推測してください。

私は学校のどこにでもいますし、確率は等しいと言うべきです。

 次に、歩き始めたことを自分に規定し、歩幅は70cm、回転は90度で、動き始めたことを伝え、周囲の環境の写真を送ります。このとき、あなたは私が運動場の周りにいる可能性が高いと感じるでしょうが、学校には運動場が 3 つあり、私の正確な位置はまだわかりません。

 100歩歩いて、目の前に寮の建物が見えたと言いました。下の写真の暗いエリアにいる可能性が比較的高いと思われるかもしれませんが、この学校には3つの寮エリアがあり、それでも私の正確な位置がわかりません。

500mほど左に歩くと、右手に体育館が見えてきましたが、現時点では体育館と寮の方向に合う唯一の道なので、おおよその位置をより正確に知ることができます。ただし、これはまだおおよその領域であり、正確に位置を特定することはできません。

 このとき、私は右折して体育館の入り口まで 50 歩歩いたということをもう一度お伝えします。より正確に体育館の入り口のどこかに位置することができ、図に示すように私が歩いた道を推定することができます。下の図の右下隅。

 しかし、私一人でまっすぐ歩くことは不可能ですし、曲がるときも90度でなければならないという保証はありませんので、推定した道と実際に歩く道には違いがあります。しかし、私が一歩ごとに正確な周囲の環境情報と距離を提供すれば、私の姿勢の変化と軌跡を正確に推定できると思います。

さて、これでゲームは終わりです。上記のゲームは 2 つのポイントを証明しています

  • 姿勢推定の問題は、私が各歩幅 70 cm 歩くように設定したのと同じように、自分自身の推定に依存するのに十分ではありませんが、すべての歩幅で 70 cm 歩くことは不可能です。
  • 姿勢推定のプロセスは確率と関係があるようで、上記のゲームは九龍湖全体を可能な空間として開始し、最後の数点までを開始します。

2. フィルターベースの SLAM 問題

2.1 ベイズ確率

上のゲームを見ると、姿勢推定プロセスが確率に関連しているように感じられます。確率について話したところで、最も一般的に使用されるコイン投げの問題から始めましょう。次の表と裏を予測する確率はいくらですか? 表と裏、各辺が 0.5 であると言うでしょう、誰もが知っています、その通りです。

次のステップは難易度を上げて、明日の株式市場が上がるか下がるかを予想してもらいます。では、なぜコイントスを見積もるのは簡単なのに、株価を見積もるのは難しいのでしょうか? これは、株式市場がランダムなプロセス、つまりランダムなプロセスであるためです。研究されるランダム変数は独立していません。独立していないため、ランダムな実験を行うことはできませんが、これは非常に困難です。

ランダム実験では、次の 3 つの条件を満たす必要があります。

①同じ条件で繰り返し可能。

②実験、結果は不確実だが、結果はすべてわかっている(コインを投げると、プラスかマイナスか、すべての結果がわかっているなど)。

③テスト前は結果が分からない。

言い換えれば、同じ条件で株式市場の実験をしたい場合は、過去に戻らない限りです。時間に関連する多くのことはランダムなプロセスであり、株式市場、気温、姿勢推定-予測問題など、推定する (実験を繰り返す) のが困難です

では、どうやって見積もればいいのか分からないという方は、株式市場の大物たちがどのように株の騰落を見積もっているのかを見てみましょう。彼らは毎日あらゆる種類のニュースを観察し、明日の株式市場の騰落を判断するためにあらゆる種類の外部情報を検索します。

たとえば、最初に株価が上がるか下がる確率を 0.5 と見積もったが、今日テスラのブレーキが故障したことがわかった場合、明日はテスラの株価が下がる可能性が高いと間違いなく考えるでしょう。 

 この時点で、株式市場の推定上昇と下落は、推定位置とある程度似ていると感じられるでしょうか? そうです、これがベイズ確率です ベイズ確率の核となる考え方は、事前確率を外部観測に基づいて事後確率を取得するというものです。

 2.2 ベイジアンフィルタリング

ベイズの公式の導出は次のとおりです。

 理解を深めるために、温度測定の別の小さな例を示します。

 このようにして、この種の確率推定問題の解き方はわかりますが、被験者は自分で解くことができないため、外部の情報を探します。「今日の気温を推定させてください。難しいですね」と言われるかもしれませんが、私はベイズの公式を刻々と計算し、まず確率を推定し、それから外部の観測に基づいて修正します。でも、毎回推定するのはちょっと面倒だと思うかもしれませんが、初めて気温をアプリオリに推定し、事後推定値を取得し、この事後推定値を次の瞬間のアプリオリ推定値として使用する、というようにしていきます。 , そうすれば、私のプロセス全体が一度見積りを開始するだけで済み、その後のフォローアップは自動ドミノのようになります。素晴らしいクラスメート、あなたはベイジアン フィルタリングを自分で導入しました。

 上図はベイジアンフィルタリングの処理と計算式を示したもので、このような問題はベイジアンフィルタリングで解決できますが、多くの場合、無限積分が必要となるため、解析的な解決策がありません。

 2.3 粒子フィルタリング

パーティクル フィルタリングの中心となるアイデアは、無限積分を避けるために、パーティクルの束を使用して確率密度を近似することですが、下の図を見ると、私たちのゲームとの言葉では言い表せない関係がますます高まっているように感じられるでしょう。

 パーティクル フィルターとベイジアン フィルターの違いは、パーティクルを選択し、パーティクルを使用して伝播する必要があるため、パーティクルをいかに効率的にサンプリングするかが重要な問題となります。

以下の図は、以前のゲームを使用して、効率的なサンプル、初期サンプリング、重み評価、および再サンプリングを選択する方法を簡単に示しています。このゲームでは、私がどこにいるかを推測するために 81 点しか選択できないとします。最初は、平均して位置点しか選択できません。遊び場の写真を送った後、別の 81 点を選択してもらいます。間違いなく当てはまります。遊び場の周りで選んでください。

パーティクルを選択するプロセスを要約します。

最初に一定領域内の平均 50 個の 粒子を選択します
観測データによると、そのエリア内の各場所の重みは異なります。
重さに応じてその場所をターンテーブルにし、ターンテーブルを 50 回回転させ、 50個 の粒子を再選択します
次の反復のために

 2.3 SLAM 問題の解決

さて、姿勢変換問題にはベイジアン フィルタリングの反復が必要であることがわかり、解決を容易にするために粒子フィルタリングが導入されたので、ついに SLAM 問題を解決できるようになりました。

慣性計測を初期の事前推定として使用し、ライダーの観測情報を使用して事後姿勢を補正する、これがオリジナルの SLAM システムである Fast-SLAM です。Fast-SLAM に基づいて、その後のよく知られた Gmapping アルゴリズムは、メモリ爆発の最適化と粒子散逸の最適化を実行しました。具体的な操作は検索してください。

 Gmapping は、 RBPF ( Rao - Blackwellized Particle Filters ) アルゴリズムを使用して2D LIDARに基づいた2 次元グリッド マップ構築を完了するSLAMアルゴリズムであり、屋内の小規模SLAMに適しています

利点: gmapping は、小さなシーンでの計算量が少なく、マップ精度が高く、LIDAR スキャン頻度の要件が低いため、リアルタイムで屋内環境マップを構築できます。

デメリット: 環境が大きくなると、マップ構築に必要なメモリや計算量が膨大になるため、大規模なシーン構成には gmapping は適しません。直感的には、200x200メートルの範囲の場合、グリッド解像度が5cmで各グリッドが 1 バイトのメモリを占有する場合、各粒子が保持するマップには16Mのメモリが必要となり、 100 個の粒子の場合は1.6Gになります。メモリー。

しかし、上記の 3 つの赤い問題は、フィルタリングを使用して解決することによって決して取り除くことができないため、SLAM はグラフ最適化の時代に入りました。

3. グラフ最適化に基づく SLAM

3.1 図

まず、グラフとは何かについて説明します。グラフ(Graph)は、SLAM 問題を表現するために使用されます。グラフ内のノードはロボットの姿勢を表し、2 つのノード間のエッジは 2 つの姿勢の空間制約を表します。

グラフベースの SLAM : グラフを構築し、予測と観測の間の誤差を最小限に抑える最適な構成(各ノードのポーズ)を見つけます。

 グラフ最適化のプロセスは、美しい蜘蛛の巣を編むようなものです。グラフ最適化の中心的な考え方:エラーは突然発生するのではなく、プロセス全体に関連しており、全体的な最適値を見つけて合計エラーを最小限に抑えるために全体を調整する必要があります。

グローバル最適という言葉は少し聞き覚えがありますが、これは最小二乗アルゴリズムによって解決される問題ではないでしょうか? そうです、グラフ最適化 SLAM の解決策のアイデアは、実際には最小二乗アルゴリズムが使用されていますが、非線形です。 

3.2 最小二乗アルゴリズム

私たちは高校で直線近似のための最小二乗アルゴリズムに触れるべきでした。各点を位置と見なし、曲線を経路と見なす場合、これは単なる SLAM 姿勢推定ではありませんか。

言うは易く行うは難しですが、線形問題は解けますが、非線形最小二乗問題はどうやって解くことができますか。

3.3 最小二乗解

3.4 グラフ最適化に基づく SLAM フレームワーク

グラフベースの最適化を要約します。移動キャリア履歴内のすべてのポーズ状態と環境観察情報を考慮し、ノードとエッジによって形成されたグラフを使用して一連の移動ロボットのポーズと制約を表し、関連データを確立および維持し、独立してフロント-end 並列コンピューティングの実装は、より効率的で汎用的な最適化方法です。一般に、スキャン マッチング、閉ループ検出、バックエンドの最適化、点群マップ ストレージに分かれています。

 現在広く使われているレーザーSLAMシステムを私の理解に基づいて図にしましたので、間違っていたらご指摘ください。

ここまでで、SLAM の過去と現在について学習しました。次のセクションでは、SLAM システムの各部分を説明し、その後 Lego-loam のソース コードと組み合わせて説明します。コンテンツがお役に立ちましたら、このコラムを購読してください。無料です~

おすすめ

転載: blog.csdn.net/HUASHUDEYANJING/article/details/130774310