Gazebo 시뮬레이터 사용하기

저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo

Gazebo는오픈 소스 로봇 시뮬레이터입니다. 이는 이전 Gazebo Classic 시뮬레이터를 대체하며 Ubuntu 22.04 이상에서 유일하게 지원되는 Gazebo 버전입니다.

지원 차량: 쿼드로터, 비행기, VTOL

설치(우분투 리눅스)

Gazebo는 개발 환경 설정의 일부로 Ubuntu 22.04에 기본적으로 설치됩니다.

Ubuntu 20.04에서 Gazebo를 사용하려면 일반 설정 프로세스를 따른 후 수동으로 설치할 수 있습니다(gz-garden설치하면 Gazebo-Classic이 제거됩니다!).

시뮬레이션 실행

Gazebo SITL 시뮬레이션은 아래와 같은 make명령을 사용하여 편리하게 실행할 수 있습니다 .

이는 PX4 SITL 인스턴스와 Gazebo 클라이언트를 모두 실행합니다.

지원되는 차량과 명령은 다음과 같습니다. 모든 Gazebo make 옵션에는 gz_접두사가 있습니다.

차량

명령

PX4_SYS_AUTOSTART

make px4_sitl gz_x500

4001

make px4_sitl gz_x500_vision

4005

make px4_sitl gz_standard_vtol

4004

make px4_sitl gz_rc_cessna

4003

make px4_sitl gz_advanced_plane

4008

헤드리스 모드

Gazebo는 더 적은 리소스를 사용하고 OpenGL 렌더링을 제대로 지원하는 그래픽 카드가 있는 시스템에 의존하지 않으므로 "헤드리스 모드"(Gazebo GUI 없이)에서 Gazebo를 실행할 수 있습니다. 이렇게 하면 로드 및 실행이 더 빨라지고 많은 간단한 사용 사례에 필요한 전부가 될 수 있습니다.

명령 앞에 HEADLESS=1환경 변수를 붙여서 헤드리스 모드에서 시뮬레이션을 실행할 수 있습니다.

세계 지정

원하는 세계를 원하는 차량의 이름에 연결하여 특정 세계 내에서 시뮬레이션을 실행할 수 있습니다.

PX4_GZ_WORLD환경 변수를 사용하여 세계를 지정할 수도 있습니다.

지원되는 세계는 다음과 같습니다.

세계

명령

설명

default

make px4_sitl *

텅 빈 세상(회색 비행기)

windy

make px4_sitl *_windy

바람이 활성화된 빈 세계

baylands

make px4_sitl *_baylands

물로 둘러싸인 Baylands 세계

사용법/구성 옵션

시작 파이프라인을 사용하면 매우 유연한 구성이 가능합니다. 특히 다음이 가능합니다.

  • 임의의 세계로 새 시뮬레이션을 시작하거나 이미 실행 중인 시뮬레이션에 연결합니다.

  • 시뮬레이션에 새 차량을 추가하거나 새 PX4 인스턴스를 기존 차량에 연결하세요.

이러한 시나리오는 적절한 환경 변수를 설정하여 관리됩니다.

통사론

시작 구문은 다음 형식을 취합니다.

ARGS다음을 포함한 환경 변수 목록은 어디에 있습니까?

  • PX4_SYS_AUTOSTART( 필수 ): 시작할 PX4 기체의 기체 자동 시작 ID를 설정합니다.

  • PX4_GZ_MODEL_NAME: 전망대 시뮬레이션에 존재하는 모델 의 이름을 설정합니다 . 제공된 경우 시작 스크립트는 새 PX4 인스턴스를 해당 이름과 정확히 일치하는 Gazebo 리소스에 바인딩하려고 시도합니다.

    • 이 설정은 PX4_SIM_MODEL와 상호 배타적입니다.

  • PX4_SIM_MODEL: 시뮬레이터에 생성될 새로운 Gazebo 모델의 이름을 설정합니다. 제공된 경우 시작 스크립트는 Gazebo 리소스 경로에서 주어진 변수와 일치하는 모델을 찾아 이를 생성하고 새 PX4 인스턴스를 바인딩합니다.

    • 이 설정은PX4_GZ_MODEL_NAME 와 상호 배타적입니다.

  • PX4_GZ_MODEL_POSE: 모델의 생성 위치와 방향을 설정합니다. 제공된 경우 시작 스크립트는 구문을 따르는 포즈에서 모델을 생성합니다 "x,y,z,roll,pitch,yaw". 여기서 위치는 미터로 지정되고 각도는 라디안으로 지정됩니다.

    • 생략하면 제로 포즈 [0,0,0,0,0,0]가 사용됩니다.

    • 6개 미만의 값이 제공되면 누락된 값은 0으로 고정됩니다.

    • PX4_SIM_MODEL(PX4_GZ_MODEL_NAME 아님 ) 과 함께만 사용할 수 있습니다.

  • PX4_GZ_WORLD: 새로운 시뮬레이션을 위해 Gazebo 월드 파일을 설정합니다.

    • 기존 시뮬레이션이 이미 실행 중인 경우 이 변수는 무시됩니다.

    • 이 값은 선택된 기체에 대해 지정 되어야 하지만 이 인수를 사용하여 재정의될 수 있습니다.

  • PX4_SIMULATOR=GZ: Gazebo의 경우 시뮬레이터를 설정합니다.

    • 이 값은 선택한 에어프레임에 대해 설정 되어야 하며 , 이 경우 인수로 설정할 필요가 없습니다.

  • PX4_GZ_STANDALONE: PX4가 Gazebo 인스턴스를 시작해서는 안 된다는 것을 알립니다. 독립형 모드 에 설명된 대로 Gazebo를 별도로 실행해야 합니다 .

