콘텐츠로 건너뛰기
쿼드(QUAD) 드론연구소

쿼드(QUAD) 드론연구소

  • 👨‍✈️ 초보 파일럿
  • 🎖️ 개발자
  • 🥇 전문가
  • 💎 다이아몬드
  • 🛠️ Tech-Tip
  • 📝 블로그
  • ⚠️ 저작권
login
쿼드(QUAD) 드론연구소
쿼드(QUAD) 드론연구소

🕰️PX4와 ArduPilot의 개발 배경

4
  • ArduPilot 주요 개발자
  • ArduPilot
  • PX4 주요 개발자
  • PX4

📚드론 개발 라이브러리

10
  • 1.드론 개발자 로드맵(Load-Map)
  • 2.드론 개발 소프트웨어 개요
  • 3.MAVLINK
  • 4.PyMAVLink
  • 5.MavProxy
  • 6.MAVSDK
  • 7.MAVROS
  • 8.PX4 uORB with ROS 2
  • 9.자율주행드론 개발 프로세스
  • 10.학습 로드맵(Road-map)

🧩자율주행드론 시스템 아키텍처

4
  • Smart UAV is Robot!
  • PX4 System 아키텍쳐
  • PX4 Software 아키텍쳐
  • 쿼드(QUAD) 자율주행드론 UAV 시스템 아키텍처

🐧Linux (Ubuntu) 기초

14
  • Ubuntu 22.04 설치 (PC에 직접 설치)
  • Windows 10/11 WSL2 설치
  • Linux 개요
  • 리눅스 쉘 기본 명령어
  • 자주쓰는 명령어 정리 (Ubuntu 사용)
  • 자주 사용하는 터미널 명령어
  • Linux Package 에 대한 이해
  • su와 sudo 명령어 활용법
  • 리눅스 파일 시스템 이해하기
  • 리눅스 권한에 대한 이해
  • 빌드 시스템에 대한 이해
  • Make(Makefile) 사용 가이드
  • CMake 의 이해
  • CMake 사용 가이드

픽스호크(Pixhawk) 기초

29
  • 쿼드(QUAD) 자율주행 드론(UAV) 개발 키트
  • 픽스호크 드론의 기초 개요
  • 드론에 사용되는 물리학
  • 멀티콥터의 동작 원리
  • ArduPilot vs. PX4 선택
  • PX4 시스템 아키텍처
  • 지상국(Ground Control System) 선택
  • Pixhawk 6C 비행 컨트롤러
  • Pixhawk 6X 비행 컨트롤러
  • 드론에서 사용되는 센서간 통신제어 방식
  • Pixhawk 배선
  • Pixhawk 전원 공급
  • GPS/나침반
  • 거리 측정기 (LiDAR)
  • 고도(Altitude) 이해
  • 컴패니언 컴퓨터
  • 오프보드(Offboard) 제어
  • 컴패니언 컴퓨터 GPIO를 이용한 FC 제어
  • ESC(전자속도제어기)
    • ESC (전자속도제어기)
    • BLHeli32 및 BLHeli_S ESC
    • DShot ESC
    • DroneCAN ESC
    • PWM, OneShot 및 OneShot125 ESC
  • 무선제어시스템(Radio)
    • 무선 제어 시스템 (Radio)
    • 조종기/수신기
    • 수신기 RSSI 강도 표시
  • Telemetry 라디오
    • Telemetry 라디오
    • SiK Radio 설정
    • 다중 Point-to-Point 설정

Q250 사용 가이드

17
  • Q250 빠른 시작 가이드
  • QGroundControl 설치
  • Q250 펌웨어 재설치 (선택)
  • Q250 파라메터 설정
  • FS-i6x 조종기와 수신기 설정
  • 비행 모드
  • 전원 설정
  • Actuators (모터) 설정
  • Flight Behavior 설정
  • 텔레메트리 연결
  • GPS 연결
  • 컴패니언컴퓨터 전원 공급장치(UBEC) 사용 가이드
  • LED 컨트롤러 사용 가이드
  • 컴패니언 컴퓨터와 FC의 UART 케이블 연결
  • Optical-Flow & LiDAR 설정
  • 지자계 간섭 문제 해결
  • fake_gps (가상 GPS)

Q500 사용 가이드

