[ROS] gMapping SLAM 실습

HEEJOON MOON·2023년 1월 9일
0

ROS

목록 보기
3/5
post-thumbnail

이번 포스트에서는 gMapping SLAM을 가제보 시뮬레이션에서 실습하는 포스트입니다.

먼저 gMapping SLAM Package의 pipeline을 살펴보겠습니다

1) Sensor 노드에서는 observation(ztz_{t})값을 측정합니다
2) 다음으로는 turtlebot_teleop에서 전달되는 velocity값이 odometry로 사용되게 됩니다.

즉 Odometry measurement와 Scan Observation을 이용하여 현재의 포즈를 추정하고, grid map을 만들게 됩니다.

Procedure

1) Install Turtlebot3 Simulation Package for Gazebo
: 먼저 turtlebot3 simulation 패키지를 다운 받습니다.

$  ~/catkin_ws/src/ 
$  git clone -b kinetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git 
$  ~/catkin_ws && catkin_make 

2) Run roscore

$ roscore

3) 가제보 시뮬레이터를 실행시킵니다. 이 때, 서로 다른 세계의 시뮬레이션 맵을 선택할 수 있습니다. 또한 터틀봇 모델을 'waffle_pi' 혹은 'burger' 중 하나로 선택할 수 있습니다

  • Empty World
$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch 
  • Turtlebot3 World
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch 
  • Turtlebot3 House
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch 

4) gMapping SLAM 노드를 실행시킵니다. 기본적으로 gMapping SLAM 패키지는 turtlebot simulation 패키지 안에 포함되어 있으나, 아래의 커맨드를 이용하여 설치합니다.

# install gMapping SLAM package
$ sudo apt-get install ros-kinetic-slam-gmapping 
  • Run gMapping SLAM node
$ export TURTLEBOT3_MODEL=waffle_pi
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping 

5) Rviz를 실행시켜 update되는 grid-map을 살펴봅니다. 또한 Teleoperation Node를 실행시켜서 터틀봇은 unknown area로 이동시키면서 map을 업데이트 합니다

  • Teleoperation command
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch 

6) 만들어진 맵을 저정할 수 있습니다.

  • Save map
$ rosrun map_server map_saver -f ~/map 
profile
Robotics, 3D-Vision, Deep-Learning에 관심이 있습니다

0개의 댓글