ROS2 Cartographer & Nav2 - Gazebo로 시뮬레이션

2025. 4. 5. 01:18·Spatial AI/SLAM

개요

Gazebo 시뮬레이터를 통해 오픈 소스 SLAM `cartographer`를 실습한다.

 

 

1. Package 설치

 Gazebo

로봇 시스템 개발 및 테스트에 필요한 시뮬레이션을 위한 로봇, 센서, 환경 모델 등을 지원하고 물리 엔진을 탑재하여 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터
# Gazebo 패키지
sudo apt install install -y \
    ros-$ROS_DISTRO-gazebo-ros \
    ros-$ROS_DISTRO-gazebo-ros-pkgs \
    ros-$ROS_DISTRO-gazebo-ros2-control

 

Turtlebot3

ROBOTIS에서 만든 ROS 기반의 모바일 로봇
# turtlebot3 로봇 플랫폼 패키지
sudo apt install -y \
    ros-$ROS_DISTRO-turtlebot3 \
    ros-$ROS_DISTRO-turtlebot3-msgs

 

Cartographer

Google에서 개발한 2D-3D LiDAR SLAM 라이브러리
# Cartographer 패키지
sudo apt install -y \
    ros-$ROS_DISTRO-cartographer \
    ros-$ROS_DISTRO-cartographer-ros

 

Nav 2

ROS 2 기반으로 작성된 자율 주행 로봇의 경로 계획 및 제어를 돕는 로봇 네비게이션 패키지
# Navigation2 패키지
sudo apt install -y \
    ros-$ROS_DISTRO-navigation2 \
    ros-$ROS_DISTRO-nav2-bringup

 

 

 

2. ROS 2 Cartogarpher

2.1 Gazebo 실행

터미널 새 창을 열어 아래 명령어를 통해 Gazebo를 띄운다.

source .venv/bin/activate
pip install numpy lxml
export ROS_DOMAIN_ID=11
export TURTLEBOT3_MODEL=waffle

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

 

 

 

2.2 Keyboard Teleoperation

터미널 새창을 열어 아래 명령어를 통해 teleoperation node를 실행시킨다.

export ROS_DOMAIN_ID=11
export TURTLEBOT3_MODEL=waffle

ros2 run turtlebot3_teleop teleop_keyboard

 

 

 

 

 

2.3 SLAM node 실행

터미널 새 창을 열어 mapping을 진행한다. teleoperation node를 통해 로봇을 이동시킬 수 있다.

export ROS_DOMAIN_ID=11

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

 

중간에 3분 13초쯤 로봇이 뒤집혔지만 다시 주행하면서 맵을 보정했다

 

 

 

 

2.4 Map 저장

터미널 새 창을 열어 맵을 저장한다. `.pgm`, `.yaml` 파일이 생성된다.

ros2 run nav2_map_server map_saver_cli -f <map_name>

 

 

 

 

 

 

 

3. Navigation

3.1 Gazebo 실행

터미널을 열어 아래 명령어를 실행시켜 Gazebo를 띄운다.

export ROS_DOMAIN_ID=11
export TURTLEBOT3_MODEL=waffle

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

 

 

3.2 Navigation stack 시작

새로운 터미널 창을 열어 아래 명령어로 네비게이션을 진행할 맵을 RViz로 띄운다.

export TURTLEBOT3_MODEL=waffle

ros2 launch turtlebot3_navigation2 \
    navigation2.launch.py \
    use_sim_time:=true map:=/path/to/map.yaml

 

 

3.3 로봇 초기 위치 설정

RViz에서 `2D Pose Estimate`를 통해 현재 Gazebo에서 로봇이 있는 위치와 방향을 설정해준다. 위치가 정확하게 찍히지 않아도 주행하면서 위치를 보정한다. 또는 `2D Pose Estimate`를 다시 클릭하여 재설정할 수 있다.

 

 

3.4 원하는 위치로 로봇 이동시키기

`Nav2 Goal`으로 이동할 위치와 방향을 설정하면 자동으로 경로를 생성하여 로봇이 움직인다.

 

 

 

 

참고

https://ros2-industrial-workshop.readthedocs.io/en/latest/_source/navigation/ROS2-Cartographer.html

https://ros2-industrial-workshop.readthedocs.io/en/latest/_source/navigation/ROS2-Navigation.html

 

 

 

 

'Spatial AI > SLAM' 카테고리의 다른 글

ROS2 RTAB-Map 시뮬레이션  (1) 2025.04.09
ROS2 CARLA Autoware Bridge  (0) 2025.03.28
CARLA Simulator 설치  (0) 2025.03.27
자율주행 오픈소스 데이터셋 & 소프트웨어 & 시뮬레이터  (0) 2025.03.21
스마트 시티와 스마트 모빌리티  (0) 2025.03.21
'Spatial AI/SLAM' 카테고리의 다른 글
  • ROS2 RTAB-Map 시뮬레이션
  • ROS2 CARLA Autoware Bridge
  • CARLA Simulator 설치
  • 자율주행 오픈소스 데이터셋 & 소프트웨어 & 시뮬레이터
Z0e
Z0e
3D Vision Engineer, Zoe 입니다.
  • Z0e
    I'm not a robot
    Z0e
    • 분류 전체보기
      • Spatial AI
        • Geometry
        • SLAM
      • Programming
        • Python
        • Git
        • Docker
      • Setting
        • Ubuntu
        • ROS
      • Study
        • Google Skills
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
Z0e
ROS2 Cartographer & Nav2 - Gazebo로 시뮬레이션
상단으로

티스토리툴바