본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 황희찬 #4주차 - SLAM과 내비게이션

반응형

1. SLAM & Navigation 이란?

SLAM(simultaneous Loclization And Mapping)은 동시적 위치 추정 및 지도 작성을 의미한다. 즉, 자신이 위치한 곳을 알면서 동시에 주변 환경을 맵핑하는 기술이다. 쉽게 말해, 로봇이 미지의 공간에서 스스로 위치를 추적하고, 그 공간의 지도를 만들어 가는 과정.

Navigation은 차량 자동 항법 장치를 의미

 

2. 길 찾기에 필요한 것

-위치 : 로봇의 위치를 계측/추정 하는 기능 ex)GPS, WIFI SLAM, Beacon...

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

        거리센서 : 초음파센서, 적외선 거리센서

        비전센서 : 카메라

        Depth camera : 깊이 정보 수집 가능

-지도 : 길과 장애물 정보가 담긴 지도

          지도가 없는 경우 -> 동시적 위치 추정 및 지도 작성 ---> slam~

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

           위치 추정, 경로 탐색/계획

 

A*알고리즘 : A* 알고리즘은 출발점에서 목표 지점까지 가장 빠른 경로를 찾는 알고리즘. 이를 위해 현재까지의 거리(g)와 목표까지의 예상 거리(h)를 합쳐서 f값을 계산하고, f값이 가장 작은 경로를 우선 탐색

 

3.Gmapping : ros에서 가장 많이 사용하는 slam패키지

하드웨어 제약 사항

-x,y,theta 속도 이동명령
-주행기록계 -> 얼마만큼 갔는지, 얼마 만큼 회전했는지 측정 가능해야함

-2차 평면 계측 가능 센서

-직사각형 및 원형의 로봇

 

4. turtlebot3을 gazebo에 구현

강의와 달리 ros noetic을 설치하였기 때문에 다음 자료들을 참고했다.

https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/#pc-setup

 

ROBOTIS e-Manual

 

emanual.robotis.com

https://csj000714.tistory.com/900

 

[Planning] ROS Navigation: Tutorial(Ubuntu 20.04, ros noetic, gazebo, Turtlebot3)

💡 본 문서는 'ROS Navigation: Tutorial(Ubuntu 20.04, ros noetic, Turtlebot3)'에 대해 정리해놓은 글입니다. 1. Environment Setup 1) Bringup $ sudo apt update $ sudo apt upgrade $ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_to

csj000714.tistory.com

이것 저것 설치하다보니까 gazebo환경에 turtlebot을 띄울수 있게 되었다.

4. SLAM 관련 노드들의 처리 과정

gmapping은 ros에서 패키지 형태로 제공

 

1.sensor노드에서 sensor raw_data를 gmapping에 보낸다.

2.teleop노드를 실행시켜서 turtlebot_3_core에 velocity값을 보낸다.

3. turtlebot_3_core는 로봇을 구동시키고 tf형태로 gmapping에  -> 센서의 위치정보 전달

4. 센서와 turtlebot_3_core에서 전달 받은 센서 데이터와 센서의 위치정보를 바탕으로 지도 작성

5. 지도 정보를 map_server에 전달

5. 위치 추정

칼만필터 : 잡음이 포함되어 있는 선형 시스템에서 대상체의 상태를 추적하는 재귀 필터

1. 예측

모델을 상정하고 이 모델을 이용하여 이전 상태로부터 현재 시점의 상태를 예측

2.보정

앞 단계의 예측 값과 외부 계측기로 얻은 실제 측정 값 간의 오차를 이용하여 더욱 정확한 상태 값을 추정

  

예측과 보정을 반복하며 현재 위치를 추정

 

6. 내비게이션

Dynamic window Approach(local plan에서 주로 사용) -> 주어진 목표 지점까지 장애물을 피하면서 경로를 실시간으로 조정하는 단계

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

 

실습

tf데이터가 gmapping으로 잘 전달이 안되는 것 같다. 영상에서는 kinetic을 사용하지만 나는 ros noetic을 사용해서 환경 설정 부분에서 뭔가 잘못된것 같다. ->> 이 부분은 해결 후 다시 시도 해보겠다.

반응형