2022년 12월 18일 일요일

드론 자율비행제어 지원 플랫폼 픽스호크(PX4) 소개, 역사 및 사용방법

이 글은 드론 자율비행제어 시 자주 사용되는 오픈소스 플랫폼인 픽스호크(PX4)에 대한 소개, 개발역사 및 사용 방법에 대해 간략히 정리한다. 

픽스호크는 무선 통신 장치인 Telemetry가 연결된 그라운드 스테이션(ground station. 보통 노트북)에 설치된 오픈소스인 미션플래너와 데이터 통신을 할 수 있다. 미션플래너 지도 상에 사용자가 입력한 경로(waypoint)를 무선으로 픽스호크에 전송하고, 픽스호크는 드론이 자율비행할 수 있도록, 모터 등 액추에이터를 제어한다. 이때, 드론에 연결된 센서로 부터 얻은 데이터는 미션플래너에서 모니터링할 수 있다. ROS(Robot Operating System)와 PX4-ROS Bridge를 통해, 통신할 수 있어, 상호 데이터를 교환하거나, ROS에서 처리된 정보를 비행에 활용할 수 있다.
PX4 기반 자율비행시스템 개발 사례(Autonomous flight mission in ROS using MavROS + PX4 + Gazebo)

참고로, 미션 플래너 및 송수신기 관련 내용은 아래 링크를 참고하길 바란다.

Pixhawk PX4 소개
2008년. 픽스호크는 Lorenz Meier 가 2008년 개발한 오픈소스 자율비행 지원 도구이다. ETH Zurich 석사 연구 프로젝트로 진행, 주변 14명 팀원 모아 개발되었다. 이후 개발 역사는 다음과 같다.
  • 2009년. 9개월동안 개발. 실내 드론 비행 관련 유럽 초소형 항공기 대회 우승. 팀 이름이 픽스호크였음. 오픈소스로 릴리즈함. 개발된 통신 프로토콜 MAVLink는 산업계 표준이 됨. 
  • 2011년. 이전까지 개발된 소스코드 폐기후 재개발. 이 결과로 PX4가 개발됨. 드론 제조업체인 3D Robotics와 협업해 하드웨어 구축 및 판매 시작. ArduPilot과 협력해 호환성 추가. 하드웨어 설계 문서는 github에 공개함. QGroundControl 미션 플래너 개발. 
  • 기능 추가 후 전체 코드 자동 테스트 수행됨. 매월 평균 1,000회 테스트 비행 거침. 
  • 2014년. Dronecode 설립. 개방형 기술 표준 추진. 오픈소스 커뮤니티 9,600 명 이상 사용자 및 600명 이상 기여 개발자로 성장. 
  • 2019년. 개발 코드가 150만줄로 성장.
  • 2020년. Skynode 통해 LTE 클라우드 연결 지원. 무선 업데이트 지원. 
PX4와 주변 장치 연결 방법
장치 연결 레이아웃은 다음과 같디(참고 - Pixhawk Wiring Quick Start). 

픽스호크 연결 개요도
  • (필수) 3DR GPS+컴파스와 연결. 이는 현재 위치 데이터를 제공해 줌. GPS 6-wire 포트와 I2C 2-wire (MAG 센서. 고도)에 연결. 
  • (필수) 3DR 파워 모듈과 6-wire 포트에 연결. 파워 모듈은 LiPo 배터리와 직접 연결됨. 
  • (필수) 에러 및 상태 표시 부저 연결. 안전 스위치 연결
  • (필수) 통신 수신기 연결은 RC IN 핀과 연결함.
  • (옵션) 3DR Radio 키트와 픽스호크 6-wire 포트를 연결. 데이터 통신 담당.
  • I2C 인터페이스 splitter 로 4개 추가 병렬 연결 포트 사용 가능. 이 포트를 통해, 외부 상태 LED, 컴파스 센서, 디지털 air speed 센서 및 다른 센서들을 연결할 수 있음
픽스호크는 파워포트로 부터 전원이 공급된다. 적절 동작 전원 공급 여부는 자동 체크해 LED로 표시된다.
전원 연결 및 표시등

