地図作成(SLAM)の説明と各種パッケージ入れ替え
1. SLAMとは
SLAMはSimultaneous Localization And Mappingの略で、自己位置推定と地図作成を同時に実行することです。
しかし実際には下記のような鶏が先か卵が先か問題がありました。
- 自己位置推定するには地図が必要
 - 地図作成するには自己位置が必要
 
下記のように同時にやることで解決しました。
- (作成中の)地図から自己位置を推定する
 - 推定した自己位置から地図生成を行う
 

2. SLAMの種類について

近年は地図の大規模化に伴い、Graph-Based SLAM系が主流です。
ROS2のnavigation2標準のslam_toolboxはGraph-Based SLAM系です。
3. 2D-SLAMのパッケージ紹介
ROS2で使用できる2D-SLAMパッケージはまだ多くはありません。
| パッケージ名 | 手法 | Loop検出 | オドメトリ | 補足 | 
|---|---|---|---|---|
| Gmapping | Rao-Blackwellized ParticleFilterによるGrid-BasedSLAM | ○ | 必須 | ROS1標準 | 
| Cartographer | Graph-based SLAM+オンライン化 | ○ | どちらでも | 強力なLoop検出 | 
| slam_toolbox | cartographerの改良版。localSLAM(スキャンマッチング)をslam_kartoに変更 | ○ | どちらでも | ROS2標準 |