포괄적 키트를 사용하여 미니 드론 조립, 출시, 탐색, 개발

작성자: Stephen Evanczuk

DigiKey 북미 편집자 제공

4회전자 드론(쿼드콥터)은 다양한 응용 분야에서 계속적으로 점점 중요한 역할을 수행하지만 기계, 전자 및 소프트웨어 서브 시스템에 대한 지식이 결합된 복잡한 설계는 여전히 남아 있습니다. 설계자가 필요한 사항을 체계적으로 학습할 수도 있지만, 드론 비행 이론을 익히고 훈련하는 데 필요한 모든 요소가 결합되어 있는 드론 개발 키트를 사용하면 보다 유리하게 출발할 수 있습니다.

이 기사에서는 STMicroelectronics 개발 키트를 설명합니다. 이 개발 키트에는 다중 회전자 항공기의 복잡한 비행 제어 시스템을 완벽하게 보여주면서 개발자가 간단히 조립할 수 있는 미니 쿼드콥터 드론이 포함되어 있습니다.

쿼드콥터 역학

가장 인기 있는 형태의 쿼드콥터는 항공 사진, 현장 검사, 감시 등 광범위한 응용 분야에서 특히 안정적인 플랫폼을 제공합니다. 고정 날개 항공기 또는 가변 피치 회전자를 가진 헬리콥터와 달리 고정 피치 다중 회전자 드론은 작고 효율적인 DC 모터의 폭넓은 가용성으로 인해 상대적으로 설계가 간단하고 구성하기 쉽습니다.

이러한 드론의 기계적 단순성과 공기 역학적 안정성은 항공기의 비행 표면이나 헬리콥터의 주 회전자와 꼬리 부품을 조합하여 사용하지 않고 조정된 회전자를 사용하여 조작을 제어하는 데에서 기인합니다.

쿼드콥터에서 기체의 대각선 교차 위치에 있는 모터 쌍은 서로 동일한 방향으로 회전하지만 다른 두 모터와는 반대 방향으로 회전합니다. 네 모터가 모두 동일한 속도로 회전할 경우 드론이 상승, 하강 또는 방향 전환할 수 있습니다. 대각 모터 쌍이 다른 쌍보다 더 빠르게 회전할 경우 드론은 동일한 수평면에서 무게 중심을 기준으로 회전하면서 선회(요)합니다(그림 1, 왼쪽).

그림 1: 다른 회전자 속도를 조합하여 드론 조작. 예: 대각 모터 쌍(M2, M4)의 속도를 높여서 선회(요) 조작(왼쪽), 대각 모터 중 하나(M2)는 속도를 높이고 반대편 모터(M4)는 속도를 줄여서 복잡한 피치 롤 조작 완성(오른쪽) (이미지 출처: STMicroelectronics)

전방(또는 고물) 회전자의 속도가 변경되면 드론은 고정 날개 항공기가 상승 또는 하강 비행 하는 것처럼 피치 업 또는 피치 다운합니다. 좌현 또는 우현 쌍을 비슷하게 조정하면 드론이 중심선을 기준으로 회전하면서 롤링합니다. 대각 모터 쌍 또는 단일 모터의 상대적 속도를 조정하여 드론을 복잡한 자세(피치, 요, 롤 조합)로 손쉽게 비행할 수 있습니다(그림 1, 오른쪽).

드론의 비행 제어 시스템은 해당 회전자의 속도를 수정하여 원하는 조작을 완성하는 데 필요한 원하는 비행 자세를 갖도록 합니다.

예를 들어, 제어 시스템은 회전 조작 중에는 물론이고 수평 비행 중에도 바람, 열, 난기류 등과 같은 섭동력을 고려하여 회전자 속도를 지속적으로 조정해야 합니다. 실내에서 조작하는 미니 드론의 경우에도 비행 제어 시스템은 드론의 실제 자세와 원하는 자세의 차이를 측정할 수 있는 기능이 필요합니다.

