move_baseのローカルプランナーを変更する¶
このページではmove_baseのローカルプランナーを変更する方法について扱います。
move_baseのローカルプランナーは、デフォルトでは Trajectory Rollout が使用されています。 それ以外には、 Dynamic Window Approach や、 Elastic Band 、 Timed 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ページ にあります。
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> タグ内を以下のように変更します。
<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ページ にあります。
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> タグ内を以下のように変更します。
<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の比較