amclはマップを使って自己位置(オドメトリ)を補正する。
gmappingはマップの生成と自己位置の補正を並行して行う。
amclもgmappingも使わない場合、自己位置の誤差が蓄積していく。
つまり、間違った自己位置をもとに経路を生成していく。
amclを使うと、LRFとマップを比較して、自己位置を補正する。
自己位置を補正するといっても、オドメトリの積分値(/huskey_velocity_controller/odom)を補正するのではなく、
オドメトリの初期位置(/odom, tf)を補正する。なので、/mapと/odomがずれていく。
gmappingのソフトウェア構成はamclとほぼ同じ。/mapが入力ではなく、出力になるだけ。
・デバッグすべきこと
/gmappingノードが起動していること
ロボットを走らせたら、static mapやGlobal costmapが広がること
/mapトピックが存在すること(move_baseだけだと/mapトピックは存在しない)