#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
2차원 점유 격자 지도
- 흰색 = 로봇이 이동 가능한 자유 영역
- 흑색 = 로봇이 이동 불가능한 점유 영역
- 회색 = 확인되지 않은 미지 영역
위치 추정 (localization)
- 칼만 필터 (Kalman filter) : 잡음이 포함되어 있는 선형 시스템에서 대상체의 상태를 추적, 베이즈 확률 기반
- 파티클 필터(Particle Filter) : 시행 착오법을 기반으로한 시뮬레이션을 통하여 예특하는 기술, 대상 시스템에 확률 분포로 임의로 생성된 추정값을 파티클(입자) 형태로 나타낸다(1. 초기화 -> 2, 예측 -> 3, 보정 -> 4, 위치 추정 -> 5. 재추출)
내비게이션: Navigation + TurtleBot3
- Dynamic Window Approach (local plan에서 주로 사용)
- 로봇의 속도 탐색 영역에서 로봇과 충돌 가능한 장애물을 회피하면서 목표점까지 빠르게 다다를 수 있는 속도를 선택하는 방법
- 목적함수 G는 로봇의 방향, 속도, 충돌을 고려하여, 목적함수가 최대가 되는 속도 v, w를 구하게 된다.
#3. TurtleBot3 시뮬레이션 실습
Gazebo 실행후 터틀봇이 나타나는데. $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch 를 입력하면 조종도 가능!
이상으로 4주차 스터디 끝!
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2024 ROS 스터디] 초라핀스카 베로니카 #4주차 - SLAM과 내비게이션 (0) | 2024.07.25 |
---|---|
[2024 ROS 스터디] 곽우인 #4주차 - SLAM과 Navigation (0) | 2024.07.25 |
[2024 ROS 스터디] 반제호 #3주차 - ROS 기본 프로그래밍 (0) | 2024.07.22 |
[2024 ROS 스터디] 김기태 #3주차 - ROS 기본 프로그래밍 (0) | 2024.07.21 |
[2024 ROS 스터디] 초라핀스카 베로니카 #3주차 - ROS 기본 프로그래밍 (0) | 2024.07.18 |