PX4 Gazebo 세계 및 모델 데이터베이스는 여기 Github에서 찾을 수 있습니다.

Examples:

다음은 위에서 다룬 다양한 시나리오의 몇 가지 예입니다.

  1. 시뮬레이터 시작 + 기본 세계 + 기본 포즈로 차량 생성

  2. 시뮬레이터 시작 + 기본 세계 + 사용자 정의 포즈로 차량 생성(y=2m)

  3. 시뮬레이터 시작 + 기본 세계 + 기존 차량에 연결

  4. 독립형 모드에서 시뮬레이터 시작 + 기본 세계를 실행하는 Gazebo 인스턴스에 연결

    별도의 터미널에서 다음을 실행합니다.

새로운 세계와 모델 추가

SDF 파일, 메쉬 파일, 텍스처 및 세계와 모델에 대한 Gazebo의 기능 및 모양과 관련된 모든 항목을 PX4-gazebo-models/worlds 의 해당 /models디렉토리 에 배치할 수 있습니다.

PX4 내에서 모델과 월드를 추가하려면 아래 단계를 따르세요.

모델 추가

새 모델을 추가하려면:

  1. 기체 구성 파일을 정의합니다 .

  2. 기체 구성 파일에서 Gazebo에 대한 기본 매개변수를 정의합니다.

    • PX4_SIMULATOR=${PX4_SIMULATOR:=gz}특정 기체에 대한 기본 시뮬레이터(Gz)를 설정합니다.

    • PX4_GZ_WORLD=${PX4_GZ_WORLD:=default}기본 세계를 설정합니다.

    • 기본값을 설정하면 PX4_SIM_MODEL다음과 같이 시뮬레이션을 시작할 수 있습니다.

  3. 기체 에 대한 CMake 대상 추가

    • "일반" 모드를 사용하려는 경우 모델 SDF를 Tools/simulation/gz/models/에 추가하세요.

    • 독립 실행형 모드를 사용하려는 경우 모델 SDF를 ~/.simulation-gazebo/models/다음에 추가하세요.

    물론 둘 다 사용할 수도 있습니다.

PX4-Gazebo 시간 동기화

Gazebo Classic 및 jMAVSim 시뮬레이터와 달리 PX4 및 Gazebo는 잠금 단계 메커니즘을 구현하지 않습니다.

Gazebo 시뮬레이션 중에 PX4는 Gazebo \clock주제를 구독하고 이를 클럭 소스로 사용합니다. 이는 Gazebo가 다른 실시간 요소로 실행되더라도 PX4가 시간을 앞으로 이동하기 전에 항상 Gazebo를 기다리도록 보장합니다. 그러나 잠금 단계가 없기 때문에 Gazebo는 PX4가 계산을 마칠 때까지 기다리지 않습니다. 최악의 시나리오에서는 PX4가 완전히 오프라인 상태가 될 수 있으며 Gazebo는 시뮬레이션된 드론의 명백한 충돌과 함께 계속 실행됩니다.

다중 차량 시뮬레이션

다중 차량 시뮬레이션은 Linux 호스트에서 지원됩니다.

자세한 내용은 Gazebo를 사용한 다중 차량 시뮬레이션을 참조하세요.

Last updated