ROBOTIS의 E-Manual을 통해 TURTLEBOT을 사용하여 지도를 작성하고 주행해보는 과정을 진행해봤다는 가정하에 작성한다.
앞에서 TURTLEBOT이 SLAM을 통해 지도를 저장할때 생성되는 pgm 파일과 yaml파일에 대해 살펴봤다.
이번에는 이 파일들을 통해 주행을 하는 과정, 그 중에서도 위치인식(Localization)에 대한 내용을 다룬다.
그럼 Navigation을 수행하기 위해 실행하는 navigation.launch파일부터 다시 살펴보자.
line14의 map_server 노드가 하는 역할은 앞에서 살펴봤다.
그럼 이제 line17의 amcl.launch파일이 하는 역할에 대해 살펴보자.
AMCL, Adopted Monte Carlo Localization 의 약어로 위치인식을 위해 진행되는 particle filter에 대한 내용이다.
우선 amcl.launch 파일을 찾아 내용을 살펴보자.
(여기서 amcl의 런치파일은 turtlebot3_navigation 패키지 안에 들어있다.)
노드의 파라미터들을 살펴보면 해당 노드는 2D Lidar 데이터를 사용하는데 최적화가 되어있는 것으로 예상된다.
그럼 이 노드의 source로 들어가 각각의 파라미터들이 어떤 역할을 하는지, 어떠한 구조를 갖는지 살펴볼 필요가 있다.
우선 source가 무엇인지를 파악하기 위해 CMakeLists를 찾아보자.
(ros-planning/navigation/amcl/CMakeLists.txt)
위의 파일을 통해 amcl 노드가 src/amcl.cpp를 통해 생성됨을 확인할 수 있다.
코드를 분석해보자.
코드가 너무 긴가?
천리길도 한걸음부터.