주의사항으로 서보모터 등을 픽스호크의 PWM 출력에 직접 연결하지 말라. RCIN 포트는 저전력 장치만을 위해 디자인되어 있다. 서버 및 릴레이는 PX4로 부터 많은 전류를 가져간다. 만약, PX4의 RCIN에 전원 인가되어 있는 중, 서버모터를 직접 포트에 연결할 경우, PX4가 고장날 수도 있다.

연결 장치 호환성은 다음과 같다.
  1. PPM-Sum receivers
  2. SBUS receivers
  3. IBUS receivers
  4. FPort receivers
  5. Spektrum DSM, DSM2, DSM-X 위성 수신기
  6. SRXL 버전1, 2 수신기
  7. Graupner SUM-D 
Single wire per channel (PWM) 지원을 위해, PPM 인코더는 수신기 출력을 PPM-SUM 으로 변환할 수 있음 (참고 - Radio Control Systems).
FRSky 송신기 제품 예 및 3DR GPS + Compass 모듈

모터 연결은 다음과 같다. 
이는 다음과 같이 모터 신호선과 각 채널을 연결한 것이다.
Pin 1 = Motor 1 - - Pin 5 = Motor 5, Pin 2 = Motor 2 - - Pin 6 = Motor 6
Pin 3 = Motor 3 - - Pin 7 = Motor 7, Pin 4 = Motor 4 - - Pin 8 = Motor 8

상세 내용은 Connect ESCs and Motors 문서를 참고하라.
다음은 다양한 장치를 연결한 예시이다(참고 - Advanced Pixhawk Quadcopter Wiring Chart).

픽스호크 연결 예시(참고)

픽스호크는 제공 전압 등 적절한 스펙 범위내에서 동작한다. 
다음과 같은 기타 장치 연결은 Optional Hardware 문서를 참고하라.
  • Airspeed Sensor
  • AIS (Automatic Identification System)
  • Barometer (external)
  • Button Inputs
  • Buzzer
  • Cameras & Gimbals
  • Companion Computers
  • Display (Onboard)
  • ESCs and Motors
  • DroneCAN Adapter Node
  • DroneCAN Peripherals
  • First Person View Video
  • Grippers
  • Joystick or Gamepad
  • LEDs (external)
  • PPM Encoder
  • Radio Control Systems
  • Received Signal Strength Indication (RSSI)
  • Relay Switch
  • Servos
  • Smart Batteries
  • Telemetry Radio
  • Video (High Definition)
  • Winch
모터 장비 연결 예시 (좌상 - 참고, 우상 - 참고, 좌하 - 참고, 좌우 - 참고)

CANbus 연결
CAN(Controller Area Network)는 신뢰성있는 유선 네트웍으로 ESC(Electronic speed controllers), 센서, 기타 장치들과 다른 장치들 간의 통신을 가능하게 한다. 서로 다른 신호 체계를 이용해 수평적 통신이 가능하도록 설계되어, 긴 케이블 길이를 가진 네트웍에서도 신뢰성있는 통신이 가능하다. 이를 통해, 통신 실패 가능성을 없앤다. CAN는 상태 피드백을 장치로 부터 전달받고, 펌웨어 업데이트를 지원한다. 

PX4는 두가지 종류의 CAN 통신 프로토콜을 지원한다. 이 두 프로토콜 모두 오래전에는 UAVCAN(참고)으로 불렸다. PX4는 다른 KDECAN과 같은 CAN 프로토콜은 지원하지 않는다.
  • DroneCAN(UAVCAN v0): PX4는 가장 기본적인 셋업으로 이를 권장한다. 많은 테스트로 신뢰성있게 동작한다(참고 - 소스코드).
  • Cyphal(UAVCAN v1): PX4는 현재 개발 진행 중인 이 프로토콜을 지원한다. 유연성있고 복잡한 vehicle 장치 제어를 지원한다. 
CAN네트워크 연결 예시는 다음과 같다. 4개의 CAN ESC와 GNSS가 연결되어 있고, 각 ESC는 모터를 제어하도록 연결되어 있다.
  
CAN 체인 연결 예시와 CAN 체인 termination resistor
PX4와 실제 CANbus 연결 사례(DroneCAN ESCs)