엔지니어의 경우 잘못된 신호에 따른 회전자 속도를 수정하는 문제는 비례 적분 미분(PID) 컨트롤러를 통해 해결되는 제어 루프 피드백 문제와 비슷합니다. 마지막 개념적 과제는 드론의 자세를 측정하는 방법을 찾는 것이지만, 고정밀 스마트 센서를 사용하여 오일러 각을 계산하면 문제가 쉽게 해결됩니다.

오일러 각은 일부 xyz 기준면에 대한 물체의 XYZ 평면 방향을 나타냅니다. 여기서 두 평면은 N 선을 따라 교차합니다(그림 2). 오일러 각은 다음과 같이 정의됩니다.

  • α, x축과 N 사이의 각도
  • ß, z축과 Z축 사이의 각도
  • γ, N과 X축 사이의 각도

그림 2: 오일러 각(α, ß, γ)은 N 선에서 교차하는 고정 참조 프레임(xyz)에 대한 회전된 프레임(XYZ)의 상대적 방향을 설명합니다. (이미지 출처: Wikimedia Commons CC BY 3.0)

비행 제어 시스템의 경우 물체면과 기준면이 드론의 현재 방향(XYZ) 및 원하는 자세(xyz)와 정확히 일치합니다. 결국 오일러 각은 드론을 원하는 자세로 전환하는 데 필요한 축방향 회전을 나타냅니다. 기계식 자이로스코프가 현재 방향을 결정하는 데 사용되는 원시 데이터를 수년 동안 제공하고 있지만 고정밀 마이크로 일렉트로닉스 시스템(MEMS) 가속도계와 자이로스코프를 사용할 수 있다면 경량형 미니 드론에서도 이 방법을 적용할 수 있습니다.

현재는 모양과 크기에 상관없이 모든 드론은 오일러 각 계산에 위치 정보를 제공하는 센서 기반 자세방위기준장치(AHRS)를 사용합니다. 즉, 오일러 각은 원하는 비행 조직을 위해 모터 속도를 관리하는 PID 컨트롤러에 대한 오차 신호를 생성하는 데 사용됩니다. 문제는 필요한 속도와 정밀도로 모터를 수정하고 계산을 완료할 수 있는 모바일 플랫폼에서 소프트웨어를 사용하여 이 접근 방식을 구현하는 데 있습니다.

STMicroelectronics STEVAL-DRONE01 미니 드론 키트 및 연결된 소프트웨어는 이 접근 방식의 작업 예를 제공하며 드론 비행 제어 시스템에 대한 세부 정보를 탐색하는 기반으로 사용됩니다.

비행 준비된 미니 드론 키트

STEVAL-DRONE01 키트에는 소형 쿼드콥터를 제작하는 데 필요한 모든 부품이 포함되어 있습니다. 플라스틱 기체와 함께 이 키트에는 8.5mm x 20mm, 3.7V, 8520 무철심 DC 모터 네 개가 포함되어 있으며, 각 모터는 포함된 65mm 프로펠러로 약 35g의 추력을 발생할 수 있습니다. 모터와 프로펠러는 시계 방향 및 반시계 방향으로 회전하도록 구성된 두 개의 쌍으로 제공됩니다. 3.7V 리튬 이온 폴리머(LiPo) 배터리만으로 조립된 드론의 총중량 또는 기체 총중량(AUW)은 70g 미만이고 드론 작동에 선호되는 추력중량비는 약 2:1입니다.

하지만 기계 부품을 제외하고 키트에서 가장 중요한 요소는 STMicroelectronics STEVAL-FCU001V1 비행 컨트롤러 장치(FCU) 기판 및 관련 소프트웨어 패키지로서, 이 두 요소가 결합되어 앞서 언급한 비행 제어 시스템 기능을 제공합니다. FCU 기판은 Bluetooth 저에너지(BLE) 연결을 사용하는 정교하고 전력 효율적인 다중 센서 시스템입니다(그림 3).

그림 3: STMicroelectronics STEVAL-FCU001V1 비행 컨트롤러 장치는 BLE 연결과 DC 모터 구동 기능을 제공하는 완벽한 배터리 구동 다중 센서 시스템입니다. (이미지 출처: STMicroelectronics).

