Gazebo Classic 시뮬레이터 사용하기
저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo
Gazebo Classic은 객체 회피 및 컴퓨터 비전 테스트에 특히 적합한 자율 로봇을 위한 강력한 3D 시뮬레이션 환경입니다. 이 페이지에서는 SITL 및 단일 차량에서의 사용에 대해 설명합니다. Gazebo Classic은 HITL 및 다중 차량 시뮬레이션 에도 사용할 수 있습니다 .
지원 차량: 쿼드( Iris , Hex(Typhoon H480), 일반 표준 VTOL(QuadPlane) , Tailsitter, 비행기, 로버, 잠수함/UUV.
설치
Gazebo Classic 9 또는 11 설정은 Linux, macOS 및 Windows용 [표준 빌드 지침}(../dev_setup/dev_env.md)에 포함되어 있습니다. 추가 설치 지침은 gazebosim.org 에서 찾을 수 있습니다.
시뮬레이션 실행
cd /path/to/PX4-Autopilot
make px4_sitl gazebo-classic지원되는 차량과 make명령은 아래에 나열되어 있습니다
make px4_sitl gazebo-classic
make px4_sitl gazebo-classic_iris_opt_flow
Quadrotor with Depth Camera (forward-facing)
make px4_sitl gazebo-classic_iris_depth_camera
Quadrotor with Depth Camera (downward-facing)
make px4_sitl gazebo-classic_iris_downward_depth_camera
make px4_sitl gazebo-classic_solo
Typhoon H480 (Hexrotor) (with video streaming)
make px4_sitl gazebo-classic_typhoon_h480
make px4_sitl gazebo-classic_plane
make px4_sitl gazebo-classic_plane_catapult
make px4_sitl gazebo-classic_standard_vtol
make px4_sitl gazebo-classic_tailsitter
make px4_sitl gazebo-classic_rover
make px4_sitl gazebo-classic_r1_rover
make px4_sitl gazebo-classic_uuv_hippocampus
make px4_sitl gazebo-classic_boat
make px4_sitl gazebo-classic_cloudship
SITL 실행
PX4가 시작되면 아래와 같이 PX4 쉘이 시작됩니다.
콘솔은 PX4가 기체별 초기화 및 매개변수 파일을 로드하고 시뮬레이터를 기다리는(및 연결하는) 상태를 표시합니다. [ecl/EKF] commencing GPS fusion라는 INFO 인쇄가 나오면 차량은 무장 준비가 된 것입니다.
메모
쿼드로터 모델을 마우스 오른쪽 버튼으로 클릭하면 상황에 맞는 메뉴에서 팔로우 모드를 활성화할 수 있어 계속해서 볼 수 있어 편리합니다.

다음을 입력하여 공중으로 이륙할 수 있습니다.
사용법/구성 옵션
센서/하드웨어 오류 시뮬레이션
안전 장치 시뮬레이션에서는 GPS 오류 및 배터리 소모와 같은 안전 장치를 작동하는 방법을 설명합니다.
헤드리스 모드
Gazebo Classic은 Gazebo Classic UI가 실행되지 않는 헤드리스 모드 에서 실행될 수 있습니다 . 이는 더 빠르게 시작되고 더 적은 시스템 리소스를 사용합니다(즉, 시뮬레이션을 실행하는 데 더 "가벼운" 방법입니다).
다음과 같이 일반 make명령 앞에 다음을 추가하면 됩니다.HEADLESS=1
사용자 정의 이륙 위치 설정
Gazebo Classic의 이륙 위치는 환경 변수를 사용하여 설정할 수 있습니다. 이는 기본 이륙 위치와 세계에 설정된 모든 값을 모두 재정의합니다 .
설정할 변수는 PX4_HOME_ALT, PX4_HOME_LAT, PX4_HOME_LON및 입니다.
예를 들어:
시뮬레이션 속도 변경
PX4_SIM_SPEED_FACTOR환경 변수를 이용하여 실시간 대비 시뮬레이션 속도를 높이거나 낮출 수 있습니다.
자세한 내용은 시뮬레이션 > 실시간보다 빠르게 시뮬레이션 실행을 참조하십시오 .
풍속 변경
풍속을 시뮬레이션하려면 wind_plugin 플러그인을 월드 파일에 추가하고 m/s 단위로 설정하세요( SET_YOUR_WIND_SPEED). 필요한 경우 windVelocityMax,windVelocityMean매개변수를 조정 합니다.
PX4/PX4-SITL_gazebo-classic/worlds/windy.world 에서 이것이 어떻게 수행되는지 확인할 수 있습니다.
조이스틱 사용
조이스틱 지원은 QGroundControl을 통해 지원됩니다 ( 여기서 설정 지침 참조 ).
GPS 노이즈 시뮬레이션
Gazebo Classic은 실제 시스템에서 일반적으로 발견되는 것과 유사한 GPS 잡음을 시뮬레이션할 수 있습니다(그렇지 않으면 보고된 GPS 값은 잡음이 없고 완벽합니다). 이는 GPS 잡음의 영향을 받을 수 있는 애플리케이션(예: 정밀 위치 지정)을 작업할 때 유용합니다.
gpsNoise대상 차량의 SDF 파일에 요소 값이 포함되어 있는 경우(즉, 라인이 있음 ) GPS 노이즈가 활성화됩니다 <gpsNoise>true</gpsNoise>. 이는 많은 차량 SDF 파일( solo.sdf , iris.sdf , Standard_vtol.sdf , delta_wing.sdf , plane.sdf , typhoon_h480 , tailsitter.sdf )에서 기본적으로 활성화되어 있습니다 .
GPS 소음을 활성화/비활성화하려면:
SDF 파일을 생성하려면 모든 차량에 대해 전망대 타겟을 빌드하세요. 예를 들어:
대상 차량에 대한 SDF 파일을 엽니다(예: ./Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris/iris.sdf ).
gpsNoise요소 검색 :존재하는 경우 GPS가 활성화된 것입니다. 다음 줄을 삭제하여 비활성화할 수 있습니다.
<gpsNoise>true</gpsNoise>존재하지 않으면 GPS가 비활성화됩니다. 위에 표시된 대로
gps_plugin섹션gpsNoise에 요소를 추가하여 활성화할 수 있습니다.
다음에 Gazebo Classic을 빌드/다시 시작하면 새로운 GPS 노이즈 설정이 사용됩니다.
특정 세계 로드
PX4 는 PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds 에 저장된 여러 Worlds를 지원합니다. 기본적으로 Gazebo Classic은 empty.world 에 정의된 대로 특징 없는 평평한 평면을 표시합니다.
PX4 구성 대상에서 최종 옵션으로 지정하여 세계를 로드할 수 있습니다.
예를 들어, Warehouse world를 로드하려면 다음과 같이 추가하면 됩니다.
시뮬레이션된 깊이(Depth) 카메라
Gazebo Classic 깊이 카메라 모델 Openni Kinect 플러그인을 사용하여 Intel® RealSense™ D455 스테레오 심도 카메라를 시뮬레이션합니다.
/camera/depth/image_raw이는 각각 및 ROS 주제 에 대한 깊이 이미지와 카메라 정보를 게시합니다 /camera/depth/camera_info.
이러한 이미지를 사용하려면 ROS 또는 ROS 2를 설치해야 합니다. ROS 및 Gazebo를 설치할 때 "설치 충돌을 방지"하는 방법에 대한 이 페이지 상단의 경고를 참고하세요.
전방을 향한 깊이 카메라를 사용하여 쿼드로터를 시뮬레이션할 수 있습니다.
또는 아래쪽을 향하는 깊이 카메라가 있는 쿼드로터:
비디오 스트리밍
Gazebo Classic용 PX4 SITL은 시뮬레이션된 차량 모델에 부착된 카메라 센서에서 UDP 비디오 스트리밍을 지원합니다. 스트리밍이 활성화되면 QGroundControl (UDP 포트 5600)에서 이 스트림에 연결하고 실제 카메라에서와 마찬가지로 시뮬레이션된 차량에서 Gazebo Classic 환경의 비디오를 볼 수 있습니다. 비디오는 gstreamer 파이프라인을 사용하여 스트리밍되며 Gazebo Classic UI의 버튼을 사용하여 활성화/비활성화할 수 있습니다.
전제조건
비디오 스트리밍에는 Gstreamer 1.0 이 필요합니다. Gazebo Classic을 설정할 때 필수 종속성이 이미 설치되어 있어야 합니다 (macOS 및 Ubuntu Linux용 표준 PX4 설치 스크립트/지침에 포함되어 있음).
메모
참고로 종속성에는
gstreamer1.0-plugins-base,gstreamer1.0-plugins-good,gstreamer1.0-plugins-bad,gstreamer1.0-plugins-ugly, 가 포함됩니다libgstreamer-plugins-base1.0-dev.
비디오 스트리밍 시작/중지
대상 차량에서 지원하면 비디오 스트리밍이 자동으로 시작됩니다. 예를 들어 Typhoon H480에서 비디오 스트리밍을 시작하려면:
Gazebo UI 비디오 ON/OFF 버튼을 사용하여 스트리밍을 일시 중지/다시 시작할 수 있습니다.

Gazebo 비디오를 보는 방법
SITL/Gazebo Classic 카메라 비디오 스트림을 보는 가장 쉬운 방법은 QGroundControl 을 사용하는 것입니다 . 애플리케이션 설정 > 일반을 열고 비디오 소스를 UDP h.264 비디오 스트림 으로 설정 하고 UDP 포트를 5600 으로 설정하기만 하면 됩니다.

그러면 Gazebo Classic의 비디오가 실제 카메라에서와 마찬가지로 QGroundControl 에 표시되어야 합니다.

메모
Gstreamer Pipeline을 이용하여 영상을 시청하는 것도 가능합니다 . 다음 터미널 명령을 입력하기만 하면 됩니다.
자세한 로깅
모델에 문제가 있으면 SITL은 자동으로 실패합니다. 다음과 같이 VERBOSE_SIM를 사용하여 보다 자세한 로깅을 활성화할 수 있습니다.
또는
Last updated