각 장치들은 체인으로 연결된다. 그래서 확장성이 높다. 체인의 말단은 120옴 termination resistor(참고)로 두 선이 연결되어 있어야 한다. 비행 컨트롤러와 몇몇 GNSS 모듈은 편리하게도 자체에 termination resistor가 내장되어 있다. 

앞의 다이어그램에는 전원 연결이 표시되어 있지는 않다. 각 장치 제조사에는 CAN 버스 자체로 부터 전원이 공급되거나 각 장치별 개별 전원이 공급되도록 가이드 문서를 줄 것이다. 
  • Connectors: 픽스호크는 4 핀 JST-GH 연결 포트와 호환된다. 두 컨넥터들은 입력과 출력으로 사용되어 체인을 연결할 때 사용된다. 픽스호크는 두개 CAN 인터페이스 연결을 지원한다.
  • Firmware: CAN 은 오픈소스 펌웨어로 실행된다. PX4는 DroneCAN 펌웨어 오픈소스로 동작된다(참고).
연결 시 PX4에서는 연결 방법에 대한 영상(Intro to UAVCAN and Practical Example)등을 제공하므로 참고한다.

DroneCAN 설정 및 연결 상세는 다음을 참고한다.
참고로, ArduPilot은 브러쉬 모터 ESC의 RC PWM (신호는 1ms에서 2ms 폭을 가짐) 입력을 지원한다. 대부분 hobby 등급 RC Car ESC는 이 유형이다. 브러쉬 모터는 duty cycle 동안 스피드를 제어하게 된다. 다음은 검증된 모터 드라이버들이다. 
  • Sabertooth Dual 32A Motor Driver supports “Normal” when the Sabertooth is in RC Mode
  • Pololu G2 High-Power Motor Driver supports “BrushedWithRelay”
  • Pololu DRV8838 Motor Driver supports “BrushedWithRelay”
  • RoboClaw 2x7A Motor Controller supports “Normal” when the Roboclaw is in RC Mode
  • L298N Motor Driver. See also these setup instructions
  • SkyRocket drones use “Brushed” motors
UAVCAN 사용 사례
CANbus는 유선 인터넷과 비슷한 방식으로 동작한다. CANBus는 4선 케이블과 연결되어, 데이지 체인 방식으로 처리된다. 캔버스와 연결되는 장치는 다른 캔버스 연결 장치와 통신 방법(프로토콜)이 펌웨어로 내장되어 있어야 한다. 캔버스는 보쉬 기업에 의해 자동차용으로 설계되었다. 
캔버스 네트웍 기반 자동차 장치 통신 및 캔버스 허브
캔버스 적용된 드론 개발 사례(참고 - CANbus for Ardupilot with UAVCAN and UC4H)

PX4기반 로버(rover) 개발 사례
로버는 PX4, ardupilot을 이용해 자동 가이드 기능을 실행할 수 있다. 사전 정의된 경로를 통해, 완전 자율 주행이 가능하다. 다음 로버 플랫폼은 2013, 2014년 Sparkfun 자율 주행 대회(2018년 대회까지 기록)에서 우승한 것이다 (비디오 데모).

PX4, ardupilot 기반 2013년 대회 출전 로버(좌), 자율 주행 트랙터 및 차(우)

다음은 PX4를 이용해 RC 카를 개발한 예이다(참고 - Motor and Servo Connections).
RC 카 개발 예

마무리
픽스호크를 사용하면, 미션플래너 지도 상에 사용자가 입력한 경로를 따라 드론과 같은 로보틱스 플랫폼이 자율비행/이동 할 수 있다. 또한, PX4 ROS Bridge를 이용하면, ROS와 연동해 좀 더 지능적인 자율비행을 지원할 수 있다. 픽스호크는 파트너 기업이 많아, 호환되는 센서나 장비 연결이 손쉽다. 다만, 오픈소스 특성상 목적에 맞는 기기 개발 시 부족한 스펙 및 기능은 직접 개발하거나 커스텀해서 사용해야 한다.
PX4 ROS Bridge 개요도

레퍼런스

댓글 없음:

댓글 쓰기