32비트 Arm® Cortex®-M4 기반 STMicroelectronics STM32F401 마이크로 컨트롤러를 기반으로 하여 구축된 이 기판에는 드론 위치 및 탐색과 관련한 서로 다른 특성을 측정하는 세 가지 MEMS 센서가 포함되어 있습니다.

  • STMicroelectronics LSM6DSL iNEMO 관성 측정 장치(IMU)는 AHRS 기능에 필요한 가속도계와 자이로스코프를 통합합니다.
  • STMicroelectronics LIS2MDL 자력계는 방향 탐지 기능을 구현하는 데 필요한 데이터를 제공합니다.
  • STMicroelectronics LPS22HD 압력 센서는 8cm 분해능으로 수직 위치를 결정하는 데 필요한 데이터를 제공합니다.

센서 입력 측에서 FCU의 STM32F401 마이크로 컨트롤러가 공유 SPI 버스를 통해 각 센서와 연결됩니다. 모터 출력 측에서 마이크로 컨트롤러의 TIM4 범용 타이머는 드론의 DC 모터를 구동하는 STMicroelectronics STL6N3LLH6 MOSFET 전력 트랜지스터의 게이트를 제어하는 데 사용되는 펄스 폭 변조(PWM) 신호를 제공합니다.

사용자 제어 명령을 수신하기 위해 FCU는 두 가지 옵션을 제공합니다. 즉, 사용자가 기판 실장형 STMicroelectronics SPBTLE-RF 모듈을 사용하여 Bluetooth로 연결된 스마트폰에서 드론을 제어할 수 있습니다. 이 모듈에는 STMicroelectronics BlueNRG-MS 트랜시버와 전력에 완벽히 최적화된 Bluetooth 스택이 포함되어 있습니다. 또한 표준 무선 통신 제어(RC) PWM 기반 원격 제어(remocon) 콘솔을 사용할 수도 있습니다. 마지막으로 배터리 및 전력 관리를 위해 기판에는 STMicroelectronics STC4054 리튬 이온 배터리 충전기 IC 및 LD39015 저드롭아웃(LDO) 조정기가 포함되어 있습니다.

또한 그림 3에 표시된 대로 FCU는 STMicroelectronics STEVAL-ESC001V1 등 외부 전자 속도 컨트롤러(ESC) 연결을 지원합니다. ESC를 사용하면 시스템에서 더 강력한 3상 모터를 구동할 수 있으므로 더 강력한 쿼드콥터 설계에서 FCU를 사용할 수 있습니다.

비행 준비 및 제어를 간소화하기 위해 키트는 STMicroelectronics STDrone Android 모바일 앱을 통해 Bluetooth 연결 옵션을 사용하도록 미리 구성되어 있습니다. 가상 remocon 콘솔로 설계된 이 앱은 제어 아이콘과 두 개의 가상 조이스틱을 사용하는 간단한 비행 제어 인터페이스를 제공합니다(그림 4).

그림 4: STMicroelectronics STDrone Android 모바일 앱은 회사의 STEVAL-DRONE01 개발 키트로 제작된 미니 드론을 작동하기 위한 가사 원격 제어 콘솔을 제공합니다. (이미지 출처: STMicroelectronics).

조립 후 드론 조작자는 STDrone 앱을 사용하여 모바일 장치로 드론을 띄우고 및 제어할 수 있습니다. 이륙하기 전에 조작자는 평평한 표면 위에 드론을 놓고 앱의 보정 아이콘을 녹색으로 전환될 때까지 길게 누릅니다. 그러면 보정이 완료된 것입니다. 안전을 위해 처음에는 드론 모터가 소프트웨어를 통해 비활성화되므로, 사용자가 다른 앱 아이콘을 눌러서 드론을 “무장”해야 합니다. 여기서 앱 사용자는 remocon 콘솔과 같은 기능을 연결하여 사용자가 가상 조이스틱을 움직여서 드론 회전자 속도와 비행 자세를 조정할 수 있도록 합니다.

