Language
Cartographer(카르토그래퍼)는 구글에서 개발한 SLAM 라이브러리입니다.
카르토그래퍼는 다양한 플랫폼과 센서(라이다이든 카메라 비젼이든)구성에서 2D 및 3D 환경의 SLAM을 “실시간“으로 제공합니다.
카르토그래퍼는 독립적인(Standalone) C++ 라이브러리로서 ROS를 위한 바이너리 패키지를 제공하므로 apt 명령어를 사용하여 간단하게 설치할 수 있습니다.
패키지 이름은 ros-패키지버전-cartographer-ros 입니다.
$ sudo apt install ros-melodic-cartographer-ros
먼저 mapping 을 위해 cartographer 노드를 띄웁니다. 이 과정을 수행하기 위해 총 5개의 터미널이 필요합니다.
아래 와면에서 좌측이 HOST PC, 우측이 ROBOT PC입니다.
roscore를 띄우고 로봇을 구동하기 위한 omo_r1mini_robot.launch 그리고 cartographer를 차례대로 띄워줍니다.
hostpc:~$ roscore r1mini:~$ roslaunch omo_r1mini_bringup omo_r1mini_robot.launch r1mini:~$ roslaunch omo_r1mini_cartographer omo_r1mini_cartographer.launch
그리고 rviz를 띄우기 위해 HOST PC에서 다음을 입력하면
hostpc:~$ roslaunch omo_r1mini_cartographer omo_r1mini_cartographer_rviz.launch
다음과 같은 rviz 화면이 뜨면서 지도가 보이기 시작합니다.
이제 로봇을 움직여야겠죠?
마지막으로 HOST PC에서 omo_r1mini_teleop_key.launch 를 띄워서 로봇을 이리저리 움직여봅니다.
hostpc:~$ roslaunch omo_r1mini_teleop omo_r1mini_teleop_key.launch
그러면 이렇게 지도가 생성이 됩니다.
앞서의 gmapping과의 차이점이라면 지도의 생성이 좀더 빠르고 부드럽다는 점입니다.
cartographer에서 생성된 지도를 고정된 지도(pgm 파일 형식, Fixed)로 만들거나 확장 가능한 지도 (pbstream)로 저장할 수 있습니다. cartographer 네비게이션을 사용하기 위해서는 pbstream으로 저장합니다.
마찬가지로 지도 생성이 완료되었으면 맵을 저장할 폴더로 이동하여 map_server 명령어로 map을 저장합니다.
$ cd to map folder $ rosrun map_server map_saver -f map [ INFO] [1636677468.897507631]: Waiting for the map [ INFO] [1636677469.185146437]: Received a 336 X 244 map @ 0.050 m/pix [ INFO] [1636677469.185166480]: Writing map occupancy data to map.pgm [ INFO] [1636677469.186564869]: Writing map occupancy data to map.yaml [ INFO] [1636677469.186609286]: Done
그러면 map.pgm 파일과 map.yaml 파일이 생성이 됩니다.
이 파일을 사용하여 navigation을 수행할 수 있습니다.
cartographer SLAM이 실행중인 상태에서 ~/catin_ws/src/omo_r1mini/omo_r1mini_cartographer/scripts 안에 save_pbstream.sh 를 실행합니다.
r1mini:~$ ./catkin_ws/src/omo_r1mini/omo_r1mini_cartographer/scripts/save_pbstream.sh status: code: 0 message: "Finished trajectory 0." status: code: 0 message: "State written to '/home/r1mini/Downloads/map.pbstream'." Map saved to /home/r1mini/Downloads/map.pbstream
이제 map.pbstream 이라는 파일이 HOME/Downloads 안에 저장되었습니다.
이 파일을 omo_r1mini_navigation2/maps 로 복사합니다.
r1mini:~$ cd Downloads/ r1mini:~/Downloads$ cp map.pbstream ~/catkin_ws/src/omo_r1mini/omo_r1mini_navigation2/maps/
다음 동영상은 지금까지 수행한 과정을 정리한 것입니다.