[Navigation 2]8. Tuning Guide

maroo·2022년 9월 9일
1

ROS2

목록 보기
38/39
post-custom-banner

navigation system tuning을 위한 guide

-configuration guide: Nav2의 모든 parameter 목록
-tuning guide: 시스템 조정에 유용한 중요 parameter

Inflation Potential Fields

inflation layer의 활용법
basic
벽을 부풀려 중요한 collosion에 가중치를 부여하는 기능

inflation radius = 0.55, cost scaling factor = 5.0(steep inflation curve)

tip
전체 map에 지속적인 potential field를 만드는 것

-공간 중앙에 머물면서 가까운 장애물에 더 잘 대처하기 위해
-inflation layer의 parameter 중 cost scale, radius를 늘리는 게 좋다.
-inflation radius: 장애물에서 0-cost point가 얼마나 먼지
-cost scaling factor: cell의 cost에 반비례

inflation radius = 1.75, cost scaling factor = 2.58(gentle inflation curve)

Robot Footprint VS Radius

Nav2는 2가지 방법으로 robot의 shape을 결정한다.
footprint

-footprint: robot의 contour(위에서 본 모습)
-robot이 원형이 아닌 경우 footprint 사용
-더 좁은 공간으로 trajectory를 plan 가능
-예를 들어, 얇고 긴 shape의 robot이라면 둘레로 원을 그리는 것보다 footprint가 나음

robot_radius
-robot이 원형일 경우 radius 사용
-또는, robot이 아주 작을 때/계산 능력이 제한되어 있을 때(circle보다 contour가 계산 부담 큼)/holonomic planner를 사용할 경우 robot이 non-circular일 때도 radius사용

Rotate in Place Behavior

rotation shim controller를 사용하면, robot이 path를 track하기 전 제자리에서 회전을 한다.
robot의 초기 방향과 경로 방향이 크게 다르면 robot이 휘청거리거나 어색한 동작을 보일 수 있다.
controller가 tracking을 시작할 수 있는 더 나은 시작 지점을 제공하면 controller를 더 쉽게 tuning할 수 있다.
예를 들어 현재 robot이 향하고 있는 곳과 정반대 쪽으로 진행해야 한다면 tracking하기 전 rotation을 하는 것이 좋을 것이다.

Planner Plugin Selection

각 robot base에 따라 최적의 planning plugin이 다르다.

-non-circular robot: holonomic planner 사용
-circular robot: 응용에 따라 3가지로 나뉨. 넓고 광범위한 curve를 그릴 경우 NavFn, 직선일 경우 Theta, 전통적 A*알고리즘인 Smac 2D

Controller Plugin Selection

각 robot base에 따라 최적의 controller plugin이 다르다.

DWB(DWA, dynamic window approach에서 변경된 것)
-critic을 세워 여러 경로를 점수매김으로서 dynamic 장애물 회피
-critic: minimizing path distance, minimizing distance to the goal 등
-Rotation Shim Plugin의 assist
TEB(timed elastic band)
-시간, 장애물, 역학적인 제약 등을 고려해 최적의 경로를 만듦
-compute cost 높음
-Rotation Shim Plugin의 assist
RPP(Regulated Pure Pursuit)
-circular shape, 이외 모든 shape에 사용 가능
-일반적으로 물리적 제약 조건이 엄격히 주어진 planner와 함께 사용
-dynamic 장애물 회피 없이 정확히 경로를 따라가는 것이 목표일 경우 사용

Caching Obstacle Heuristic in Smac Planners

cache_obstacle_heuristic
-Smac의 Hybrid-A* planner, State Lattice Planner에서 제공하는 option
-동일한 목표 pose로의 replanning에 사용할 heuristic을 cache해 놓음으로서 planner의 속도 증가시킴
-obstacle heuristic: robot을 중앙으로 이동시키고, 유효한 solution을 만듦
-어디로 갈지 planner를 최적화시키는 cost를 고려한 2D serach
-막힌 곳이나 장애물을 향해 움직이게 할 수 있다는 단점
-크고 정적인 환경에서 단일 목표를 향해 움직일 때 적합

(Getting started)
$ ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False

nav2_bringup
basis of navigation launch system

tb3_simulation_launch.py
main file used for simulating the robot

slam
localization과 mapping에 AMCL/SLAM을 사용할지 여부(Default=False)

map
navigation에 사용할 map 파일의 경로(Default=maps/map.yaml)

world
simulation에 사용할 world 파일의 경로(Default=worlds/)

param_file
main navigation configuration file 경로(Default=params/nav2_params.yaml)

autostart
navigation system의 lifecycle management system을 자동으로 시작할지 여부(Default=true)

use_composition
-single node에 각각 Nav2 server를 launch할지 여부(Default=true)

use_respawn
crash server가 자동으로 재시작할지 허락 여부

use_sim_time
node들이 simulation time을 쓰드록 설정할지 여부(Default=true)

rviz_config_file
rviz configuration file 경로(Default=rviz/)

use_simulator
Nav2 stack 실행시 gazebo를 실행할지 여부(Default=true)

use_robot_state_pub
robot의 TF2로의 URDF transformation을 publish할지 여부(Default=True)

use_rviz
rviz를 launch할지 여부(Default=true)

headless
gazebo background와 나란히 gazebo front-end를 launch할지 여부(Default=true)

namespace
robot을 launch할 namespace

use_namespace
namespace안에서 robot을 launch할지 여부(Default=false)

robot_name
launch할 robot 이름

robot_sdf
robot의 gazebo configuration file(gazebo plugin, robot system setup) 경로

x_pose
y_pose
z_pose
roll
pitch
yaw
robot의 초기 위치 parameter

profile
할수이따 ~
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 4월 24일

안녕하세요. 현재 자율주행 로봇의 SLAM 알고리즘을 개발하는 업무를 하고 있는 개발자입니다.
ROS2 navigation2에서 파라미터 튜닝하는 방법을 상세하게 정리해주셔서 감사합니다~!

블로그의 다른 글들을 살펴보니 로봇개발에 사용되는 기술에 대해 공부하신 것 같아 학습 경험에 대한 간단한 대화(30~40분)를 나누고 싶어 이메일을 남깁니다.

이메일: samwoose@gmail.com

LinkedIn profile: https://www.linkedin.com/in/samwoo-seong-037438170/

오늘도 좋은 하루 보내세요!

답글 달기