現在ROS2で使えてOSSとして公開されているSLAM、自己位置推定関係のパッケージを調べてまとめてみた
2D LiDARのsensor_msgs/LaserScanをSubscribeして動くものが調査対象
備考:GitHubでROS2 で使えるbranchがあるものが対象、実際に動くかは不明
2D LiDAR SLAM
Google Cartographer
Github:
Subscribe Topics : sensor_msgs/LaserScan, sensor_msgs/Imu, nav_msgs/Odometry, sensor_msgs/NavSatFix
ソフトウェアライセンス:Apache-2.0 license
ROS1であったもののROS2実装
IMU,Odomは必須ではなくLaserScanのみで動作する
詳しい説明は他に解説記事がいっぱいあるのでここでは省略
slam_toolbox
Github:
Subscribe Topics : sensor_msgs/LaserScan, TF(odom -> base_link)
ソフトウェアライセンス: LGPL-2.1 license
ROS2標準のSLAM(ROS1のGmappingみたいなもの)
Odomは必須なので、OdomがないロボットはCartographerを使ったほうがよい
導入方法などは以前書いたこちらの記事を参照
littleslam_ros2
Github: https://github.com/rsasaki0109/littleslam_ros2
Subscribe Topics : sensor_msgs/LaserScan, TF(odom -> base_link)
ソフトウェアライセンス: MPL-2.0 license
こちらはSLAM入門という本のアルゴリズムのROS2実装
Odomが必須
slam_gmapping
Github:
Subscribe Topics : sensor_msgs/LaserScan, TF(odom -> base_link)
ソフトウェアライセンス: CreativeCommons-by-nc-sa-2.0
ROS1のGmappingのROS2ラッパーらしい eloquent-develがあるがFoxyやHumbleで動くか不明
Odomが必須
iris_lama_ros
Github:
Subscribe Topics : sensor_msgs/LaserScan, geometry_msgs/PoseWithCovarianceStamped, TF(odom -> base_link)
ソフトウェアライセンス: BSD-3-Clause license
以下のパッケージのROS2ラッパー
https://github.com/iris-ua/iris_lama_ros
launchでParticle Filter SLAM、オフラインSLAM、Graph SLAMを選択できる
eloquent-develがあるがFoxyやHumbleで動くか不明
自己位置推定関係
amcl
Github:
Subscribe Topics : sensor_msgs/LaserScan, nav_msgs/OccupancyGrid, TF(odom -> base_link)
Publish Topics : TF(map -> odom)
ソフトウェアライセンス: LGPL-2.1-or-later
同じみの自己位置推定パッケージ、Navigation2の機能として提供される。
基本的にNav2と一緒に使う。
mrpt_navigation/mrpt_localization/
mrpt_navigationというROS1のNavigationStackのような自律移動パッケージのROS2実装の中にある自己位置推定の機能
mrpt_navigationをインストールしてこのノードだけ使えばamclと同じように使える
emcl2_ros2
上田先生のemclをROS2 移行したもの
rf2o_laser_odometry
Github:
Subscribe Topics : sensor_msgs/LaserScan, nav_msgs/OccupancyGrid, TF(odom -> base_link)
Publish Topics : TF(odom -> base_link)
ソフトウェアライセンス: GPL-3.0 license
ROS1であったLaserオドメトリパッケージ rf2o_laser_odometryのROS2版
ホイールオドメトリが取得できないロボットはこれを使うことで、LiDARのLaserScanのみでオドメトリできる。
ライセンスがGPLなので商業利用しづらいのが難点。
総括
3D LiDAR SLAMやVisual SLAMのパッケージもこのページにまとめようと思ったが、いろいろありすぎるので2D SLAMのみにした。
SLAMにおいてはホイールオドメトリが使えるロボットはslam_toolbox、使えないロボットはCartographerと使い分けるのがいいだろう。
参考