- 作者:友納 正裕
- 発売日: 2018/03/03
- メディア: 単行本(ソフトカバー)
目次
目的
- 書籍「SLAM入門」を参考に、SLAMシステムにおけるバックエンド部分について理解する。
- サンプルコードを参考に、C++での設計思想について理解する。
クラス設計
SlamFrontEndクラスのメンバとして集約される形で実装される。
メソッド設計
SlamFrontEndクラスからの呼び出し
- フロントエンドのメイン処理を行うprocess()メソッドから呼び出される。
- ループ検出により再訪点が見つかったタイミングでポーズ調整、地図修正を実行する。
ポーズ調整
- SLAMにおけるポーズグラフの最適化ライブラリとして公開されているp2oを用いる。
- 現在位置とマッチングする再訪点との間の残差が最小になるように最適化計算を繰り返す。
- returnされるnewPosesは調整後のロボットの軌跡データなので、vectorとして定義される。
地図修正
- ポーズ調整により修正されたロボット軌跡に基づいてポーズグラフ上の各ノードを修正する。
- PointCloudMapクラスのremakeMaps()メソッドを呼び出し、地図修正を実行する。
- 部分地図を修正し、最後に全体地図を再構築する。
GitHub
記載されている各UMLのダイアグラムは、全て下記のGitHubで公開済み。