2DレーザーのみでGoogle Cartographer ros
目次
はじめに
こんにちは.ササキ(@saitosasaki)です.
今回は二次元のCartographer_rosをレーザのみで動かし、地図を作りました。
Cartographer_rosはgoogleが公開しているオープンソースのSLAM(Simultaneous Localization and Mapping)パッケージのrosラッパーです。
SLAMでループクロージャーができてるパッケージは貴重で、有名なgmappingは明示的にループが閉じないので屋外などの大規模環境で地図がずれるって人はこちらを使ってみたらよいと思います。使い方も簡単ですし。 (なお、パラメータチューニング)
2DではIMU・オドメトリが不要なのもポイント高いです。ただし、3DはIMUが必須です。
編集したところ
1.レーザースキャンの型の設定
デフォルトではMultiEchoLaserScan型を読み込む設定なので、使用機器にあったLaserScan型に変更しました。ちなみにPointCloud2型も設定かえれば読み込めます。
cartographer_ros/cartographer_ros/configuration_files/backpack_2d.lua options = { ・・・ num_laser_scans = 1,-- <--default:0 num_multi_echo_laser_scans = 0,-- <--default:1 num_subdivisions_per_laser_scan = 10, num_point_clouds = 0,--<--if pc2 is used,set 1 ・・・ }
2.IMUの設定
デフォルトではimuの入力が必要だったので、imuの設定を切りました。
cartographer/configuration_files/trajectory_builder_2d.lua TRAJECTORY_BUILDER_2D = { use_imu_data = false,-- <--default:true ・・・ }
実行
レーザ用のnodeとcartographerのbackpack_2d.launchを立ち上げ
できた地図
map_serverのmap_saverでpgm形式で保存もできます。
参考にしたもの
google-cartographer.readthedocs.io
google-cartographer-ros.readthedocs.io
関連記事