초경량 STMicroelectronics는 질량과 힘이 부족하여 실외에서 광범위하게 사용할 수는 없지만 야외에서 미니 드론을 조작하는 드론 사용자는 조작 범위 내 드론 비행 제한사항에 대해 잘 알고 있어야 합니다. 미니 드론 조작자는 라이선스를 받거나 이 클래스의 초소형 드론을 등록할 필요가 없습니다. 그럼에도 불구하고 요구 사항을 준수해야 합니다.

비행 요구 사항에는 가시선 유지, 400ft. 최대 고도 준수, 비행 금지 구역(예: 미국의 경우 공항에서 8km 이내, 영국의 경우 1km 이내) 진입 금지, 스포츠 이벤트 또는 비상 작전 지역 인근에서 조작 금지 등이 포함됩니다. 드론 조작자는 Federal Aviation Administration의 B4UFLY 앱(미국) 또는 NATS(National Air Traffic Agency)의 Drone Assist 앱(영국)과 같은 모바일 앱을 사용할 수 있습니다. 각 앱은 사용자의 GPS 위치를 기반으로 하여 현지 영공 제한 관련 정보를 제공합니다.

비행 제어 소프트웨어

엔지니어에게 STMicroelectronics 드론 키트의 FCU의 흥미로운 기능은 STMicroelectronics가 오픈 소스 github 리포지토리에서 유지하는 연결된 소프트웨어 패키지입니다. STMicroelectronics STM32Cube 프레임워크를 기반으로 하여 구축된 이 애플리케이션은 Bluetooth 스택 미들웨어 및 기본 드라이버층에 계층화되어 있습니다. 드라이버층에서는 앞서 설명한 FCU 기판 장치에 대한 드라이버가 들어 있는 STM32Cube 하드웨어 추상화 계층(HAL) 및 STEVAL-FCU001V1 기판 지원 패키지(BSP)를 사용하여 하드웨어 상호 작용에 대한 세부 정보를 처리합니다.

이 애플리케이션에 대한 소프트웨어 아키텍처는 원격 제어, 위치 결정, PID 제어에 하나씩 세 개의 별도 모듈을 기반으로 하여 설계되었습니다(그림 5).

  • 원격 제어 모듈은 STDrone 모바일 앱 또는 RC remocon 콘솔의 입력을 처리합니다. 즉, 앱에서 데이터값을 수집하거나 remocon PWM 데이터를 변환한 후 해당 값을 원하는 비행 자세에 대한 오일러 각으로 변환합니다.
  • 위치 결정 모듈은 드론의 현재 비행 자세에 대한 오일러 각을 계산하는 데 필요한 AHRS 위치 예측에 사용할 가속도계 및 자이로스코프 데이터를 LSM6DSL IMU에서 수집합니다. LIS2MDL 자력계 및 LPS22HD 압력 센서에서 데이터를 수집하지만 이 기사를 작성하는 시점에 출시된 소프트웨어 버전에서 드론 비행 제어 계산을 수행하는 데에는 사용되지 않습니다.
  • PID 제어 모듈은 원하는 자세와 현재 자세의 오일러 각 차이를 사용하여 위치 오차 계산을 완료합니다. 기존 PID 제어 방법을 사용하는 이 모듈에서는 해당 오차 신호를 사용하여 각 모터의 속도를 조정함으로써 드론을 원하는 자세로 전환합니다.

그림 5: STMicroelectronics 미니 드론 비행 제어 소프트웨어는 별도의 모듈을 기반으로 하여 원격 제어 입력(파란색 박스, 레이블 (1)), 위치 결정(빨간색 박스, (2)) 및 PID 제어(어두운 파란색 박스, (3))를 처리하는 기능을 작성합니다. 그런 다음 PID 제어는 쿼드콥터의 네 모터를 구동합니다. (이미지 출처: STMicroelectronics).

이 기능 아키텍처를 사용하여 드론 애플리케이션은 사용자의 조작 명령을 조작을 수행하는 데 필요한 모터 속도 조정으로 변환하는 데 필요한 워크플로에서 이러한 모듈을 결합합니다(그림 6). 전체 기능은 복잡하지만 비행 제어 파라미터를 업데이트하는 기본 루프는 상대적으로 간단합니다.

