반응형
SLAM (Simultaneous Localization And Mapping) & Navigation
SLAM (로봇의 길 찾기)
길 찾기에 필요한 것:
- 위치: 로봇의 위치 계측/추정하는 기능
- 센싱: 벽, 물체 등의 장애물의 계측하는 기능
- 지도: 길과 장애물 정보가 담긴 지도
- 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능
1. 위치: 로봇의 위치 계측/추정하는 기능
- GPS (Global Positioning System)
단점:
오차 - 수 미터의 오차 생길 수 있음
날씨
실외 - 실외에서만 사용 가능 - Indoor Positioning Sensor
- Landmark (Color, IR Camera)
- Indoor GPS
- WiFi SLAM
- Beacon - 추측 항법(dead reckoning, 데드레커닝)
- 양 바퀴 축의 회전 값으로 이동 거리와 회전 값을 계산하여 위치 측정
- 필요한 정보: 양 바퀴 축의 엔코더 값 E, 바퀴 간 거리 D, 바퀴 반지름 r
- 데드레커닝 계산
- Runge-Kutta 공식 이용
2. 센싱: 벽, 물체 등의 장애물의 계측하는 기능
- 거리센서 - LRF, 초음파센서, 적외선 거리센서(PSD)
- 비전센서 - 스테레오 카메라, 모노 카메라, 전 방향 옴니 카메라
- Depth camera - SwissRanger, Kinect-2, RealSense, Kinect, Xtion, Carmine(PrimeSense), Astra
3. 지도: 길과 장애물 정보가 담긴 지도
지도 없으면 SLAM으로 만들면 된다
4. 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능
- 내비게이션(Navigation)
- 위치 추정 (Localization / Pose estimation)
- 경로 탐색/계획 (Path search and planning)
- Dynamic Window Approach (DWA)
- A* 알고리즘 (A Star
- 포텐셜 장(Potential Field)
- 파티클 필터 (Particle Filter)
- 그래프 (Graph)
SLAM
- Gmapping
- OpenSLAM에 공개된 SLAM의 한 종류, ROS에서 패키지로 제공
- 특징: Rao-Blackwellized 파티클 필터, 파티클 수 감소, 그리드 맵
- 하드웨어 제약 사항 :
- X, Y, Theta 속도 이동 명령,
- 주행기록계 (Odometry),
- 계측 센서: 2차 평면 계측 가능 센서( LRF, LiDAR, Kinect, Xtion 등)
- 지도작성: Gmapping + TurtleBot3
2차원 점유 격자 지도
(OGM, Occupancy Grid Map)
• 흰색 = 로봇이 이동 가능한 자유 영역 (free area)
• 흑색 = 로봇이 이동 불가능한 점유 영역 (occupied area)
• 회색 = 확인되지 않은 미지 영역 (unknown area) Gmapping
- SLAM 관련 노드들의 처리 과정
- sensor_node
- turtlebot3_teleop
- turtlebot3_core
- slam_gmapping
- map_server
- 위치 추정(localization)
- 칼만 필터 (Kalman filter)
- 잡음이 포함되어 있는 선형 시스템에서 대상체의 상태를 추적하는 재귀 필터
- 베이즈 확률 기반
- 예측(Prediction)
- 보정(update)
- 파티클 필터(Particle Filter) - 파티클 필터는 시행착오(try-and-error) 법을 기반으로 한 시뮬레이션을 통하여 예측하는 기술로 대상 시스템에 확률 분포로 임의로 생성된 추정값을 파티클(입자) 형태로 나타낸다.
- 초기화(initialization)
- 예측(prediction)
- 보정(update)
- 위치 추정(pose estimation)
- 재추출(Resampling)
- 칼만 필터 (Kalman filter)
내비게이션
- Dynamic Window Approach - 로봇의 속도 탐색 영역(velocity search space)에서 로봇과 충돌 가능한 장애물을 피하면서 목표점까지 빠르게 다다를 수 있는 속도를 선택하는 방법
실습
- 기본 설치 패키지 ( [http://turtlebot3.robotis.com](http://turtlebot3.robotis.com/) 참조)
$ sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \
ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc \
ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \
ros-noetic-rosserial-python ros-noetic-rosserial-client \
ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server \
ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro \
ros-noetic-compressed-image-transport ros-noetic-rqt ros-noetic-rviz \
ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers \
ros-noetic-turtlebot3-msgs ros-noetic-turtlebot3
$ cd ~/catkin_ws/src
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws && catkin_make
- 가상 SLAM with Gazebo
$ export TURTLEBOT3_MODEL=waffle
Gazebo 실행한다
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
터틀봇 원격 조종한다
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Rviz 실행한다
$ roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch
SLAM 실행한다
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
거북이를 움지기면서 SLAM으로 지도를 완성한다
완성된 지도를 저장한다
$ rosrun map_server map_saver -f ~/map
내비게이션 실행한다
$ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
2D Pose Estimate에서 거북이 위치와 방향을 설정한다
2D Nav Goal 위치와 방향을 선택하면 거북이가 그 목적지로 이동한다
반응형
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2024 ROS 스터디] <김예원> #2주차 -<ROS 용어 정리 및 명령어> (2) | 2024.09.05 |
---|---|
[2024 ROS 스터디] <김예원> #1주차 - <ROS 소개 > (0) | 2024.09.05 |
[2024 ROS 스터디] 곽우인 #4주차 - SLAM과 Navigation (0) | 2024.07.25 |
[2024 ROS 스터디] 반제호 #4주차 - SLAM과 내비게이션 (0) | 2024.07.25 |
[2024 ROS 스터디] 반제호 #3주차 - ROS 기본 프로그래밍 (0) | 2024.07.22 |