SLAMアルゴリズムCコード未満の200行で:CoreSLAM tinySLAM紙翻訳します

tniySlam

本論文では、新たな鉱山ParisTech.CoreSLAMはSLAMアルゴリズムはSLAFロボットシステムと呼ばれる開発し導入しています。アルゴリズムはCoreSLAM C言語コードおよび名前の200本の未満のラインのその小さなコードサイズの一部として開発されました。私たちが会議の論文で、そのソースコードを公開することを決めたほど小さいので、それだけではなく、オープンソースであり、ソースコードが公開されました!
それは我々が実験で良好な性能を得ることで、これを行うために私たちを奨励しています。既存のSLAMアルゴリズムの簡単な審査の後、我々はCoreSLAMアルゴリズムの動機を作成するには、プロンプトたちを紹介します。第3のセクションは、アルゴリズムを捧げ。その後、我々はテストのためにロボットプラットフォームを導入し、得られた結果を説明します。

いくつかの研究は、計算速度との性能比較では、これらのアルゴリズムに焦点を当ててきた6まだ問題がすべてのケースで解決されていないことを示しています。
粒子フィルタにおけるレーザの使用に基づくSLAMアルゴリズムは、DP-SLAMアルゴリズムは、最も有名なの一つである2DP-SLAMの動作原理は、パーティクルフィルタを用いたロボットの関節分布およびテクスチャの姿勢を維持することです。アルゴリズムマップは、各粒子に関連付けられ、メモリ(コピー世代とマップの時間)を最小限に抑えるために、粒子間で共有マップの問題の一部に焦点を当てています。我々はそのような粒子フィルタのような従来の測位システムに統合されるように、その中のDP-SLAMの問題は、非常に複雑であり、3非常に類似しています。
当社のレビューでは、我々は我々のアルゴリズムと比較して、ほとんどのアルゴリズムは遅いロボットにテストされた、ことを見てきました-ほとんどその速度は1メートル/ S-を超えていないおよび/または非常に使用されています高価なレーザ(典型的には、SICK IBEOまたはレーザースキャナ100メートルの範囲)。私たちのロボットの速度は、位置決め及びマッピング作業のための主要なものの、興味深い質問をもたらし、3メートル/秒に達し、プラス短い距離範囲北部URG04。
しばしば影響で多くの成果を依存している-それは理解し、その動作を検証するために多くの労力を要するので、また、これまでのところ、全てではないが、(すべてではない)、ほとんどのSLAMアルゴリズムは、コードや複雑な数学的方法を使用して、多くの行が必要です異なるパラメータ。-そして最も重要なのは、既存のパーティクルフィルタアルゴリズムのフレームワークに統合することは容易に理解するのは簡単、単純なアルゴリズムを作り、そしてまだ良いパフォーマンスを提供します。私たちの仕事は重要な目標で始まります。最後に、我々はメモリの消費量、および整数コードを使用して計算キーサイクルを最小にすることが必要である、私達のアルゴリズムは、最終的に埋め込まれなければならないという要件を追加しました。

アルゴリズム