그림 6: STMicroelectronics 미니 드론 비행 제어 소프트웨어는 센서 데이터를 지속적으로 읽어서 드론의 현재 비행 자세를 업데이트하고 드론의 네 모터 속도를 조정하여 원하는 추력, 피치, 롤, 요 비행을 조합하는 워크플로를 구현합니다. (이미지 출처: STMicroelectronics).

일련의 호출을 통해 하드웨어 및 소프트웨어 시스템을 초기화한 후 기본 애플리케이션 루틴 main.c가 무한 루프에 진입합니다(목록 1). 이 기본 루프 내에서 업데이트 프로세스는 일련의 호출을 사용하여 앞서 설명한 핵심 비행 제어 알고리즘을 수행합니다.

복사while (1) { . . .
        
    if (tim9_event_flag == 1) { // Timer9 event: frequency 800Hz tim9_event_flag = 0; . . .
           


      // AHRS update, quaternion & true gyro data are stored in ahrs ahrs_fusion_ag(&acc_ahrs, &gyro_ahrs, &ahrs); // Calculate euler angle drone QuaternionToEuler(&ahrs.q, &euler_ahrs); #ifdef REMOCON_BLE gRUD = (joydata[2]-128)*(-13); gTHR = joydata[3]*13; gAIL = (joydata[4]-128)*(-13); gELE = (joydata[5]-128)*13; /* joydata[6]: seek bar data*/ /* joydata[7]: additional button data first bit: Takeoff (0 = Land, 1 = Takeoff) second bit: Calibration When it changes status is active third bit: Arming (0 = Disarmed, 1 = Armed) */ gJoystick_status = joydata[7]; if ((gJoystick_status&0x04)==0x04){ rc_enable_motor = 1; fly_ready = 1; BSP_LED_On(LED2); } else { rc_enable_motor = 0; fly_ready = 0; } if (connected){ rc_connection_flag = 1; /* BLE Remocon connected flag for enabling motor output */ SendMotionData(); SendBattEnvData(); SendArmingData(); } else{ rc_connection_flag = 0; gTHR=0; rc_enable_motor = 0; fly_ready = 0; BSP_LED_Off(LED1); BSP_LED_Off(LED2); } if (joydata[7]&0x02){ rc_cal_flag = 1; BSP_LED_On(LED1); } #endif #ifdef REMOCON_PWM . . .
      #endif // Get target euler angle from remote control GetTargetEulerAngle(&euler_rc, &euler_ahrs); . . .
      
      FlightControlPID_OuterLoop(&euler_rc_fil, &euler_ahrs, &ahrs, &pid); . . .

    } . . .
  } 

이 루프 내에서 마이크로 컨트롤러의 범용 TIM9 타이머는 업데이트 속도를 제어하는 이벤트 플래그 역할을 합니다. 업데이트 타이머 이벤트가 발생하면 기본 루프가 AHRS 업데이트 루틴 ahrs_fusion_ag()를 호출합니다. 이 루틴은 가속도계(acc_ahrs) 및 자이로스코프(gyro_ahrs)의 최신 데이터를 사용하여 업데이트에 포함되는 센서 퓨전 계산을 수행합니다. 그러면 QuaternionToEuler() 루틴에서 쿼터니언 형식의 결과 데이터를 사용하여 드론의 현재 비행 자세에 대한 오일러 각을 계산합니다.

