본문으로 건너뛰기
버전: v26.06a

Gazebo 시뮬레이션

Gazebo

Gazebo 로고

Gazebo는 로봇을 현실 환경과 유사하게 시뮬레이션할 수 있는 오픈소스 3D 시뮬레이터입니다. Rviz처럼 단순히 로봇의 외형을 시각적으로 표현하는 것을 넘어, 중력, 관성, 충돌, 마찰과 같은 물리 엔진 기반 계산을 통해 실제 환경에서 발생할 수 있는 동작과 상호작용을 시뮬레이션할 수 있습니다.

Gazebo는 ROS와 연동하여 사용할 수 있는 대표적인 시뮬레이터 패키지로, 가상 환경에서 생성된 센서 데이터(LiDAR, IMU, 카메라, GPS 등)를 ROS 토픽 형태로 전달하고, ROS에서 생성한 제어 명령을 다시 Gazebo로 전달하여 로봇의 움직임에 반영할 수 있습니다. 이러한 특징 덕분에 시뮬레이션 환경과 실제 로봇 환경에서 동일한 소프트웨어 구조와 코드를 사용할 수 있습니다.

실제 하드웨어를 준비하기 전 단계에서도 로봇의 기구 설계, 센서 배치, 제어 로직, 위치 추정(EKF), SLAM, 내비게이션 알고리즘 등을 검증해 볼 수 있습니다. 특히 충돌이나 고장 위험이 큰 초기 개발 단계에서 안전하게 반복 실험을 수행할 수 있다는 점이 큰 장점입니다.

다양한 환경 조건을 손쉽게 구성할 수 있습니다. 실내·실외 환경, 지형 변화, 장애물 배치, 조명 조건 등을 자유롭게 변경할 수 있으며, 이를 통해 로봇이 다양한 상황에서 어떻게 동작하는지 사전에 검증할 수 있습니다.

Gazebo 버전

Gazebo는 ROS에 포함된 구성 요소가 아니라, ROS와 연동될 수 있는 독립적인 시뮬레이터 프로젝트로 개발 및 버전 관리가 이루어지고 있습니다. 따라서 Gazebo 자체적으로 고유한 버전 체계를 가지고 있으며, ROS 버전과는 별도로 릴리즈가 진행됩니다.

다만 Gazebo는 운영체제(Ubuntu) 및 ROS와 밀접하게 연동되어 사용되기 때문에, Gazebo 버전에 따라 호환 가능한 Ubuntu 버전과 ROS 배포판이 미리 정해져 있습니다. 호환되지 않는 조합을 사용할 경우, 오류가 발생할 수 있으므로 반드시 호환성을 확인한 후 설치해야 합니다.

일반적으로는 ROS에서 제공하는 패키지를 통해 Gazebo를 설치하는 것이 가장 안전한 방법이며, 아래와 같은 명령어를 사용하면 현재 사용 중인 ROS 배포판에 맞는 권장 Gazebo 버전이 자동으로 설치됩니다.

sudo apt-get install ros-${ROS_DISTRO}-ros-gz

현재 지원되는 Gazebo 버전과 ROS 버전 간의 호환성 정보는 Gazebo 공식 홈페이지 문서를 통해 확인할 수 있습니다. ROS 2 Jazzy 버전의 경우, 공식적으로 Gazebo Harmonic (LTS) 버전을 사용하는 것이 권장됩니다.

GZ Fortress (LTS)GZ Harmonic (LTS)Gz IonicGz Jetty
ROS 2 Rolling
ROS 2 Kilted
ROS 2 Jazzy (LTS)
ROS 2 Humble (LTS)
  • ✅ - 추천 조합
  • ❌ - 호환 불가
  • ⚡ - 호환 가능하나 일부 기능 제한, 추가 설정 또는 소스 빌드가 필요할 수 있음
  • Gazebo 공식 홈페이지 Docs

Virtual RobotX (VRX)

VRX(Virtual RobotX)는 OSRF(Open Source Robotics Foundation)에서 공개한 로봇 시뮬레이션 환경으로, 무인 해상 차량(Unmanned Surface Vehicle, USV)을 위한 해양 환경 시뮬레이션 프레임워크입니다.

VRX는 기본적으로 Gazebo 기반으로 구성되어 있으며, 사용하기 위해선 별도의 워크스페이스에 설치를 진행해야 합니다. 아래 과정을 따라서 설치를 진행해보겠습니다.

  1. Gazebo 키 추가
sudo apt-get update
sudo apt-get install curl lsb-release gnupg
sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] https://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
  1. 의존성 설치
sudo apt-get update
sudo apt install python3-sdformat14 ros-jazzy-xacro ros-jazzy-ros-gz-interfaces
  1. VRX 전용 워크스페이스 생성
mkdir -p ~/vrx_ws/src
cd ~/vrx_ws/src
git clone https://github.com/osrf/vrx.git --depth=1
  1. VRX 빌드
cd ~/vrx_ws
colcon build --merge-install
  1. VRX 워크스페이스 추가
nano ~/.bashrc

.bashrc 파일 최하단에 추가합니다.

.bashrc 파일 수정 예시

.bashrc
source ~/vrx_ws/install/setup.bash

모델 및 월드 설정

Gazebo 실행에 필요한 파일은 크게 2가지입니다.

  1. 모델 : 로봇에 대한 전반적인 정보, 센서 정보 mechaship_description/models
    • 부력 및 유체역학 값 설정
  2. 월드 : 주변 환경에 대한 설정 mechaship_simulation/worlds
    • 파도, 바람, 장애물 등 설정

모델 및 월드 파일 위치

실행하기

  • empty.world : 빈 월드 파일 실행
ros2 launch mechaship_simulation gazebo.launch.py

empty 월드 실행 예시

  • training_arena.world : 간단한 경기장 월드 파일 실행

mechaship_bringup.sh.in 파일의 WORLD_NAME 수정

mechaship_bringup.sh.in
export ROS_DOMAIN_ID=0
export MODEL_NAME="mechaship"
export WORLD_NAME="training_arena"

빌드 후 실행

cb
ros2 launch mechaship_simulation gazebo.launch.py

training_arena 월드 실행 예시