そして、DP-SLAMは、代わりに、私たちは地図のみを使用することにしました。したがって、DP-SLAM CoreSLAM相対的な利点は、これは確かにある、理論容量は長い廊下に消えないであろうということであるパーティクルマップのコンセプトでゴール。外部循環プロセスなしDP-SLAMに閉鎖を達成することができないわけではありません。私たちがすることができ、特に以来-実際に、私たちは、この利点は、複雑な価値がないと信じているプラットフォーム上で良い走行距離計に依存している、と私たちの目標の観点から(探査研究室ではなく、廊下...)かなり小さいループを閉じることです。
CoreSLAMのアイデアは、我々は2つの主要な機能を記述する必要がありますので、位置決めサブシステムレーザーベースの粒子フィルタに情報を統合することであるため。

  • 各状態仮説(粒子)ikelihood機能する位置検出フィルタとして使用される距離関数をマッピングするスキャン。ts_distance_scan_to_map(アルゴリズム2)の下方に設けられた関数のソースコード。それだけですべてのマップ値の単純な和の(粒子の位置に対する)すべてのスキャンの影響の点を含むことに留意されたいです。これは、リアルタイム動作中の粒子の数を限定するものではない私たちを可能にする、唯一の整数演算を使用して、非常に迅速なプロセスです。しかし、尤推定マップは専用であることを、この手段。
  • 更新機能をマップする、ロボットは予めマップを生成するために使用され、以下でより詳細に説明します。
    ロボット前進、以下に詳細に説明します。簡単な構築と互換性のある粒子フィルタのマップ:ピーク尤度関数などは、フィルタの効率化のために非常に重要であるため、制御が容易であるべきです。私たちは、穴を掘り、この更新備えるが、直接私たちのピーク尤度関数にグレースケールの数、これらの開口部の対応の幅を使用することによってグレースケールを達成します。各障害物を検出したため、アルゴリズムは、単一の点を描画しないが、機能は障害物の点位置に配置されていることを、関数を描画する(新しく作成されたマップについてズーミング、図1を参照)。その結果、マップの構成は、従来のマップのようには見えませんが、吸引孔との表面のように見えます。ABフィルタ(アルゴリズムライン744)、新しいプロファイルにマップ収束するようにマップに統合されます。地図更新は、遅延を使用して選択することができ、最後に更新位置粒子フィルタ(全ての粒子の加重平均の評価後の尤度)と呼ばれている(以下の議論を参照されたいです)。
    ts_map_update(アルゴリズム3)の下方に設けられた関数のソースコード。これは、機能使用ts_map_laser_ray最も難しい部分である(アルゴリズム4)。地図上に描画するために、および内部ブレゼンハムアルゴリズムの別の増強を使用する正しいプロファイルを計算するためにレーザーを使用ブレゼンハムアルゴリズム。これは、キー部分は整数除算ではない使用して、唯一の計算整数使用します。各ステップは、(この例では10ヘルツである)一度だけ行っても、我々はまた、このプロセスが原因による高解像度マップ(ピクセルごとに1 cm)で、地図の大部分がタッチされたレーザ走査フレームに、迅速であることを保証しなければなりません。
    CoreSLAMを容易に粒子フィルタに統合することができるが、使用されなくてもよいです。確かに、マップの構造。打撃オリフィスの傾斜を有する、任意の勾配降下アルゴリズムのために使用することができます。ので、簡単に障害物にアルゴリズムの収束をマッチング穴機能が導く役割を果たしています。当社のスタンドアロンバージョンは、スキャンして、現在のマッチをマッピングし、ロボットの更新された位置を取得するために非常に単純なモンテカルロアルゴリズムを使用して。
    実際、スタンドアロンバージョンの開発は、統合のマップのパラメータCoreSLAM、すなわち走査速度(調整することであるts_map_update50に設定されている機能の品質パラメータは、2参照)、すなわち、「穴の周りに幅」
    エフェクトポイントマップ(我々の実装600 [mm]の固定値)、及び地図の縮尺(この例では、1ポイント= 1センチ)。このバージョンでは、走行距離を無視することができ、またはモンテカルロ検索のための出発点として使用される(図5および図6に、オドメーターは無視され、したがって、レーザ位置決めオドメーター比較することができる)
    、粒子フィルタに基づくバージョンを管理あいまいな状況が必要とされて(私たちが代わりに空白のマップの完全なマップから起動したとき)、それを再配置するために必要です。
    また、統合された走行距離計のための最良の選択です、私たちは非線形フィルタ誤差モデルを統合することにより、10%にスリップ確率セットすることにより、非系統誤差(例えば、スリップ)(に対処することができますので、我々は結論付けることができます粒子の10%は、それが高い初期雑音モデルを有し、粒子の90%が有する位置に留まるオドメーターの低雑音モデル)を開発しています。
    粒子フィルタは、また、走行距離計センサやレーザ以外の非常に良好な連結フレームです。我々はまた、とコンパス(屋外用)GPSを統合(良い結果を得るためのチャンスがない、我々の場合には、センサーは、電磁ノイズに非常に敏感です)。
    問題を議論することにより、ローカリゼーション精度とデータ統合についての我々の2つはCoreSLAMのプレゼンテーションを完了するために、マップを遅らせました。
    **サブピクセル精度:私達のため*我々は解像度マップを1cmの場合でも、1センチメートル未満の変位を測定することができるts_distance_scan_to_map関数を算出する複数の点を取ります。いくつかのレーザスポットが別のポイントマップに落ちるためであっても距離の1ミリメートルを測定することができます。
    遅延**:**概念を延期-レーザーからその統合マップ間の時間をスキャンするために、測定された相対小さい変位の解像度のためのマップが必要です。例えば、正しくマップの解像度を1cm、1Hzの周波数である場合、10回の測定を待つ必要がある、1センチメートル/ sで移動する物体の速度で変位を測定するために、その後、待機時間は10でなければなりません。
    遅延の理論式は次のとおりです。
    レイテンシ = MapResolution * Measuremenuency RobotSpeed = \ FRAC {\テキスト{MapResolution} * \テキスト{Measuremenuency}} {\テキスト{RobotSpeed}}
    私たちのロボットについてや、アカウントに私たちのマップの解像度を取って、式は次のとおりです。ディレイ= Robotsperd。我々のロボット(2 M / S)は、比較的高い速度で動作します。その速度も、この速度で、待ち時間が1に等しい、0.01 M / Sに低下計算するために十分です。加えて、前述のサブピクセル精度は、タスクが容易になります。
    したがって、我々はCoreSLAM遅延管理コードを削除することを決めたが、CoreSLAMがゆっくりと移動するオブジェクトに適用する必要があることを思い出してください。0.01m/sあなたが閉ループを議論していない場合には、アルゴリズムの説明を終了することはできません。当社のアルゴリズムは閉じられてカバーしていませんが、任意の閉ループアルゴリズムと統合することができます。実際には、我々は現在、うまく私たちのCoreSLAMを補完すべきであるtinyLoopCloserアルゴリズムを開発しています。