기본 루프의 이 지점에서 애플리케이션은 Bluetooth 데이터(Bluetooth가 활성화된 경우(#ifdef REMOCON_BLE)) 또는 외부 RC 콘솔(활성화된 경우)을 사용하여 원하는 비행 자세에 대한 데이터를 수집합니다. 여기서 이 코드는 기존 RC 콘솔 데이터를 미러링하는 네 변수 gRUD(방향타 위치 또는 요), gAIL(보조익 위치 또는 롤), gELE(승강타 위치 또는 피치) 및 gTHR(스로틀 위치)을 업데이트합니다. 데이터를 수집한 후 루프는 GetTargetEulerAngle() 루틴을 사용하여 드론 조작자의 명령에 따른 원하는 비행 자세의 오일러 각을 계산합니다. 하지만 계산하기 전에 루프의 이 섹션에서는 드론 조작자에게 중요한 기능을 입증합니다. 어떠한 이유로 인해 Bluetooth 연결에 실패할 경우 이 코드는 모터를 종료합니다. 그러면 드론이 제어되지 않고 즉각적으로 하강합니다. 명확하지만 단순하지 않은 소프트웨어 확장에서는 LIS2MDL 자력계 및 LPS22HD 압력 센서 데이터를 사용하여 드론을 시작 지점으로 이동하여 무조종 하강으로 착륙한 후 모터를 종료할 수 있습니다.

마지막으로 기본 루프에서는 FlightControlPID_OuterLoop()를 호출하여 PID 컨트롤러에 대한 대상 값을 업데이트합니다. FlightControlPID_innerLoop()는 800Hz에서 실행되도록 프로그래밍된 TIM9 타이머 이벤트와 연결된 인터럽트 콜백에서 수행되는 작업 시퀀스의 일부로 실행됩니다. 각 인터럽트에서 콜백 루틴은 센서를 읽고, 원시 데이터를 필터링한 후 기본 루프의 일부로 앞서 언급한 acc_ahrs 및 gyro_ahrs 변수와 연결된 FIFO(First-In First-Out) 버퍼를 업데이트합니다. 드론의 현재 비행 자세에서 이 업데이트된 데이터를 사용하여 콜백 루틴은 각 모터에 대한 새 PWM 값을 계산하는 FlightControlPID_innerLoop()를 호출합니다. 이 콜백은 마이크로 컨트롤러의 PWM 출력을 새 값으로 설정하는 set_motor_pwm()을 호출하여 업데이트 프로세스를 완료합니다.

개발자는 IAR Embedded Workbench for ARM, STM32용 KEIL RealView 마이크로 컨트롤러 개발 키트, STMicroelectronics의 무료 Windows 기반 System Workbench for STM32 통합 개발 환경(IDE) 등 다양한 도구 체인으로 오픈 소스 소프트웨어 패키지를 수정하여 대체 비행 제어 시나리오를 쉽게 탐색할 수 있습니다. 수정된 코드를 컴파일한 후 개발자는 STMicroelectronics ST-LINK/V2 회로 내 디버거 및 프로그래밍 장치 또는 키트와 함께 제공된 JTAG 직렬 전선 디버그(SWD) 기판에 연결된 STMicroelectronics STM32 Nucleo 개발 기판을 사용하여 펌웨어를 FCU로 로드할 수 있습니다.

결론

간단한 기계 설계로 인해 다중 회전자 드론은 항공 사진, 현장 검사, 감시 등 다양한 응용 분야에서 널리 사용되고 있습니다. 스마트 센서에서 제공하는 제어 알고리즘을 사용하는 이러한 드론에서는 정교한 비행 제어 소프트웨어를 사용하여 안정적인 작동을 지원하고 사용자의 드론 조작 명령에 빠르게 응답할 수 있습니다.

개발자가 필요한 기계, 전기 및 소프트웨어 부품을 직접 찾아서 조립할 수 있지만, STMicroelectronics의 포괄적인 미니 드론 개발 키트를 사용하면 미니 드론 설계 및 작업을 쉽게 도입할 수 있습니다. 개발자는 연결된 오픈 소스 비행 제어 소프트웨어를 탐색 및 수정하여 다중 회전자 드론 비행 역학 및 제어 알고리즘을 신속하게 경험할 수 있습니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk는 전자 산업에 관해 하드웨어, 소프트웨어, 시스템, 응용 제품(예: IoT)을 비롯한 광범위한 주제에 대해 20년 이상 집필한 경력을 갖고 있습니다. 그는 신경 과학의 뉴런 네트워크 박사 학위를 받았으며항공 우주 산업 분야의 광범위하게 분포된 보안 시스템 및 알고리즘 가속 메서드 관련 업무를 수행했습니다. 현재, 기술 및 엔지니어링에 대해 기사를 쓰지 않을 때에는 인식 및 추천 시스템에 대한 심층적 학습 응용 프로그램을 연구하고 있습니다.

게시자 정보

DigiKey 북미 편집자