gmapping 사용하여 SLAM하기

해당 페이지는 일부 수정될 수 있습니다.

GMAPPING #

omo_r1mini_slam 패키지로 map 만들기 #

  1. 로봇을 시작 위치에 놓고 전원을 켭니다.

2. [내 PC] 먼저 roscore를 실행합니다.

hostpc:$ roscore

3. [로봇] 새로운 터미널을 열고 로봇에 ssh로 접속하여 omo_r1mini_bringup 패키지의 omo_r1mini_robot.launch 를 실행합니다. 이 파일은 r1mini_bringup.launch와 r1mini_lidar를 동시에 실행합니다.

hostpc:$ ssh r1mini@<ROBOT_IP>
r1mini:$ roslaunch omo_r1mini_bringup omo_r1mini_robot.launch

4. [로봇] 새로운 터미널을 열고 ssh로 로봇에 한 번 더 접속하여 omo_r1mini_slam 패키지의 omo_r1mini_slam.launch 을 실행합니다. (이 파일은 r1mini_description과 gmapping 패키지를 실행합니다.)

hostpc:$ ssh r1mini@<ROBOT_IP>
r1mini:$ roslaunch omo_r1mini_slam omo_r1mini_slam.launch

5. [내 PC] 새로운 터미널에서 omo_r1mini_slam 패키지의 omo_r1mini_slam_rviz.launch 를 실행해줍니다.

hostpc:$ roslaunch omo_r1mini_slam omo_r1mini_slam_rviz.launch

그러면 아래 그림과 같이 rviz가 뜨고 로봇과 Lidar 데이터가 표시됩니다.

6. [내 PC] 새 터미널을 열고 omo_r1mini_teleop 패키지의 omo_r1mini_teleop_key.launch 를 실행합니다.

hostpc:$ roslaunch omo_r1mini_teleop omo_r1mini_teleop_key.launch

7. [내 PC] 키보드의 w,a,s,d,x키를 눌러 로봇을 천천히 움직여보면 RVIZ에서 map이 만들어집니다.

8. 구석구석 이동하여 맵이 어느정도 완성이 되면 map을 저장할 준비가 됩니다.

map 저장하기 #

9. 새로운 터미널을 열고 map_server node의 “map_saver -f <맵 이름>” 명령으로 맵을 저장합니다.
로봇에 map을 저장하기 위해 ssh로 접속하여 로봇에서 입력합니다.

hostpc:$ ssh r1mini@<로봇 IP>
r1mini:$ rosrun map_server map_saver -f map

이제 로봇의 home 디렉토리에 map.pgm과 map.yaml 파일이 생성됩니다.

만약 map을 다른 이름으로 저장하고자 하면 omo_r1mini_navigation 패키지의 omo_r1mini_navigation.launch 파일에서 map.yaml 파일의 경로를 해당 이름으로 변경하여야 합니다.

10. 이제 Ctrl+c 키를 눌러 터미널에서 실행 중인 모든 노드를 중단합니다.

map을 omo_r1mini_navigation에 복사 #

[로봇] 방금 생성된 map.pgm 파일과 map.yaml 파일을 omo_r1mini_navigation 패키지의 maps 폴더에 복사하기 위해 다음과 같이 입력합니다.

r1mini:$ cp map.* catkin_ws/src/omo_r1mini/omo_r1mini_navigation/maps

다음은 위 과정을 동영상으로 정리한 것입니다.

omo_r1mini_navigation 패키지로 SLAM navigation하기 #

  1. 로봇을 시작점으로 이동시킵니다. (반드시 시작점일 필요는 없습니다.)
  2. 내 PC에서 roscore를 실행하고
  3. 로봇을 불러오기 위해 로봇에서 omo_r1mini_bringup 패키지의 omo_r1mini_robot.launch를 실행합니다.
r1mini:$ roslaunch omo_r1mini_bringup omo_r1mini_robot.launch

4. 이번에는 omo_r1mini_navigation 패키지의 omo_r1mini_navigation.launch를 실행합니다.
이 launch 파일은 amcl 과 move_base 패키지를 실행하여 Planning과 Execution을 수행합니다.

r1mini:$ roslaunch omo_r1mini_navigation omo_r1mini_navigation.launch

5. [내 PC] omo_r1mini_navigation 패키지의 omo_r1mini_navigation_rviz.launch를 실행합니다.

hostpc:$ roslaunch omo_r1mini_navigation omo_r1mini_navigation_rviz.launch

그러면 rviz에서 아래 그림과 같이 이전에 저장한 맵과 함께 Lidar에서 들어온 장애물이 표시되는 것을 확인할 수 있습니다.

6. RVIZ의 상단 메뉴에서 “2D Pose Estimate“버튼을 클릭한 다음 맵에서 로봇이 실제로 위치하고 있는 장소에 마우스를 클릭하고,

방향을 설정하기 위해 Drag 해줍니다.

7. 이제 목표점 이동을 위해 상단 메뉴의 “2D Nav Goal”버튼을 선택하고 목표 지점을 클릭 한 다음 Drag 하여 방향을 지정합니다.

7. 그러면 로봇이 스스로 목표 지점까지 가는 것을 확인할 수 있습니다.