ROS move baseでdwa local plannerを使ってみる
ROSのmove_baseにdwa_local_planner(DWAPlannerROS)というものがあったので,そちらを使用してみました.
 ちなみにmove_baseのデフォルト設定ではbase_local_planner(TrajectryPlannerROS)というものを使用しています.
 このプランナーがどのような動きをするのかはまだ不明ですが,情報が分かり次第アップしていこうと思います.
 とりあえず見ていきましょう.
パラメータはbase_local_planner(TrajectoryPlannerROS)と同じようなものが多いですが,
 パラメータの名称違いがあるので注意しましょう.例えば acc_lim_theta -> acc_lim_th など.
 rotation_velなどの回転速度パラメータが絶対値になっていることにも注意が必要です.
Robot Configuration Parameters -ロボット速度系のパラメータ-
~<name>/acc_lim_x (double[m/s], default: 2.5)
 ~<name>/acc_lim_y (double[m]/s, default: 2.5)
 ~<name>/acc_lim_th (double[rad/s], default: 3.2)
 ロボットの加速度のパラメータ.acc_lim_yの値は全方向ロボット(ホロノミックなロボット)の場合に使用します.
~<name>/max_trans_vel (double, default: 0.55)
 ~<name>/min_trans_vel (double, default: 0.1)
 ~<name>/max_vel_x (double, default: 0.55)
 ~<name>/min_vel_x (double, default: 0.0)
 ~<name>/max_vel_y (double, default: 0.1)
 ~<name>/min_vel_y (double, default: -0.1)
 ~<name>/max_rot_vel (double, default: 1.0)
 ~<name>/min_rot_vel (double, default: 0.4)
 ロボットの前進速度と回頭速度を決めます.
Goal Tolerance Parameters -ゴール到達に関するパラメータ-
~<name>/yaw_goal_tolerance   (double [rad], default: 0.05)
 目標角度と現在角度の差がyaw_goal_tolerance以下になった時,目標地点に到達したと判定する.
~<name>/xy_goal_tolerance   (double [m], default: 0.1)
 目標地点と現在地点との距離がxy_goal_tolerance以下となった時,目標地点に到達したと判定する.
~<name>/latch_xy_goal_tolerance   (bool, default: false)
 調査中.ゴール到達に角度判定を入れない?
Forward Simulation Paramaters -ロボットの移動シミュレーションのパラメータ-
~<name>/sim_time   (double [sec], default 1.7)
 ロボットの移動を何秒間シミュレートするか.
~<name>/sim_granularity   (double [m], default 0.025)
 算出する経路のきめ細かさ.
~<name>/angular_sim_granularity   (double [rad], default sim_granularity)
 回頭速度をシミュレートする際のステップ数
~<name>/vx_samples   (int, default 3)
 何段階速度をシミュレートするか.
~<name>/vtheta_samples   (int, default 20)
 何段階回頭速度をシミュレートするか.
~<name>/controller_frequency   (double [Hz], default 20.0)
 シミュレーションの頻度.
Trajectory Scoring Parameters -経路生成のコストパラメータ-
~<name>/path_distance_bias   (double, default: 32.0)
 base_local_plannerのpdist_scaleと同じ.
 base_local_plannerではmeter_scoreingのパラメータがあったが,dwa_local_plannerでは最初からピクセルベースではなく距離ベースでコストが計算されている.
~<name>/goal_distance_bias   (double, default: 24.0)
 base_local_plannerのgdist_scaleと同じ
~<name>/occdist_scale   (double, default: 0.01)
 base_local_plannerのoccdist_scaleと同じ
~<name>/forward_point_distance   (double [m], default: 0.325)
 追加scoreing pointの場所.
 base_local_plannerでいうheading_lookaheadというパラメータと同じ役割をしていると思われる.
~<name>/stop_time_buffer (double, default: 0.2)
 調査中.
~<name>/scaling_speed (double, default: 0.25)
 調査中.ソースコードを追いかけてみたが,このパラメータはどうやら内部では使われていないようです.
~<name>/max_scaling_factor (double, default: 0.2)
 調査中.こちらのパラメータも同様に内部では使用されていないみたいです.
 なぜパラメータとして設定されているか不思議ですが...
Oscillation Prevention Parameters
~<name>/oscillation_reset_dist   (double [m], default: 0.05)
 ソースコードを少し追ってみたのですが,ロボットが震動する(例えば,右旋回と左旋回を繰り返すなど)事があった際にrecovery_behaviorに移行することがあるらしい.
 ロボットがoscillation_reset_distすすむと,振動のカウントがリセットされるということではないか.
Global Plan Parameters
~<name>/prune_plan   (bool, default: true)
 global_plannerから受け取ったグローバルパスの既にロボットが通過した部分を切り取るかどうか.
 切りとる場合はロボットからうしろ1mだけパスを残し,残りの部分を消去します.