move_baseのローカルプランナーを変更する

このページではmove_baseのローカルプランナーを変更する方法について扱います。

move_baseのローカルプランナーは、デフォルトでは Trajectory Rollout が使用されています。 それ以外には、 Dynamic Window Approach や、 Elastic BandTimed Elastic Band などを使用することができます。

Dynamic Window Approach

Dynamic Window Approach (DWA)は、base_local_plannerパッケージの dwa パラメータを true にすることで使用できます。

Elastic Band

eband_local_plannerをインストールする

sudo apt install ros-kinetic-eband-local-planner

設定ファイルを作る

以下の設定ファイルの内容を、config以下にeband_local_planner_params.yamlとして保存します。

eband_local_plannerのパラメータ一覧は eband_local_plannerのROS Wikiページ にあります。

eband_local_planner_params.yaml
1
2
3
4
5
6
7
8
9
EBandPlannerROS:
  # Goal
  xy_goal_torelance: 0.5

  # Trajectory
  max_vel_lin: 0.2
  max_vel_th: 1.0
  min_vel_lin: -0.2
  min_vel_th: -1.0

move_baseのパラメータを変更する

move_baseがEBandLocalPlannerROSを使うように設定します。 navigation.launchをコピーして新たにeband_navigation.launchを作成します。

<node> タグ内を以下のように変更します。

eband_navigation.launch
<node pkg="move_base" type="move_base" name="move_base">
    <param name="base_local_planner" value="eband_local_planner/EBandPlannerROS" />
    ...
    <rosparam command="load" file="$(find px4_sim_pkg)/config/eband_local_planner_params.yaml"/>
    ...
</node>

Timed Elastic Band

teb_local_plannerをインストールする

sudo apt install ros-kinetic-teb-local-planner

設定ファイルを作る

以下の設定ファイルの内容を、config以下にteb_local_planner_params.yamlとして保存します。

teb_local_plannerのパラメータ一覧は teb_local_plannerのROS Wikiページ にあります。

teb_local_planner_params.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
TebLocalPlannerROS:

 odom_topic: odom
 map_frame: /odom

 # Trajectory
 teb_autosize: True
 dt_ref: 0.2
 dt_hysteresis: 0.1
 global_plan_overwrite_orientation: True
 max_global_plan_lookahead_dist: 3.0
 feasibility_check_no_poses: 5

 # Robot
 max_vel_x: 0.2
 max_vel_x_backwards: 0.2
 max_vel_y: 0.2
 max_vel_theta: 1.0
 acc_lim_x: 2.5
 acc_lim_y: 2.5
 acc_lim_theta: 3.2
 footprint_model:
   type: "polygon"
   vertices: [[0.2, 0.2], [0.2, -0.2], [-0.2, -0.2], [-0.2, 0.2]]

 # GoalTolerance
 xy_goal_tolerance: 0.5

move_baseのパラメータを変更する

move_baseがTebLocalPlannerROSを使うように設定します。 navigation.launchをコピーして新たにteb_navigation.launchを作成します。

<node> タグ内を以下のように変更します。

teb_navigation.launch
<node pkg="move_base" type="move_base" name="move_base">
    <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
    ...
    <rosparam command="load" file="$(find px4_sim_pkg)/config/teb_local_planner_params.yaml"/>
    ...
</node>

参考

Trajectory Rollout

Trajectory Rolloutアルゴリズム

Dynamic Window Approach

DWAアルゴリズム

Elastic Band

Elastic Bandアルゴリズム

Timed Elastic Band

Timed Elastic Bandアルゴリズム。他の論文は GitHubページ を参照

Configure and run Robot Navigation

Timed Elastic Bandをmove_baseで使う

dwa_planner vs. base_local_planner

Dynamic Window ApproachとTrajectory Rolloutの比較

difference between eband_local_planner and teb_local planner

Elastic BandとTimed Elastic Bandの比較