特記事項

我々の実験プラットフォームは、鉱山ParisTechとSAGEM DS自家製ロボットの共同開発であるMinesRover(図2参照)です。ローバーは、4つの駆動輪と操舵輪と同様に(図3参照)の範囲の両者を有します。2は常に(少なくとも理論的には)自由な行使の中心の周りに行くので、非常に優れた走行距離情報が得られ、関節の動きのシーソーに基づいて、ロボットの機械的な構造は、常に地面と接触したままです。このデバイスは、滑りの問題を防ぐために、機械的なダンパーを必要としません。
ここに画像を挿入説明
画像に、我々はカメラのドームを見ることができ、操舵用サーボモータ、HOKUYO URG-04レーザ距離計は、受信機(灰色四角)およびロボット緊急超音波センサの前でのGPS。
ロボットは4要素4.1アンペアリチウム電池(14.8V)によって供給されます。モータは、4つの45W CC 3メートル/秒、最高速度を達成することができます。
GPS受信機の位置決め精度が1メートル(EGNOS衛星を使用して)までとすることができます。北陽URG04 10Hzのレーザーセンサーは、水平走査範囲5.6メートルで提供します。ロボットの方向を取得するために、我々は一緒にコンパスとGPSを発生します。超音波障害物センサは検出されなかったレーザ光(例えば、階段のステップ)を見つけるの任意のチャンスを提供し、典型的には、非常停止装置として使用されます。5軸ロボットは、さらに、IMUは、ヨーレートとロボット(我々の実験で使用されていない)の傾きに関する情報を提供することができる埋め込み。
中心モジュールとしてロボットにQwerk電子機器は、モジュールはcharmedlabs.comによって設計されています。これは、ベースのザイリンクスFPGA ARM 9マイクロプロセッサおよびロジック回路基板です。
ここに画像を挿入説明
6は四のステアリングホイールと、ロボットであり、自由に回転するホイールとエンコーダ2000二点。ロボットの中心に位置Qwerkモジュール。200MHzのマイクロプロセッサは、確実にすべてのセンサとアクチュエータを管理することが可能です。
Qwerkは、Linuxオペレーティングシステムにインストールされ、GPSとUSBバス北陽のサポートを提供します。FPGAロジック責任ICバスのサポート、および走行距離計の入力サーボモータ制御。USB接続を介してレーザーセンサー北陽URG-04LXを使用しました。
それは理想的なセンサーの価格ですが、それは次のような欠点がありますが。

  • その最大範囲は、当社のロボット-3 M /秒の速度は厳しく、その速度を制限を考慮に入れ、5,6メートルに制限されています。我々のカオス環境では、多くの対策が0メートルセンサー(示されていない反射または無反射)測定またはあいまいな(例えば、床や壁のボックスにつながった椅子の下部に次 - ボックスの前部または後部を検出することができます壁)
  • 測定周波数(10Hzの)も制限されます。例えば、壁にヒットする3メートル/秒の速度で、壁が傾いているように見える、なぜならレーザ後回転240°に近い測定の第二の点より最後の点240/360 * 3/10 = 20センチ。(すぐに同じ距離であるが)を測定します。私たちのロボットでは、我々はこれを考慮に入れる必要がありますので、我々はスキャンごとに縦方向と回転速度補正(スキャンあたり)定数を使用しています。