10
  • Q500 사용 가이드 개요
  • QGroundControl 설치
  • Q500 펌웨어 설정
  • Q500 파라메터 설정
  • Radiomaster 조종기 설정
  • 수신기의 전파 수신 강도(RSSI) 설정
  • Pixhawk 6X Ethernet 설정
  • 컴패니언 컴퓨터와 FC 연결 설정
  • 시뮬레이터 사용 가이드
  • fake_gps (가상 GPS)

Q650 사용 가이드

9
  • Q650 사용 가이드 개요
  • QGroundControl 설치
  • Q650 펌웨어 설정
  • Q650 파라메터 설정
  • 조종기 설정
  • 수신기의 전파 수신 강도(RSSI) 설정
  • Pixhawk 6X Ethernet 설정
  • 컴패니언 컴퓨터와 FC 연결 설정
  • H-Flow 설정 가이드

첫 비행 및 튜닝

12
  • 첫 비행 및 튜닝 개요
  • 첫 비행 지침
  • 수동비행 지침
  • 임무 비행
  • 지오펜스
  • 안전지점(Rally Points)
  • 비행 모드
  • 지형 추적/유지
  • PID 튜닝
  • 비행 기록 분석
    • 비행 기록 분석
    • Flight Review를 이용한 로그 분석
    • 비행기록 분석 실습

PX4-Toolchain 개발환경 구성

4
  • Windows 10/11 WSL2 설치
  • ROS(1) + PX4 Toolchain 구성
  • Gazebo Classic 시뮬레이터 사용하기
  • ROS2 + PX4 Toolchain 구성

MAVLink-Python 프로그래밍

17
  • MAVLINK 개요
  • Python MAVLink 라이브러리 사용
  • 드론에 연결하기(Connect)
  • MAVLINK 메시지 주고받기
  • 비행 모드 (PX4 멀티콥터)
  • MAV_CMD
  • PX4 ‘OFFBOARD” 와 Ardupilot ‘GUIDED’ 모드 차이
  • PX4 Offboard 모드에서만 유효한 주요 MAV_CMD
  • 드론에 시동걸기(MAV_CMD_COMPONENT_ARM_DISARM)
  • 이륙하기(MAV_CMD_NAV_TAKEOFF)
  • 이동하기(SET_POSITION_TARGET_GLOBAL_INT)
  • 이동하기(SET_POSITION_TARGET_LOCAL_NED)
  • 기수 방향과 속도 변경
  • [별첨]참고 자료
  • MAVLINK 신뢰성 보장
    • MAVLINK 신뢰성 보장
    • MAVLINK 2 메시지 서명
    • [참고]HMAC-SHA256이란?

🛠️Tech-Tip

2
  • MAVLink Router
  • 쿼드(QUAD) 자율주행 드론용 컴패니언컴퓨터 소프트웨어 – Jetson Orin-Nano 용 (Ver.3.1-Ubuntu 22.04)
카테고리 보기
  • Home
  • Docs
  • PX4-Toolchain 개발환경 구성
  • Gazebo Classic 시뮬레이터 사용하기

Gazebo Classic 시뮬레이터 사용하기

7 min read

Gazebo Classic은 객체 회피 및 컴퓨터 비전 테스트에 특히 적합한 자율 로봇을 위한 강력한 3D 시뮬레이션 환경입니다. 이 페이지에서는 SITL 및 단일 차량에서의 사용에 대해 설명합니다. Gazebo Classic은 HITL 및 다중 차량 시뮬레이션 에도 사용할 수 있습니다 .

