본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 변수양 #4주차 - SLAM과 내비게이션

반응형

ROS 강의 Chapter11. SLAM과 내비게이션 - YouTube

 

SLAM과 내비게이션 

 

 

1. 길 찾기에 필요한 것

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

- GPS: 오차 발생, 날씨 영향, 실외에서 가능

- indoor positioning sensor ( landmark, indoor GPS, WiFi SLAM, Beacon )

 

- 추측 항법(dead reckoning)

양 바퀴 축의 회적 값 이용

이동 거리와 회전 값을 계산하고 위치 측정

바닥 슬립, 기계적, 누적 오차 발생

IMU 등의 관성 센서, 필터로 위치 보상

칼만필터 시리즈

* 칼만필터

잡음이 포함되어 있는 측정치를 바탕으로 선형 역학계의 상태를 추정하는 재귀 필터

ex)

레이다 추적의 경우 특정 물체의 위치, 속도, 가속도 등을 측정할 수 있지만 이 측정값에 오차가 포함되어 있을 수 있고 이 경우, 연속적으로 측정하는 값들을 칼만 필터를 이용해서 해당 물체의 위치를 추정 가능

 

- 추측 항법의 필요한 정보: 양 바퀴 축의 엔코더 값 E( 모터 축인 경우에 기어비로 재계산 ), 바퀴 간 거리 D, 바퀴 반지름 r 

* 계산 방법 ( 선속도 v, 각속도 w )

Runge-Kutta 공식 이용 ( 이동한 위치의 근사 값 x,y 회전 각 속도 θ

 

 

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

- 거리 센싱: LPF, 초음파 센서, 적외선 거리센서(PSD)

- 비전 센싱: 스테레오 카메라, 모노 카메라, 전 방향 옴니 카메라

- Death camera: SwissRanger, RealSense..

 

 

3) 지도: 길, 장애물 정보가 담긴 지도

 

 

4) 경로: 목적지까지 척척 경로 계산 및 추행 기능 

- 내비게이션

- 위치 추정

- 경로 탐색/ 계획

- DWA

- A* 알고리즘

- 포텐셜 장치

- 파티클 필터

- 그래프

 

 

* 위치 + 센싱 -> 지도  -- SLAM

* 위치 + 센싱 + 지도 -> 경로 -- Navigation

 

2. SLAM

Gmapping

ROS에서 패키지로 제공하는 SLAM의 한 종류

 

- 특징: Rao-Blackwelliwed 파티클 필터, 파티클 수 감소, 맵

- 하드웨어 제약 사항

X,Y,Theta 속도 이동 명령(차동 구동형 모바일 로봇, 전 방향 이동 로봇)

주행기록계

계측 센서: 2차 평면 계측 가능 센서

직사각형 원형 로직 

 

- 위치 추정 : particle Filter

*파티클 필터: 시행 착오법을 기반으로한 시뮬레이션을 통해 예측하는 기술, 대상 시스템에 확률 분포로 임의로 생성된 추정값을 파티클 형태로 나타낸다

1) 초기화

2) 예측

3) 보정

4) 위치추정

5) 재추출

 

- 내비게이션 : dynamic window approach( local plan )

* 내비게이션: 로봇의 속도 탐색 영역에서 로봇과 충졸 가능한 장애물을 회피하면서 목표점까지 빠르게 다다를 수 있는 속도를 선택하는 방법

 

 

실습))))) 지도작성: Gmapping + TurtleBot3

 

패키지 설치 과정에서 계속 error 발생해서 화나서 그냥 넘어갔더니 명령어 입력해도 없는 것을 찾는다는 오류 문구만 떴음

새로운 마음가짐으로 처음부터 다시 시도한 결과 실습을 진행할 수 있게 되었음

 

- 패키지 설치 및 모델 설정 

 

sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy 
sudo apt-get install ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc 
sudo apt-get install ros-noetic-rgbd-launch ros-noetic-rosserial-arduino 
sudo apt-get install ros-noetic-rosserial-python ros-noetic-rosserial-client 
sudo apt-get install ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server 
sudo apt-get install ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro 
sudo apt-get install ros-noetic-compressed-image-transport ros-noetic-rqt ros-noetic-rviz 
sudo apt-get install ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers 
sudo apt-get install 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_make
source ./devel/setup.zsh
echo -e "\nexport TURTLEBOT3_MODEL=waffle" >> ~/.zshrc

 

https://cs-kookmin-club.tistory.com/316 >>>> 참고 했습니당 감사합니당

 

 

https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/#gazebo-simulation

 

ROBOTIS e-Manual

 

emanual.robotis.com

$ cd ~/catkin_ws/src/
$ git clone -b kinetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws && catkin_make
$ export TURTLEBOT3_MODEL=waffle
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

 

 

이 뒤로는 갑자기 실행이 멈추어서 진행하지 못 하였다 계속 공부해야할 부분인 것 같음

 

 

반응형