본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 반제호 #4주차 - SLAM과 내비게이션

반응형

#1. SLAM이란?

SLAM: Simultaneous Localization And Mapping & Navigationㅡ 동시적 위치 추정 및 지도 작성 & 차량 자동 항법 장치

예전엔 해, 달 ,별의 위치와 나침반, 지도를 보며 길을 찾았지

 

로봇의 길찾기

-길 찾기에 필요한 것

 

1. 위치 : 로봇의 위치 계측/추정하는 기능

  • GPS (오차 발생, 날씨 영향, 실외에서 주로 사용)
  • Indoor Positioning Sensor (Landmark, Indoor GPS, WiFi SLAM, Beacon)
  • 추측 항법 (양 바퀴 축의 회전 값을 이용), 데드레커닝 계산, Runge-Kutta 공식 이용

2. 센싱 : 벽, 물체 등의 장애물의 계측하는 기능

  • 거리센서 (LRF, 초음파센서)
  • 비전센서 (스테레오 카메라, 모노 카메라)
  • Depth camera (SwissRanger, Kinect-2)

3. 지도 : 길과 장애물 정보가 담긴 지도 - 길을 찾아가기 위해 지도가 필요, SLAM이 지도를 만드는 과정

 

4. 경로 : 목적지까지 최적 경로를 계산하고 주행하는 기능

  • 내비게이션, 위치 추정, 경로 탐색/계획
  • Dynamic Window Approach, A* 알고리즘, 포텐셜 장

 

#2. SLAM - Gmapping

-OpenSLAM에 공개된 SLAM의 한 종류, ROS에서 패키지로 제공

-하드웨어 제약 사항 ( X, Y, Theta 속도 이동 명령, 주행기록계, 계측 센서)

 

*지도작성 : Gmapping + TurtleBot3

소프트웨어 준비, Turtlebot3 패키지

 

1. 마스터 실행

 

2. 터틀봇 실행 및 센서 구동

$ export TURTLEBOT3_MODEL=burger (또는 waffle, waffle_pi)

$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

 

3. • RViz, 터틀봇 원격 조종, 지도 작성

$ export TURTLEBOT3_MODEL=burger (또는 waffle, waffle_pi)

$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

$ rosrun map_server map_saver -f ~/map

Gmapping + Turtlebot3

 

완성된 지도

2차원 점유 격자 지도

  • 흰색 = 로봇이 이동 가능한 자유 영역
  • 흑색 = 로봇이 이동 불가능한 점유 영역
  • 회색 = 확인되지 않은 미지 영역

 

SLAM 관련 노드들의 처리 과정

 

위치 추정 (localization)

  • 칼만 필터 (Kalman filter) : 잡음이 포함되어 있는 선형 시스템에서 대상체의 상태를 추적, 베이즈 확률 기반
  • 파티클 필터(Particle Filter) : 시행 착오법을 기반으로한 시뮬레이션을 통하여 예특하는 기술, 대상 시스템에 확률 분포로 임의로 생성된 추정값을 파티클(입자) 형태로 나타낸다(1. 초기화 -> 2, 예측 -> 3, 보정 -> 4, 위치 추정 -> 5. 재추출)

내비게이션: Navigation + TurtleBot3

  • Dynamic Window Approach (local plan에서 주로 사용)
  • 로봇의 속도 탐색 영역에서 로봇과 충돌 가능한 장애물을 회피하면서 목표점까지 빠르게 다다를 수 있는 속도를 선택하는 방법

  • 목적함수 G는 로봇의 방향, 속도, 충돌을 고려하여, 목적함수가 최대가 되는 속도 v, w를 구하게 된다.

#3. TurtleBot3 시뮬레이션 실습

Gazebo 실행

Gazebo 실행후 터틀봇이 나타나는데. $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch 를 입력하면 조종도 가능!

 

조그만 로봇 조종 중..

이상으로 4주차 스터디 끝!

반응형