ROS

[ROS noetic] AMCL(Adaptive Monte Carlo localization) 알고리즘 설명

녕집사 2022. 1. 18. 02:15
반응형

로봇이 움질일 때 경로만 가지고는 로봇이 제대로 움직일 수 없습니다.

로봇이 움직이면서 현재의 위치를 알면서 경로를 탐색해야 비로소 제대로된 길을 찾아갈 수 있습니다.

이를 위해서 AMCL 알고리즘을 통해 로봇이 지도상에서 현재 위치를 알아내는 방법을 간략하게 설명드리겠습니다.


AMCL(Adaptive Monte Carlo localization) 이란?
  • paricle filter를 통해 위치를 파악하는 알고리즘
  • 이동을 하면서 주변 환경을 라이다 센서, 초음파 센서 등 복합적인 센서를 통해 현재 위치를 파악함.

 

※ Particla filter 적용 방식

  1. Re-sampling - 중요도 가중치를 통해 정의된 분포에 따라 무작위로 샘플 추출
  2. Sampling
  3. Importance Sampling
github 코드 분석 // https://github.com/ros-planning/navigation/tree/noetic-devel/amcl
- cfg: configure
- src=>amcl=>sensor (amcl_laser.cpp, amcl_odom.cpp, amcl_sensor.cpp) // pf: particle filter

 

amcl scan := base_scan

 

※ Topic, Service, TF 정리

 

  1. Subscribed Topics
    • Scan (sensor_msgs / LaserScan)
    • tf (tf / Message)
    • initialpose (geometry_msgs / PoseWithCovarianceStamped)
    • map (nav_msgs / OccupancyGrid)
  2. Published Topics 
    • amcl_pose (geometry_msgs / PoseWithCovarianceStamped)
    • pariclecloud (goemety_msgs / PoseArray)
    • tf (tf / Message)
  3. Services
    • global_localization (std_srvs / Empty)
    • request_nomotion_update (std_srvs / Empty)
    • set_map (nav_msgs / SetMap)
  4. TF

 

반응형