본문 바로가기

Theory, Tech/SLAM

Gazebo 에 관하여

  • 아래는 작성자가 각종 출처를 바탕으로 임의로 작성한 정보임. 정확한 정의가 아닐 수 있으니 우선은 참고용도로만 활용 권장함
  • 작성자의 개인 공부를 위한 러프한 정보이기도 하며, 정보를 넓게 검토하기 위한 대략적인 정보들이 작성됨.
  • 필요에 따라 업데이트 예정
  • 최초/최종 작성일: 2024-06-09 / 2024-06-09


Gazebo 란

  • 용어 자체는 'Pavilion' (텐트, 휴게실 등 야외 가설 건축물) 의 종류 중 하나인 'Gazebo' (팔각형 혹은 타원형의 지붕 등을 갖고, 공공장소에서 휴식장소, 베란다 등으로 쓰이는 건축물. 한국어로는 '정자' 라는 건축물에 대응되는 단어) 와 동일함
  • 2002년 개발이 시작된 오픈소스 2D/3D 로보틱스 시뮬레이터
  • ROS 에서 사용 가능한 대표적인 시뮬레이터 패키지
    • 직접 사용하진 않았으나, 여러 사용 예 들을 보았을 때, 거의 필수 패키지로 보임

Gazebo 의 이력

  • USC (university of southern california)
    • 2002년, Gazebo Classic 시작
  • Willow Garage (로보틱스 연구 회사)
    • 2011년, Gazebo Classic 개발 지원
  • OSRF(Open Source Robotics Foundation)
    • 2012년 개발 이전됨
    • -> 이후 fork (복제 및 분리) 를 뜨면서 2개 갈래로 분리 됨
  • Gazebo Classic
    • 2020년, 마지막 버전 배포 (Gazebo classic 11)
    • 2025년, 지원 종료 예정
  • Ignition -> Gazebo
    • 2019년, 최초 배포 ...
    • 2022년 Gazebo 로 명칭 변경

Gazebo Classic 의 특징

  • ODE(Open dynamics Engine), OpenGL rendering, 센서 시뮬레이션과 엑츄에이터 제어 코드 지원을 포함함
  • 다양한 센서가 환경을 관측, 측정하는 방식을 모사할 수 있음 (ex. 카메라로 본 화면, 키넥트 스타일의 센서로 읽은 화면 정보 등을 모사할 수 있음)
  • 3D rendering 에서는 OGRE (Object-Oriented Graphics Rendering Engine; open source) 이용함
  • standalone 으로 사용 가능함

    Ignition (최신 Gazebo) 의 특징

  • 다양한 오픈소스 라이브러리를 활용할 수 있도록 설계됨
  • 기존 (classic)의 monolithic architecture 에서 collection of loosely coupled libraries 로 변화한 것임

Gazebo 의 사용 사례

장점

  • 오픈소스. 다양한 사용자가 기여하며 발전되는 SW
  • 시뮬레이션을 하기 위해서 실제로 가장 범용적으로 쓰이는 패키지 중 하나로 보이며, Standalone (classic)으로 사용 가능하지만, ROS 의 Package로서 자리를 잡은 것으로 보임 -> 로보틱스 시뮬레이터로서 전망이 좋아보임
  • 표준에 맞는 파일 정보들이 있다면 이것들을 바로 적용해서 테스트 가능함
    • 특정 모델에 대한 3D 정보
    • 센서에 대한 동작 정보
    • 로봇의 컨트롤러
  • SIL (Software-In-the-Loop) 와 같은 소프트웨어 개발 테스트 방법에 사용 가능함
    • 실제 제품을 물리적으로 만들고 테스트 하지 않고, SW 수준에서 만들고 테스트 가능함

      단점

    • 러프하게 찾아봐서 아직은 잘 모르겠음

Gazebo 는 대체 가능한가? (비교 가능한 툴)

  • ROS 에서 쓰이는 시뮬레이션 툴로서는 필수에 가까워 보여서, 대체는 어려워보임
  • 'stage' 라는 패키지가 2D stage simulator로 동작하나 대체 가능 여부는 불확실 (Gazebo 도 2D 지원함)
    • 관련 문서에 Player/Stage 개념이 있음. 이 부분이 simulator 이해에 중요한지 검토 후 필요에 따라 문서 작성 예정
    • 해당 문서에서 Gazebo 를 'Player'로 언급한 예도 있어서, 완전히 독립된 관계의 경쟁 서비스는 아닌듯 함
    • 'player' 라는 로봇이나 그 외 객체가 동작할 수 있는 환경(world 등) 를 stage 라는 명칭으로 제공하는 것 같음

Gazebo 에 대한 의견

  • 러프하게 보았지만, Gazebo classic 은 지원 종료 예정이므로,
    • legacy 프로젝트에서는 Classic 을 쓰더라도 유지
    • 신규 프로젝트에서는 최신 Gazebo를 사용함이 적합해보임

Gazebo 를 활용하고 싶다면?

  • 필요한 사람
    • 센서 개발자
    • 로봇 개발자
    • 로봇 외에도 HW 와 SW 를 융합적으로 활용하는 시스템을 이용하는 개발자
    • 시뮬레이션 개발자
  • 사용 방법
    • 가장 범용적인 사용 방식인만큼, ROS 에 Gazebo를 붙여 사용함
    • ROS 외 특수한 목적의 Simulation 환경이 있다면 문서 참고하여 설치

번외 - 앞으로 조사해봐야 할 것

*개념이 명확하지 않거나, 분야를 이해하기 위해 알아두면 좋을 것 같은 것들을 임의로 작성함

  • SDF 란?
  • Player/Stage 개념이란?

참고 레퍼런스

  1. Wikipedia. Gazebo : https://en.wikipedia.org/wiki/Gazebo
  2. Wikipedia. Gazebo simulator : https://en.wikipedia.org/wiki/Gazebo_simulator
  3. ROS wiki 의 'gazebo' 패키지 문서: http://wiki.ros.org/gazebo_ros_pkgs
  4. Gazebo sim (Classic) 의 튜토리얼 페이지: https://classic.gazebosim.org/tutorials?cat=connect_ros
  5. Gazebo sim (Ignition) 의 튜토리얼 페이지: https://gazebosim.org/docs/latest/ros_installation
  6. ROS, Gazebo, SIL 에 대해 정리된 블로그: https://medium.com/newworld-kim/ros로-sil-and-simulation-4d4bece0431d
  7. ROS 와 gazebo 의 적용 예시를 보여주는 블로그: https://steemit.com/kr-dev/@jacobyu/ros-gazebo-1

'Theory, Tech > SLAM' 카테고리의 다른 글

ROS : simulation 수행 기록 페이지 링크  (0) 2024.08.10
SLAM 기술과 관련된 용어  (0) 2024.03.31