ROS Navigation Stack ~ DWA Local Planner パラメータ調整1 ~

先日の投稿で,cmd_velをつかってロボットが動かせるようになった様子をアップしましたが,今日はついにmove_baseを使ってロボットを動かせるようにします.すでにちょっと試してみて,前進はできるようになったのですが曲がる動作がどうもうまくいかず...パラメータを一通り勉強して調整する必要があるかと思ったので,このエントリを作りました.

1. DWA Local Plannerとは

 ROSではローカルプランニングようにいくつかアルゴリズムが選択できるようになってますが,今回はDWA Local Plannerを使うことにしました.DWA Local Plannerでは,下記のようなフローで実際に軌道が生成されます.

  1. ロボットの実現可能な制御空間を速度 (vx, vy, vtheta) をサンプリング.
  2. サンプリングしたそれぞれの速度に対して,速度積分していって実現軌道を取得.
  3. サンプリングしたそれぞれの実現軌道に対して,スコアリングを実施する.ROSで実際に実装されているスコアの基準としては,「1.ゴールからの距離」「2.障害物からの距離」「3.グローバルパスからの乖離度」.
  4. スコアの一番高かった軌道を選択して,その軌道を生成した速度をcmd_velとして送信する.

2. 各種パラメータ

変更必須のパラメータ
座標軸毎の最大・最小速度

自分のロボットは車両型でy方向には動けないので,速度設定は下記のようになるみたい.
あと,つくばチャレンジの速度制限から,x方向の最大速度は1m/s(=3.6kph)

DWAPlannerROS:
max_vel_x: 1.0
min_vel_x: 0.0
max_vel_y: 0.0
min_vel_y: 0.0

縦横方向の最大・最小速度

DWAPlannerROS:
max_trans_vel: 1.0
min_trans_vel: 0.0
trans_stopped_vel: 0.1

最大・最小角速度

DWAPlannerROS:
max_rot_vel: 0.5
min_rot_vel: 0.0
rot_stopped_vel: 0.0

最大加速度

DWAPlannerROS:
acc_lim_x: 0.5
acc_lim_theta: 0.2
acc_lim_y: 0.0

必要に応じて変更するパラメータ
目標位置との許容誤差パラメータ

yaw_goal_tolerance: 0.1
xy_goal_tolerance: 0.15

制御空間でサンプリングした値に対するシミュレーションパラメータ

sim_time: 4.0
vx_samples: 10
vy_samples: 1
vtheta_samples: 20
sim_granularity: 0.025

ひとまず上記設定でロボットを動かしてみて,うまくいけばアップします!