結論

パリの大学で電子技術の実験室で行った実験。この環境は、実際にアルゴリズムに挑戦している:それは混沌とした環境、ボックス、地面に横たわっているコンピュータをある、多くのテーブルや棚の検出と追跡が困難なためにレーザースキャナを使用して、(図9参照)。
図4.鉱山のソフトウェアアーキテクチャ図ローバーロボットプラットフォーム。
左は、組込みソフトウェアです。デスクトップ上で動作するソフトウェアの一部である右側、オン。HMIが完了経由ローバーとオペレータ間の鉱山の通信は、デスクトップPC上です。ARM9ロボットの負担を軽減するために、デスクトップコンピュータ上で実行されているパーティクルフィルタアルゴリズム。私たちは、ワイヤレス接続、すなわち、外部ロボットMIMOの内部は、良好な接続品質を提供することができますを使用します。
図5、図6及び図7は、同じデータを有するサンプルの結果を示します。前の二つのグラフでは、我々は、レーザーによって推定走行距離計と運動との間の比較を見て、彼らは非常に類似していること。図7は、情報を構築し、測距レーザと一緒にマップされ、そして再構成の精度よく、ほぼ閉ループを示します。興味深いことに、井戸レーザー情報によって補正されている(図8参照)は、本実験で観察されたスリップ。注意、我々の実験ロボットの速度に達する2.5メートル/秒、150%/秒のヨーレート(レーザによって測定され、測定方法、距離を測定することにより確認)、ステアリングホイールによって支持されているロボットの高い角速度4 。
ここに画像を挿入説明
図に示すように、図5の実験のみロボットのオドメトリ推定速度と反対側(オドメトリを考慮しない)ASER CoreSLAM我々の速度。測定の間に良好な一致ことに注意してください。我々は、予測されたセンサの性質を考慮し、レーザ光により測定し(約1)小さな遅延を観察しました。これは私達のオドメーター非常によく(とは完全に較正された)ことを示し、ロボットの高速移動に対応することができるレーザCoreSLAM(この実験で到着すると、2.5メートル/ sでした)。
グレイは、ロボットによって表示される「ボア」図に構築します赤で、我々は全てのレーザスキャンが行わカバーしています。ブルーは、ロボットの軌道の再構築です。ここでの閉ループはほぼ完璧です。地図情報は、走行距離計やレーザー(モンテカルロサーチ)が得られるを組み合わせることによって得られます。
図8の走行距離計は、マップを使用して構築しました。
ドライバは研究室の右側壁にぶつかるときスキッド状況ますのでご注意ください。

公開された10元の記事 ウォンの賞賛1 ビュー526

おすすめ

転載: blog.csdn.net/chenshiming1995/article/details/104338679