Graceful Controller
시도 하려고 했으나 iron 버전 부터 기본 적으로 설치가 되어 있습니다.
humble 버전에선 테스트 해보지 못했습니다.
하지만 기본 개념은 익힐 수 있습니다.
Github 에서 소스 코드를 참조하세요.
우아한 컨트롤러는 Jong Jin Park과 Benjamin Kuipers의 작업을 기반으로 컨트롤러를 구현합니다. 이 구현은 “A Smooth Control Law for Graceful Motion of Differential Wheeled Mobile Robots in 2D Environment” (ICRA 2011)에서 지수적으로 안정적인 거리에 motion_target 를 설정하여 로봇이 따를 수 있는 부드러운 궤적을 생성합니다.
패키지의 README 에서 자세한 정보를 확인하세요.
Graceful Controller 매개변수
- transform_tolerance
유형
기본값
double
0.1
- 설명
TF 변환 허용 오차 (s).
- motion_target_dist
유형
기본값
double
0.6
- 설명
motion_target 지점을 찾기 위해 사용하는 선보기 거리(m).
- max_robot_pose_search_dist
유형
기본값
double
로컬 코스트맵 최대 범위 (최대(너비, 높이) / 2)
- 설명
로봇 자세에 가장 가까운 자세를 찾기 위한 글로벌 계획을 따라 통합 거리의 상한. 이 값을 변경하지 않아야 할 것입니다. 로컬 코스트맵을 벗어나지 않는 루프와 교차점이 있는 경로가 있는 경우, 이 값을 줄이는 것이 더 빠른 단축을 방지하기 위해 필요할 수 있습니다.
-1로 설정하면 경로의 모든 지점을 최근접 경로 지점을 찾기 위해 검색할 수 있는 최대 거리를 사용합니다.
- k_phi
유형
기본값
double
3.0
- 설명
phi의 변화율에 대한 r의 변화율의 비율. 느린 하위 시스템의 수렴을 제어합니다. 이 값이 0이면 컨트롤러는 순수한 웨이포인트 추종기로 작동합니다. 높은 값은 theta가 r보다 훨씬 빨리 감소하는 자세 추종의 극단적인 시나리오를 제공합니다.
- k_delta
유형
기본값
double
2.0
- 설명
헤딩 오차 피드백에 적용되는 상수 요소. 빠른 하위 시스템의 수렴을 제어합니다. 값이 클수록 로봇은 참조 헤딩으로 더 빨리 수렴합니다.
- beta
유형
기본값
double
0.2
- 설명
경로 곡률에 적용되는 상수 요소. 이 값은 양수여야 합니다. 곡률이 증가할 때 속도가 빠르게 감소하는 속도를 결정합니다.
- lambda
유형
기본값
double
2.0
- 설명
경로 곡률에 적용되는 상수 요소. 이 값은 1보다 크거나 같아야 합니다. 곡선의 날카로움을 결정합니다. lambda 값이 높을수록 곡선이 더 날카로워집니다.
- v_linear_min
유형
기본값
double
0.1
- 설명
최소 선형 속도 (m/s).
- v_linear_max
유형
기본값
double
0.5
- 설명
최대 선형 속도 (m/s).
- v_angular_max
유형
기본값
double
1.0
- 설명
제어 법칙에서 생성되는 최대 각속도 (rad/s).
- slowdown_radius
유형
기본값
double
1.5
- 설명
목표 자세 주변의 반경(m)으로 로봇이 속도를 줄이기 시작합니다.
- initial_rotation
유형
기본값
bool
true
- 설명
경로 시작 전에 목표로 회전을 활성화합니다. 초기 로봇 방향과
k_phi,k_delta에 따라 제어 법칙이 목표 자세로 큰 호를 생성할 수 있습니다.
- initial_rotation_min_angle
유형
기본값
double
0.75
- 설명
initial_rotation이 활성화된 경우 경로 방향과 시작 로봇 방향의 차이를 회전을 시작하기 위한 임계값으로 설정합니다.
- final_rotation
유형
기본값
bool
true
- 설명
initial_rotation과 유사하게, 목표 방향이 경로와 정렬되지 않은 경우 큰 호를 생성할 수 있습니다. 이 값이 활성화된 경우 최종 자세가 무시되고 로봇은 경로의 방향을 따라가며 최종 목표 방향으로 회전합니다.
- rotation_scaling_factor
유형
기본값
double
0.5
- 설명
제자리 회전 속도에 적용되는 스케일링 팩터.
- allow_backward
유형
기본값
bool
false
- 설명
로봇이 후진할 수 있는지 여부.
Example
controller_server:
ros__parameters:
use_sim_time: True
controller_frequency: 20.0
min_x_velocity_threshold: 0.001
min_y_velocity_threshold: 0.5
min_theta_velocity_threshold: 0.001
progress_checker_plugins: ["progress_checker"] # progress_checker_plugin: "progress_checker" For Humble and older
goal_checker_plugins: ["goal_checker"]
controller_plugins: ["FollowPath"]
progress_checker:
plugin: "nav2_controller::SimpleProgressChecker"
required_movement_radius: 0.5
movement_time_allowance: 10.0
goal_checker:
plugin: "nav2_controller::SimpleGoalChecker"
xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.25
stateful: True
FollowPath:
plugin: nav2_graceful_controller::GracefulController
transform_tolerance: 0.1
motion_target_dist: 0.6
initial_rotation: true
initial_rotation_min_angle: 0.75
final_rotation: true
allow_backward: false
k_phi: 3.0
k_delta: 2.0
beta: 0.4
lambda: 2.0
v_linear_min: 0.1
v_linear_max: 1.0
v_angular_max: 5.0
slowdown_radius: 1.5