지원 차량: 쿼드( Iris , Hex(Typhoon H480), 일반 표준 VTOL(QuadPlane) , Tailsitter, 비행기, 로버, 잠수함/UUV.

인어 그래프: Gazebo 플러그인

설치

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명령은 아래에 나열되어 있습니다

Vehicle

Command

Quadrotor

make px4_sitl gazebo-classic

Quadrotor with Optical Flow

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

3DR Solo (Quadrotor)

make px4_sitl gazebo-classic_solo

Typhoon H480 (Hexrotor) (with video streaming)

make px4_sitl gazebo-classic_typhoon_h480

Standard Plane

make px4_sitl gazebo-classic_plane

Standard Plane (with catapult launch)

make px4_sitl gazebo-classic_plane_catapult

Standard VTOL

make px4_sitl gazebo-classic_standard_vtol

Tailsitter VTOL

make px4_sitl gazebo-classic_tailsitter

Ackerman UGV (Rover)

make px4_sitl gazebo-classic_rover

Differential UGV (Rover)

make px4_sitl gazebo-classic_r1_rover

HippoCampus TUHH (UUV: Unmanned Underwater Vehicle)

make px4_sitl gazebo-classic_uuv_hippocampus

Boat (USV: Unmanned Surface Vehicle)

make px4_sitl gazebo-classic_boat

Cloudship (Airship)

make px4_sitl gazebo-classic_cloudship

SITL 실행

PX4가 시작되면 아래와 같이 PX4 쉘이 시작됩니다.

______  __   __    ___
| ___ \ \ \ / /   /   |
| |_/ /  \ V /   / /| |
|  __/   /   \  / /_| |
| |     / /^\ \ \___  |
\_|     \/   \/     |_/

px4 starting.

INFO  [px4] Calling startup script: /bin/sh etc/init.d-posix/rcS 0
INFO  [param] selected parameter default file eeprom/parameters_10016
[param] Loaded: eeprom/parameters_10016
INFO  [dataman] Unknown restart, data manager file './dataman' size is 11798680 bytes
INFO  [simulator] Waiting for simulator to connect on TCP port 4560
Gazebo multi-robot simulator, version 9.0.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org
...
INFO  [ecl/EKF] 5188000: commencing GPS fusion

콘솔은 PX4가 기체별 초기화 및 매개변수 파일을 로드하고 시뮬레이터를 기다리는(및 연결하는) 상태를 표시합니다. [ecl/EKF] commencing GPS fusion라는 INFO 인쇄가 나오면 차량은 무장 준비가 된 것입니다.

메모

쿼드로터 모델을 마우스 오른쪽 버튼으로 클릭하면 상황에 맞는 메뉴에서 팔로우 모드를 활성화할 수 있어 계속해서 볼 수 있어 편리합니다.

가제보 클래식 UI

다음을 입력하여 공중으로 이륙할 수 있습니다.

pxh> commander takeoff

사용법/구성 옵션

센서/하드웨어 오류 시뮬레이션

안전 장치 시뮬레이션에서는 GPS 오류 및 배터리 소모와 같은 안전 장치를 작동하는 방법을 설명합니다.

헤드리스 모드

Gazebo Classic은 Gazebo Classic UI가 실행되지 않는 헤드리스 모드 에서 실행될 수 있습니다 . 이는 더 빠르게 시작되고 더 적은 시스템 리소스를 사용합니다(즉, 시뮬레이션을 실행하는 데 더 “가벼운” 방법입니다).

다음과 같이 일반 make명령 앞에 다음을 추가하면 됩니다.HEADLESS=1

HEADLESS=1 make px4_sitl gazebo-classic_plane

사용자 정의 이륙 위치 설정

Gazebo Classic의 이륙 위치는 환경 변수를 사용하여 설정할 수 있습니다. 이는 기본 이륙 위치와 세계에 설정된 모든 값을 모두 재정의합니다 .

설정할 변수는 PX4_HOME_ALT, PX4_HOME_LAT, PX4_HOME_LON및 입니다.

예를 들어:

export PX4_HOME_LAT=28.452386
export PX4_HOME_LON=-13.867138
export PX4_HOME_ALT=28.5
make px4_sitl gazebo-classic

시뮬레이션 속도 변경

PX4_SIM_SPEED_FACTOR환경 변수를 이용하여 실시간 대비 시뮬레이션 속도를 높이거나 낮출 수 있습니다.

export PX4_SIM_SPEED_FACTOR=2
make px4_sitl_default gazebo-classic

자세한 내용은 시뮬레이션 > 실시간보다 빠르게 시뮬레이션 실행을 참조하십시오 .

풍속 변경

풍속을 시뮬레이션하려면 wind_plugin 플러그인을 월드 파일에 추가하고 m/s 단위로 설정하세요( SET_YOUR_WIND_SPEED). 필요한 경우 windVelocityMax,windVelocityMean매개변수를 조정 합니다.

  <plugin name='wind_plugin' filename='libgazebo_wind_plugin.so'>
      <frameId>base_link</frameId>
      <robotNamespace/>
      <windVelocityMean>SET_YOUR_WIND_SPEED</windVelocityMean>
      <windVelocityMax>20.0</windVelocityMax>
      <windVelocityVariance>0</windVelocityVariance>
      <windDirectionMean>0 1 0</windDirectionMean>
      <windDirectionVariance>0</windDirectionVariance>
      <windGustStart>0</windGustStart>
      <windGustDuration>0</windGustDuration>
      <windGustVelocityMean>0</windGustVelocityMean>
      <windGustVelocityMax>20.0</windGustVelocityMax>
      <windGustVelocityVariance>0</windGustVelocityVariance>
      <windGustDirectionMean>1 0 0</windGustDirectionMean>
      <windGustDirectionVariance>0</windGustDirectionVariance>
      <windPubTopic>world_wind</windPubTopic>
    </plugin>

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 소음을 활성화/비활성화하려면:

  1. SDF 파일을 생성하려면 모든 차량에 대해 전망대 타겟을 빌드하세요. 예를 들어:Copymake px4_sitl gazebo-classic_iris
  2. 대상 차량에 대한 SDF 파일을 엽니다(예: ./Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris/iris.sdf ).
  3. gpsNoise요소 검색 :Copy<plugin name='gps_plugin' filename='libgazebo_gps_plugin.so'> <robotNamespace/> <gpsNoise>true</gpsNoise> </plugin>
    • 존재하는 경우 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를 로드하려면 다음과 같이 추가하면 됩니다.

make px4_sitl_default gazebo-classic_plane_cam__warehouse

시뮬레이션된 깊이(Depth) 카메라

Gazebo Classic 깊이 카메라 모델 Openni Kinect 플러그인을 사용하여 Intel® RealSense™ D455 스테레오 심도 카메라를 시뮬레이션합니다.

/camera/depth/image_raw이는 각각 및 ROS 주제 에 대한 깊이 이미지와 카메라 정보를 게시합니다 /camera/depth/camera_info.

이러한 이미지를 사용하려면 ROS 또는 ROS 2를 설치해야 합니다. ROS 및 Gazebo를 설치할 때 “설치 충돌을 방지”하는 방법에 대한 이 페이지 상단의 경고를 참고하세요.

전방을 향한 깊이 카메라를 사용하여 쿼드로터를 시뮬레이션할 수 있습니다.

make px4_sitl gazebo-classic_iris_depth_camera

또는 아래쪽을 향하는 깊이 카메라가 있는 쿼드로터:

make px4_sitl gazebo-classic_iris_downward_depth_camera

비디오 스트리밍

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에서 비디오 스트리밍을 시작하려면:

make px4_sitl gazebo-classic_typhoon_h480

Gazebo UI 비디오 ON/OFF 버튼을 사용하여 스트리밍을 일시 중지/다시 시작할 수 있습니다.

비디오 ON/OFF 버튼

Gazebo 비디오를 보는 방법

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

Gazebo에 대한 QGC 비디오 스트리밍 설정

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

QGC 비디오 스트리밍 가제보 예시

메모

Gstreamer Pipeline을 이용하여 영상을 시청하는 것도 가능합니다 . 다음 터미널 명령을 입력하기만 하면 됩니다.

gst-launch-1.0  -v udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' \
! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink fps-update-interval=1000 sync=false

자세한 로깅

모델에 문제가 있으면 SITL은 자동으로 실패합니다. 다음과 같이 VERBOSE_SIM를 사용하여 보다 자세한 로깅을 활성화할 수 있습니다.

export VERBOSE_SIM=1
make px4_sitl gazebo-classic

또는

VERBOSE_SIM=1 make px4_sitl gazebo-classic
업데이트된 날짜 2025년 12월 08일

당신의 감정은 어떤가요?

  • Happy
  • 보통
  • 슬픈

이 문서 공유 :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

제공 BetterDocs

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

© 2025 쿼드(QUAD) 드론연구소 - Kadence WP의 워드프레스 테마

  • 👨‍✈️ 초보 파일럿
  • 🎖️ 개발자
  • 🥇 전문가
  • 💎 다이아몬드
  • 🛠️ Tech-Tip
  • 📝 블로그
  • ⚠️ 저작권
Korean
English