콘텐츠로 건너뛰기
쿼드(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
  • 🐧Linux (Ubuntu) 기초
  • CMake 의 이해

CMake 의 이해

2 min read

CMake 가 도대체 뭔가요?

https://cmake.org

CMake(Cross Platform Make)는 Make와 빌드 관리 시스템을 만들기 위해 윈도나 리눅스 계열과 상관없이 사용할 수 있는 Kitware 라는 회사의 오픈소스 프로젝트이자 빌드 파일(Unix MakeFile..)을 생성해 주는 프로그램입니다.

그럼 CMake만 있으면 소스 코드를 빌드하여 프로그램을 만들 수 있을까요? 아닙니다. 정확히 말하자면 CMake를 사용해서 C/C++ 프로젝트를 직접 빌드를 하는 것이 아니라, CMakeLists.txt 파일과 CMake 프로그램을 통해서 빌드를 할 수 있는 파일을 생성하게 되면 지정된 컴파일러를 통해서 make, ninja와 같은 명령어로 프로젝트를 빌드하는 것입니다.

예를 들어 Make를 사용하여 빌드를 하는 경우, CMakeList.txt 내에 CMake 문법에 맞게 명령어들을 작성하고 CMake 프로그램을 실행하면 CMake가 CMakeList.txt에 정해진 대로 Makefile을 생성하고 사용자는 cmake 혹은 make 명령어를 통해 빌드할 수 있습니다.

만약 Make가 아닌 Ninja나 Windows Visual studio를 사용하는 경우에도 각각 그에 맞는 .ninja 파일과 project, sln 파일 등을 만들어 주는 역할을 합니다.

그래서 CMake가 뭐가 좋은 거죠?

위에서 간단히 CMake 개념 대해서 소개해 드렸는데요. CMake의 특징과 기존 Make를 사용하던 방식에 비해 어떤 것이 장점인지 정리해 보도록 하겠습니다.

특징

  • 소프트웨어 빌드에 특화된 명령어 집합의 언어로 독자적 설정 스크립트를 사용한다.
  • C, C++, 자바 등의 언어를 지원한다.
  • 각종 IDE에서 자체적으로 CMake를 분석할 수 있다.
  • 다양한 플랫폼(리눅스, 윈도)에서 크로스 컴파일을 지원한다.

장점

  • 조금만 익숙해지면 Make에 비해 복잡하지 않고 단순하고 사용자 친화적이다. 특히 프로젝트가 복잡해질수록 Make와 차이가 두드러진다.
  • 코드를 모듈화 해서 관리하기 쉽다. CMakeList.txt 혹은 xx.cmake 파일을 통해 구조적으로 모듈화 하기 쉽다.
  • 모듈화 된 라이브러리들의 의존성 관리가 쉽다. PUBLIC, PRIVATE 등의 속성을 통해 라이브러리의 캡슐화가 가능하다.
  • 각종 환경에 이미 적용되고 검증되어 있어서 호환성이 좋다.
  • 하나의 프로젝트로 시스템이나 플랫폼(OS 환경, 컴파일러)을 지원하도록 쉽게 구성할 수 있다.

무엇보다 제가 느던 장점은 사용자 친화적이라는 것입니다. C언어에서 느꼈던 답답함을 Python에서 많이 해결된 것을 느낄 수 있죠. C언어부터 주입식으로 학습했던 사람은 당연하게 느꼈던 모든 문장마다 ; 를 붙인다거나 void라는 개념, 특히 pointer와 같은 개념은 새롭게 시작하는 사람이 봤을 땐 이해가 잘 안 되고 하기 싫어집니다. 하지만 Python이란 언어는 사용자 친화적이어서 비개발자, 비전공자들도 코딩을 시작할 수 있을 만큼 진입장벽을 많이 낮추었습니다. 실제로 개발해야 할 로직도 복잡한데 기본적인 문법도 복잡하고 사용하기 어려우면 더 하기 싫어지니깐요.

저는 개인적으로 이런 Python의 철학이 CMake와도 흡사하다고 생각했습니다. 그래서 CMake는 결국 Make와 같은 간단하지만 복잡한 도구를 더 이해하기 쉽게 만들기 위해, 그리고 다양한 OS 환경에서도 쉽게 활용하기 위해 만들어졌다고 볼 수 있습니다.

업데이트된 날짜 2025년 11월 22일

당신의 감정은 어떤가요?

  • Happy
  • 보통
  • 슬픈

이 문서 공유 :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

제공 BetterDocs

답글 남기기 응답 취소

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

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

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