move_baseノードを問題なく動作させるには, いくつかの最低限のパラメータ調整が必要です.
ここでは, それぞれのパラメータの意味と, 最低限設定しておくべき値を紹介します.
パラメータの説明(参考)
- 意味: ロボットの形状を定義するためのパラメータ (default: use
robot_radius, default: 0.46)
- 意味: Rvizで可視化するためのパブリッシュ周波数(Hz) (default: 0.0)
- 意味: センサの名前リスト, 名前空間の定義 (default: "")
- 意味: トピックに関連付けられているデータ型 (default: PointCloud)
- 意味: 障害物がなくなった場所を地図上から消すためのパラメータ (default: false)
- 意味: ローリングウィンドウバージョンのコストマップを使用するかどうか (default: false)
static_mapパラメータがtrueに設定されている場合, このパラメータはfalseに設定する必要がある
- 意味: コストマップが静的マップをサブスクライブするトピック名 (default: map)
- 意味: グローバルコストマップにおいて、
map_serverから提供される静的マップを使用するためのパラメータ (default: false)
footprint
設定しないと, ロボットの形状はデフォルトで円形(左図の赤線)になります.
しかし, このままでは, 実際の形状と合っていないため, 意図しない停止や経路計画の失敗が起こる可能性があります.
orne-boxでは, 以下のように設定することで, 実際のロボットの形に近い四角形の形状(右図)を指定できます.
footprint: [[0.433, 0.254], [-0.187, 0.254], [-0.187, -0.254], [0.433, -0.254]]
publish_frequency
このパラメータを設定しないと, Rviz上でコストマップが表示されません.
たとえば以下のように,2.0など適度な頻度で指定することで, 地図がリアルタイムに更新され, 視覚的にも確認しやすくなります.
publish_frequency: 2.0
observation_sources
センサ(例: LiDAR)からのデータを使用するために, 使用するトピック名(例:scan)を指定します.
これを設定しないと, 地図に存在しない障害物を認識できません.data_type
observation_sourcesで指定した各名前空間内で定義します. トピックのデータ型がデフォルトのPointCloudであれば省略可能ですが,LaserScanなど異なる型を使用している場合は必ず指定してください.clearing
observation_sourcesで指定した各名前空間内で定義します.
これをtrueにしないと, 一度現れた障害物が消えずに残り続けてしまいます.
例
footprint: [[0.433, 0.254], [-0.187, 0.254], [-0.187, -0.254], [0.433, -0.254]]
publish_frequency: 2.0
observation_sources: scan
scan:
{
data_type: LaserScan,
clearing: true,
}
rolling_window
local_costmapでは, 静的な地図(static_map)を使わず, ロボット周辺の動的な地図を更新し続けるために,rolling_windowをtrueに設定する必要があります.
local_costmap:
rolling_window: true
-
map_topic
コストマップと自己位置推定で異なる地図を使用したい場合, コストマップ用のトピック名を指定してください. -
static_map
trueに設定すると,map_serverが提供する静的マップをコストマップとして使用できます. (通常はこちらで問題ありません)
ただしこの設定では, ナビゲーション中に地図を切り替えることができません. 地図を切り替えたい場合は,static_mapをfalseにし, 代わりにpluginsを用いてStaticLayerを明示的に定義し,map_topicを指定する必要があります.
例1)地図の切り替えが不要な場合
global_costmap:
map_topic: map_for_costmap
static_map: true
例2)地図の切り替えが必要な場合
global_costmap:
plugins:
- name: StaticLayer
type: costmap_2d::StaticLayer
- name: inflationlayer
type: costmap_2d::InflationLayer
StaticLayer:
map_topic: map_for_costmap
ここからの調整↓

