공부/ROS

🌍 SLAM (Simultaneous Localization and Mapping) 이해 및 개요

projectlim 2024. 10. 2. 11:35
728x90
반응형
SMALL

SLAM(Simultaneous Localization and Mapping)은 동시적 위치추정 및 지도작성을 의미하는 기술로, 로봇이 자신의 위치를 추정하면서 동시에 주변 환경의 지도를 작성하는 핵심 기술입니다. 이 기술은 자율주행, 로봇공학, 드론, 증강현실(AR) 등의 분야에서 활발히 활용되고 있습니다.


🔍 SLAM의 주요 구성 요소

1️⃣ 위치추정(Localization): 로봇이 현재 어디에 있는지를 파악합니다. 2️⃣ 지도작성(Mapping): 주변 환경을 탐색하고 그 정보를 바탕으로 지도를 생성합니다.

이 두 가지 기능을 동시에 수행함으로써, 로봇이 미지의 환경에서도 자율적으로 움직일 수 있습니다.


⚙️ SLAM의 작동 방식

1️⃣ 센서 데이터 수집 및 전처리

  • 카메라, 라이다(LiDAR), IMU(관성 측정 장치) 등의 센서를 사용하여 데이터를 수집합니다.

2️⃣ 로봇 위치 및 지도 최적화

  • 센서 데이터를 활용하여 로봇의 위치를 추정하고, 환경 지도를 작성합니다.
  • 그래프 기반 최적화(Graph-based Optimization) 기법이 주로 사용됩니다.

🚀 SLAM의 응용 분야

✔️ 자율주행 차량 🚗
➡️ 실시간으로 도로 주행 시 위치를 파악하고 지도를 작성합니다.

✔️ 로봇 청소기 🏠
➡️ 효율적인 경로를 계획하여 청소할 수 있도록 도와줍니다.

✔️ 드론 🚁
➡️ 비행 중 장애물을 피하고 목적지까지 안전하게 이동할 수 있도록 합니다.

✔️ 증강현실(AR) 및 가상현실(VR) 🎮
➡️ 현실 세계와 가상의 오브젝트를 정밀하게 매칭합니다.


📌 SLAM의 종류

🔹 비주얼 SLAM(vSLAM) 📷
➡️ 카메라를 활용하여 영상 기반으로 위치를 추정하고 지도를 작성합니다.

🔹 라이다 SLAM (LiDAR SLAM) 🛑
➡️ 라이다 센서를 이용하여 3D 포인트 클라우드를 생성하고, 이를 통해 위치 및 지도 정보를 계산합니다.

🔹 휠 오도메트리 기반 SLAM 🛞
➡️ 로봇의 바퀴 회전 정보를 활용하여 위치를 추정합니다. 다만, 누적 오차가 발생할 수 있습니다.


🧩 SLAM 알고리즘

🔹 Voxel Grid
➡️ 3차원 공간을 작은 정육면체(Voxel)로 나누어 데이터를 표현하는 방법으로, 의료 영상, 지리 정보 시스템(GIS), 3D 모델링 등에 활용됩니다.

🔹 Extended Kalman Filter (EKF-SLAM)
➡️ 확장 칼만 필터를 이용하여 센서 데이터를 융합하고 위치 및 지도를 추정하는 방식입니다.

🔹 Graph-SLAM
➡️ 그래프 최적화 기법을 이용하여 센서 데이터 및 위치 추정을 결합하는 방식입니다.


🔥 SLAM 기술의 미래

SLAM 기술은 로봇과 자율주행의 핵심 요소로 자리 잡고 있으며, AI 및 딥러닝 기술과 결합하여 더욱 정밀한 실시간 환경 인식이 가능해지고 있습니다. 앞으로도 자율주행, 산업용 로봇, 스마트시티, 증강현실 등 다양한 분야에서 SLAM의 활용도가 높아질 것으로 기대됩니다! 🚀

https://roytravel.tistory.com/405

 

SLAM의 이해와 구현 PART 01 요약

본 글은 국내 신동원, 장형기님께서 배포해주신 "SLAM의 이해와 구현"이라는 자료를 기반으로 요약하였음을 밝힙니다. 01. SLAM 이란? SLAM이란 동시적 위치추정 및 맵핑을 의미한다. 아주 쉽게 말해

roytravel.tistory.com

 

 


 

오늘의 실습내용!!

가제보 시뮬레이션이 안열려서 하루종일 애먹은 하루였습니다.

 

이를 해결하기 위해 ssh로도 다운받아보고 했는데

 

실행시킬때 안된다고 강제종료하고 같은 터미널에 또 키지 마시고

 

새로운 터미널 창 열어보세요!!

 

ㄷㄷㄷㅈ

바로 등장!!

 

자 그럼 teleopkey로 먼저 slam 완성하고 mapping해봅시다.

 

slam 키려면 cartographer켜야하는데

 

역시 봐주질않죠...? 없다해버리네요??

 

sudo apt-get install ros-humble-turtlebot3-cartographer

슥 다운받고!

source ~/turtlebot3_ws/install/setup.bash

파일 소스해서 환경변수 업데이트!!

cd ~/turtlebot3_ws
rosdep install --from-paths src --ignore-src -r -y

누락된 의존성 설치 해주고

ros2 pkg list | grep turtlebot3_cartographer

카토그래퍼 확인 슥 해주면

ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

 

 

odom으로 바꿔주시고

teleopkey로 조종해서 맵핑

하우스 런치

 

하우스 매핑 끝나면

ros2 run nav2_map_server map_saver_cli -f~/map

 

하면 yaml파일과 map.pgm이 생깁니다!!

 

그리고 이제 estimate해서 맞춰주고 돌리기

 

또 에러

 

네비게이션 패키지가 다운이 안된거 같다...

다운이 잘 안된건가...

sudo apt update
sudo apt install ros-humble-turtlebot3-navigation2

다운 받아주고

cd ~/turtlebot3_ws/src
git clone https://github.com/ROBOTIS-GIT/turtlebot3_navigation2.git
cd ~/turtlebot3_ws
colcon build

github 아이디와 패스워드 입력해주시면 다운 가능합니다!

source ~/turtlebot3_ws/install/setup.bash

환경변수 소스에 저장

ros2 pkg list | grep turtlebot3_navigation2

패키지 목록 확인

ros2 launch turtlebot3_navigation2 navigation2.launch.py map:=$HOME/map.yaml

동작하면 라이다만 도는게 맞나?

cartographer를 안켰었네욬ㅋㅋㅋ

 

ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py

 

 

728x90
반응형
LIST