드론 자율주행

chelseey·2025년 8월 12일
0

ROS

Jetson에 설치되어 드론의 자율주행 소프트웨어 프레임워크 역할을 수행.
Jetson은 ROS를 통해 다음과 같은 작업을 처리:

  • 센서 데이터 처리
    : 드론에 장착된 카메라, LiDAR 등의 센서 데이터를 ROS 노드들이 받아와 처리. ex. 카메라 영상에서 객체를 인식, LiDAR 데이터를 기반으로 주변 환경 지도를 생성하는 작업 등을 수행

  • 자율주행 알고리즘 실행
    : 객체 인식 결과를 바탕으로 장애물을 회피하거나, 경로 계획을 수립하는 등 자율주행 알고리즘을 실행

  • 비행 제어 명령 생성
    : ROS에서 생성된 비행 제어 명령(예: 목표 속도, 위치)을 드론의 비행 제어기(Flight Controller)에 전달

QGC와 ROS

QGC : 실시간 모니터링, 지상 관제소(GCS) 역할
ROS : 실시간 자율주행

ROS의 역할

  • 상황 인지
    : 드론에 탑재된 센서(ex. 카메라, LiDAR)를 통해
    주변 환경을 실시간으로 인지, 분석.

  • 장애물 감지, 회피

  • 동적 경로 계획 : 실시간으로 최적 경로를 생성 및 유도

  • 고급 임무 수행

모든 드론 부품과 지상국이 서로 대화하는 통신 프로토콜.

포함되는 정보 :
ex. 드론의 위치, 속도, 고도, 배터리 잔량, 비행 모드.
이륙, 착륙, 특정 위치로 이동과 같은 명령.

ROS 패키지로, MAVLink ↔︎ ROS를 연결해주는 브릿지(통역) 역할을 함.

ROS는 자체적인 메시징 시스템을 사용하기 때문에,
드론의 MAVLink 메시지를 바로 이해할 수 없음.

  • ROS 2 -> MAVLink
    : ROS 2 노드가 명령을 발행하면, MAVROS가 이를 받아들여 MAVLink 프로토콜로 변환한 후 FC에 전송

  • MAVLink -> ROS 2
    : FC가 보내는 드론의 상태 정보(위치, 속도, 배터리 잔량 등)는 MAVLink 메시지로 전송됨.
    MAVROS는 이 메시지를 다시 ROS 2가 이해할 수 있는 형식으로 변환하여 다른 노드가 사용할 수 있게 함.

시뮬레이션으로 자율주행 알고리즘 개발

  1. Gazebo 시뮬레이터 설치
    : 드론과 물리적 환경을 가상으로 구현할 수 있는 시뮬레이터 설치

  2. PX4 펌웨어 빌드
    : PX4 소스 코드 다운로드하고, Gazebo 시뮬레이터용으로 빌드

  3. ROS 노드 개발
    : ROS 프레임워크 내에서 자율주행 알고리즘을 구현하는 노드를 만듭니다. 이 노드들은 센서 데이터(가상 센서 데이터)를 받아 경로를 계획하고, 다음 이동 지점(waypoint) 또는 속도 명령을 계산함.

  4. 시뮬레이션 실행 및 테스트
    : Gazebo와 PX4 펌웨어를 실행하고, ROS 노드를 띄워 가상의 드론을 제어. QGC를 통해 시뮬레이션 중인 드론의 상태를 실시간으로 모니터링가능.

-> 시뮬레이션에서 충분히 검증되었다면, 실제 드론으로 옮겨 테스트를 진행

이미지 학습과 자율주행 시스템의 연동

학습된 모델은 ROS의 노드(Node) 형태로 구현됨.
카메라 센서가 이미지를 수신하면, 이 이미지는 ROS 토픽을 통해 학습된 모델을 실행하는 노드로 전달

0개의 댓글