AMCL
Monte Carlo Localization 알고리즘을 기반하여 로봇의 위치 추정
라이다센서의 데이터를 사용하여 로봇의 위치를 추정.
라이다 파티클로 주변의 장애물에 대한 거리 및 방향정보로 위치를 추정.
파티클 필터는 가상 파티클을 만들어 위치 확률 분포를 추정.
현재의 센서 데이터와 비교해서 가장 일치하는 파티클로 로봇의 위치를 추정.
AMCL Parameter
alpha1: 로봇의 회전 운동 모델에 대한 노이즈. 로봇이 회전할 때 예측 오차. 값이 높을수록 노이즈 큼.
alpha2: 로봇의 직진 운동 모델이 대한 노이즈. 로봇이 직진할 때 예측 오차. 값이 높을수록 노이즈 큼.
alpha3: 로봇의 회전 운동 모델에 대한 노이즈. 로봇이 회전할 때 측정된 회전량에 대한 오차. 값이 클수록 노이즈 큼.
alpha4: 로봇의 직진 운동 모델에 대한 노이즈. 로봇이 직진할 때 측정된 이동량에 대한 오차. 값이 클수록 노이즈 큼.
alpha5: 로봇의 회전 운동 모델에 대한 노이즈. 로봇이 회전할 때 측정된 화전량에 대한 비선형성. 값이 클수록 노이즈 큼.
AMCL은 라이다 센서를 이용하여 위치를 추정한다.
많은 양의 데이터가 유입되므로 계산비용이 크다.
빔 스킴은 로봇의 이동거리에 비례하여 일부 센서데이터를 건너 뛰고 처리한다.
로봇이 일정 거리 이상으로 이동할 때만 라이다 데이터를 사용하고 그 외의 경우는 데이터 처리를 건너뛰어서 계산비용 절감.
따라서 시스템 자원을 얼마나 효율적으로 사용하느냐를 결정하는 파라미터이다.
beam_skip_distance: {거리} 이 거리 이상의 이동이 감지되면 빔 스킵을 활성화
beam_skip_error_threshold: {임계값} 로봇의 예상 이동과 실제 이동 사이의 오차가 임계값을 초과하면 빔 스킵을 활성화.
beam_skip_threshold: {임계값} 빔 스킵을 적용할 빔의 신뢰도 임계값. 신뢰도가 임계값보다 작으면 해당 빔 스킵.
do_beamskip: {bool} 빔 스킵을 활성화 할지 플래그. true or false.
이 파라미터는 로봇마다 다른 라이다 센서의 하드웨어 스펙에 따라 달라지므로 중요하다.
단위는 m이다.
laser_likelihood_max_dist: {거리} 이 거리보다 먼 라이다 데이터는 위치추정에 사용하지 않는다.
laser_max_range: {거리} 라이다 센서가 감지할 수 있는 최대 거리.
laser_min_range: {거리} 라이다 센서가 감지할 수 있는 최소 거리.
laser_model_type: {'"likelihood_field"' or '"beam"'}. likelihood_field는 확률필드를 바탕으로 로봇 위치 추정. beam은 레이저빔의 거리 데이터를 직접 사용하여 위치 추정.
입자수를 증가시키면 로봇의 위치 추정이 더 정확해지나 계산비용이 증가.
입자수를 감소시키면 로봇의 위치 추정의 정확도 감소하나 계산비용이 낮아짐.
빔이란 라이다 센서에서 출력하는 레이저 빔의 개념.
입자란 로봇의 가능한 위치를 대표하는 작은 구성 요소들로써 위치와 방향정보 포함.
아마도 입자는 파티클 필터 알고리즘에서 나온 용어같다.
max_beams: AMCL이 사용하는 레이저 데이터의 최대 빔 수.
max_particles: AMCL이 사용하는 최대 입자 수. 파티클 필터 기반으로 로봇의 위치를 추정하는데, 입자의 수를 제한 가능하다.
min_particles: AMCL이 사용하는 최소 입자 수.
pf_err: 입자 필터의 위치추정 오차. 낮으면 위치 추정 정확도 높아지긴 하나 계산비용도 높아짐
pf_z: 입자필터의 재샘플링 가중치. 높은 값일수록 입자 중요도에 따른 재샘플링이 더 강조됨.
recovery_alpha_fast: 빠른 회복 모드에서 사용하는 값. 회복 모드는 위치 추정에 문제가 있을 때 로봇이 회복하는 방법을 지정.
recovery_alpha_slow: 느린 회복 모드에서 사용하는 회복 알파 값.
resample_interval: 입자에서 재 샘플링을 수행하는 간격.
robot_model_type: 로봇 모델 유형 지정.
save_pose_rate: 로봇 위치추정 결과를 저장하는 비율.
sigma_hit: 레이저 스캐너에서의 측정값과 예상값 사이의 표준 편차.
tf_broadcast: 위치 추정 결과를 TF메세지로 전송할지 여부.
transform_tolerance: TF 변환에 대한 허용 오차.
update_min_a: 로봇의 각도 변화가 일정 값보다 큰 경우 위치 추정 수행.
updage_min_d: 로봇의 이동변화가 일정 값보다 큰 경우 위치 추정을 수행.
z_hit, z_max, z_rand, z_short: 레이저 모델의 가중치에 사용되는 값.
amcl:
ros__parameters:
use_sim_time: True
alpha1: 0.1
alpha2: 0.1
alpha3: 0.1
alpha4: 0.1
alpha5: 0.1
base_frame_id: "base_footprint"
beam_skip_distance: 0.5
beam_skip_error_threshold: 0.9
beam_skip_threshold: 0.3
do_beamskip: false
global_frame_id: "map"
lambda_short: 0.1
laser_likelihood_max_dist: 2.0
laser_max_range: 100.0
laser_min_range: -1.0
laser_model_type: "likelihood_field"
max_beams: 60
max_particles: 2000
min_particles: 500
odom_frame_id: "odom"
pf_err: 0.05
pf_z: 0.99
recovery_alpha_fast: 0.0
recovery_alpha_slow: 0.0
resample_interval: 1
robot_model_type: "differential"
save_pose_rate: 0.5
sigma_hit: 0.2
tf_broadcast: true
transform_tolerance: 1.0
update_min_a: 0.2
update_min_d: 0.25
z_hit: 0.5
z_max: 0.05
z_rand: 0.5
z_short: 0.05
scan_topic: scan
'ROS' 카테고리의 다른 글
[ROS1] C++ 패키지 관련 오류 정리 (1) | 2024.01.31 |
---|---|
[ROS] VINS-Mono_Melodic Build (0) | 2023.10.22 |
[ROS1] VINS-Mono 진행하며 얻은 점 (0) | 2023.10.19 |
[Docker] docker : You don't have enough free space in /var/cache/apt/archives/. (0) | 2023.10.16 |