이번 포스트에서는 graph SLAM의 대표적인 예제인 Karto SLAM을 가제보 시뮬레이션에서 실습하는 포스트입니다. 이 외에도 잘 알려진 graph SLAM으로는 Cartographer가 있습니다. 실제로 아래의 논문에서 발췌한 내용으로, 언급한 두가지 SLAM 알고지즘이 대표적인 것을 알 수 있습니다.
1) Roscore 실행
$ roscore
2) 가제보 시뮬레이터를 실행시킵니다. 이 때, 서로 다른 세계의 시뮬레이션 맵을 선택할 수 있습니다. 또한 터틀봇 모델을 'waffle_pi' 혹은 'burger' 중 하나로 선택할 수 있습니다
$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch
3) Karto SLAM 노드를 실행시킵니다. 기본적으로 Karto SLAM 패키지는 turtlebot simulation 패키지 안에 포함되어 있으나, 아래의 커맨드를 이용하여 설치합니다.
# install gMapping SLAM package
$ sudo apt-get install ros-kinetic-slam-gmapping
$ export TURTLEBOT3_MODEL=waffle_pi
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=karto
4) Rviz를 실행시켜 update되는 grid-map을 살펴봅니다. 또한 Teleoperation Node를 실행시켜서 터틀봇은 unknown area로 이동시키면서 map을 업데이트 합니다
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
5) 만들어진 맵을 저정할 수 있습니다.
$ rosrun map_server map_saver -f ~/map