マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > 包括的なキットを使用した小型ドローンの組み立て、起動、考察、開発

包括的なキットを使用した小型ドローンの組み立て、起動、考察、開発

著者 Stephen Evanczuk 氏
Digi-Keyの北米担当編集者 提供
2019-06-04
マルツ掲載日:2019-09-02


 4ロータードローン(クワッドコプター)は、広範な用途で重要な役割を果たしていますが、その設計は今でも機械、電子、ソフトウェアサブシステムの知識を組み合わせるという複雑な試みです。設計者は必要な知識を学ぶこともできますが、ドローン飛行の理論と実践において経験を積むのに必要なすべての要素を集約したドローン開発キットにより、有利なスタートを切ることができます。

 この記事では、開発者に小型クワッドコプタードローンを提供するSTMicroelectronicsの開発キットについて説明します。このドローンの組み立てはシンプルですが、マルチローター航空機の背後にある複雑な飛行制御システムを十分に示しています。

クワッドコプターの力学

 最も一般的な形態のクワッドコプターは、航空写真、現場検査、監視などの広範な用途で特に安定したプラットフォームを提供します。固定翼機や可変ピッチローターを搭載したヘリコプターとは異なり、固定ピッチのマルチロータードローンの設計は比較的シンプルです。また、幅広く入手できる効率的な小型DCモータを採用しているため組み立ても簡単です。

 これらのドローンの機械的な簡素性と空気力学の安定性は、航空機のように舵面の使用を調整したり、ヘリコプターのように主要ローターと尾部の組み合わせを調整したりするのではなく、ローターの使用を調整して操作を制御することによりもたらされます。

 クワッドコプターでは、機体の対角線上に配置されたモータのペアが同じ方向に回転します。ただし、他の2つのモータとは反対方向に回転します。4つのモータがすべて同じ速度で回転する場合、ドローンは上昇、下降、またはホバリングできます。対角線上のペアが他のペアよりも高速で回転する場合、ドローンはヨーイングし、同じ水平プレーン上にとどまりつつその重心の周辺を回転します(図1の左)。


図1:ローター速度の異なる組み合わせを使用することにより、ドローンを操作できます。たとえば、対角線上のペアの両モータ(M2、M4)を加速してヨー操作(左)したり、対角モータの1つ(M2)を加速すると同時にもう一方の対角モータ(M4)を減速してより複雑なピッチロール操作(右)を実行できます。(画像提供:STMicroelectronics)

 前部(または後部)ローターの速度を変更すると、ドローンは飛行中に上昇または下降する固定翼機のようにピッチアップまたはピッチダウンします。ポートまたはスターボードペアの同様の調整により、ドローンはロールし、センターラインの周りを回転します。ドローンは、モータの対角ペアまたは単一モータの相対速度を調整することにより、さらに複雑な飛行姿勢(ピッチ、ヨー、およびロールの組み合わせ)を簡単に実現できます(図1の右)。

 ドローンの飛行制御システムは、適切なローターの速度変更を変更して、望ましい操作を完了するのに必要な目標飛行姿勢を実現します。

 実際、制御システムは旋回中だけでなく水平飛行中にもローター速度を常に調整して、風、熱、乱気流などの摂動力に合わせて修正を行う必要があります。屋内で動作する小型ドローンの場合でも、飛行制御システムにはドローンの実際の姿勢と目標姿勢の差を測定する機能が必要です。

 技術者にとって、誤差信号に基づくローター速度の修正の問題は、比例・積分・微分アルゴリズム(PID)コントローラにより解決される一般的な制御ループフィードバックの問題です。残っている唯一の概念的課題は、ドローンの姿勢を測定する方法を見つけることです。ただし、オイラー角計算を提供する高精度のスマートセンサを使用することにより、その問題を即座に解決できます。

 オイラー角は、基準のxyzプレーンに対する物体のXYZプレーン方位を示しており、2つのプレーンが線Nに沿って交差します(図2)。そこで、オイラー角は以下のように定義されます。

・α:x軸とN間の角度
・s:z軸とZ軸間の角度
・γ:NとX軸間の角度


図2:オイラー角(α、s、γ)は、線Nで交差する固定の基準フレーム(xyz)に対する回転フレーム(XYZ)の相対的方位を示しています。(画像提供:Wikimedia Commons CC BY 3.0)

 飛行制御システムの場合、物体プレーンと基準プレーンはドローンの現在の方位(XYZ)と目標姿勢(xyz)に直接対応しています。結果として、オイラー角はドローンを目標姿勢にするのに必要な軸回転を示します。長年にわたり機械的ジャイロスコープは現在の方位を特定するのに必要な生データを提供してきましたが、高精度のマイクロエレクトロメカニカルシステム(MEMS)加速度センサおよびジャイロスコープが入手可能になったため、軽量の小型ドローンでもこの方法のアプリケーションが実現されました。

 現在、あらゆる形とサイズのドローンが、オイラー角計算に位置情報を提供するセンサベースの姿勢および方位基準システム(AHRS)に依存しています。結果として、オイラー角は、モータ速度を管理して目標の飛行操作を達成するPIDコントローラ向けに誤差信号を作成するのに使用されます。課題は、必要な速度と精度で計算とモータ修正を完了できるモバイルプラットフォーム上のソフトウェアを使用してこのアプローチを実装する点にあります。

 STMicroelectronicsのSTEVAL-DRONE01小型ドローンキットと関連ソフトウェアは、このアプローチの実施例を提供し、ドローン飛行制御システムの詳細を考察するための基礎となります。

飛行準備の整った小型ドローンキット

 STEVAL-DRONE01キットは、小型クワッドコプターを構築するためのすべての部品をパッケージ化しています。プラスチックの機体に加えて、このキットには4個の8.5×20mm、3.7V、8520コアレスDCモータが搭載されています。各モータに設置された65mmプロペラによる推力は約35gです。

 モータおよびプロペラは、2組のペアで提供され、時計回りおよび反時計回りの回転が設定されています。3.7Vのリチウムイオンポリマー(LiPo)電池を使用して完全に組み立てた場合、ドローンの総重量(またはAUW)は70g以下です。これにより、ドローンの動作に最適な2:1の推力対重量比を提供します。

 ただし、機械部品に加えて、キットの最大の特長は、STMicroelectronicsのSTEVAL-FCU001V1飛行制御ユニット(FCU)ボードと関連ソフトウェアパッケージです。これらは、前述の飛行制御システム機能を提供します。FCUボードは、洗練された電力効率の高いマルチセンサシステムで、Bluetooth low energy(BLE)接続を備えています(図3)。


図3:STMicroelectronicsのSTEVAL-FCU001V1飛行制御ユニットは、BLE接続とDCモータドライブ機能を備えた完全な電池駆動のマルチセンサシステムです。(画像提供:STMicroelectronics)

 このボードは、32ビットArm Cortex-M4ベースのSTMicroelectronicsのSTM32F401マイクロコントローラを中心に構築されており、3個の異なるMEMSセンサが含まれます。これにより、以下を含むドローンの位置調整およびナビゲーションに関連するさまざまな特性を測定できます。

・STMicroelectronicsのLSM6DSL iNEMO慣性計測ユニット(IMU)は、AHRS機能に必要な加速度センサとジャイロスコープを内蔵しています。
・STMicroelectronicsのLIS2MDL磁力計は、方向検出機能を実装するためのデータを提供します。
・STMicroelectronicsのLPS22HD圧力センサは、8センチ(cm)分解能で垂直位置を特定するためのデータを提供します。

 センサ入力側では、FCUのSTM32F401マイクロコントローラが共有SPIバス全体にわたり各センサと接続します。モータ出力側では、マイクロコントローラのTIM4汎用タイマがパルス幅変調(PWM)信号を提供します。これは、ドローンのDCモータを駆動させるSTMicroelectronicsのSTL6N3LLH6 MOSFETパワートランジスタのゲート制御に使用されます。

 ユーザーの制御コマンドを受信するために、FCUは2つのオプションを提供しています。まず、ユーザーはオンボードのSTMicroelectronicsのSPBTLE-RFモジュールを使用してBluetooth接続されたスマートフォンからドローンを制御できます。これには、完全に電力が最適化されたBluetoothスタックを備えた同社のBLUENRG-MSトランシーバが含まれています。別のオプションとして、ユーザーは標準の無線制御(RC)PWMベースのリモート制御(リモコン)コンソールを使用できます。最後に、電池および電源管理を行うために、ボードにはSTMicroelectronicsのSTC4054リチウムイオン電池充電器ICおよびLD39015低ドロップアウト(LDO)レギュレータが含まれています。

 図3に示すように、FCUはSTMicroelectronicsのSTEVAL-ESC001V1などの外部電子速度コントローラ(ESC)への接続もサポートします。ESCにより、システムは堅牢性の高い3相モータを駆動させ、より強力なクワッドコプター設計でFCUを使用できるようになります。

 飛行の準備と制御を簡素化するため、キットはSTMicroelectronicsのST Drone AndroidモバイルアプリでBluetooth接続オプションを使用するように事前設定されています。このアプリは仮想リモコンコンソールとして設計され、ユーザーに制御アイコンや2個の仮想ジョイスティックを備えたシンプルな飛行制御インターフェースを提供します(図4)。


図4:STMicroelectronicsのSTDrone Androidモバイルアプリは、同社のSTEVAL-DRONE01開発キットで構築された小型ドローンを操作するための仮想リモート制御コンソールをユーザーに提供します。(画像提供:STMicroelectronics)

 組み立て後、ドローン操作者はSTDroneアプリを使用し、自分のモバイルデバイスでドローンを起動および制御できます。離陸前に、操作者はドローンを平らな場所に置き、較正が完了したことを示す緑色に変わるまでアプリの較正アイコンにタッチする必要があります。安全のため、初期設定ではソフトウェアによってドローンのモータが無効にされています。

 ユーザーは別のアプリアイコンをタップすることにより、ドローンを作動可能にする必要があります。この時点で、アプリのユーザーインターフェースはリモコンコンソールのように機能します。これにより、ユーザーは仮想ジョイスティックを動かして、ドローンのローター速度や飛行姿勢を調整できます。

 超軽量のSTMicroelectronicsドローンには広範な屋外使用に必要な重量とパワーはありませんが、小型ドローンを屋外で操作するドローン操作者は操作予定地域のドローン飛行制限に注意する必要があります。小型ドローンの操作者は、ライセンスを取得したり、このクラスの小型ドローンを登録したりする必要はありません。ただし、要件を満たす必要があります。

 これらの飛行要件には、見通し線の維持、最高400フィートの高度順守、飛行禁止区域(米国では空港から5マイル以内、英国では空港から1km以内)の回避、スポーツイベントや緊急活動付近での操作回避などが含まれます。ドローン操作者は、米国では連邦航空局のB4UFLYアプリ、英国では航空管制業務サービス(NATS)のDrone Assistアプリなどのモバイルアプリを使用できます。これらのアプリは、ユーザーのGPS位置に基づいて地元の空域制限に関する情報を提供します。

飛行制御ソフトウェア

 技術者にとって魅力的なSTMicroelectronicsドローンキットのFCU機能は、STMicroelectronicsがオープンソースのGitHubリポジトリで維持している関連ソフトウェアパッケージです。このアプリケーションはSTMicroelectronicsのSTM32Cubeフレームワーク上に構築され、Bluetoothスタックミドルウェアおよび基礎となるドライバ層の上に配置されます。

 ドライバ層は、STM32Cubeハードウェア抽象化レイヤ(HAL)およびSTEVAL-FCU001V1ボードサポートパッケージ(BSP)を使用してハードウェアのやり取りの詳細を処理します。これには、前述したFCUボードデバイス用のドライバが含まれます。

 このアプリケーションのソフトウェアアーキテクチャは、リモート制御、位置測定、PID制御という3つの異なるモジュールを中心に構築されています(図5)。

・リモート制御モジュールは、STDroneモバイルアプリまたはRCリモコンコンソールからの入力を処理し、アプリからデータ値を収集したり、リモコンのPWMデータを変換してから、目標飛行姿勢に合わせてそれらの値をオイラー角に変換します。
・位置測定モジュールは、ドローンの現在の飛行姿勢のオイラー角を計算するのに必要なAHRSの位置予測で使用するために、LSM6DSL IMUから加速度センサおよびジャイロスコープのデータを収集します。LIS2MDL磁力計およびLPS22HD圧力センサからのデータが収集されますが、この記事の執筆時に入手可能なソフトウェアバージョンではドローン飛行制御計算に使用されません。
・PID制御モジュールは、目標飛行姿勢と現在の飛行姿勢のオイラー角の違いを利用して位置誤差計算を行います。従来のPID制御方法を使用することにより、このモジュールはその誤差信号を使用して各モータの速度を調整し、ドローンを目標姿勢にします。


図5:STMicroelectronicsの小型ドローン飛行制御ソフトウェアは、リモート制御入力(青色のボックス、(1))、位置測定(赤色のボックス、(2))、およびPID制御(濃い青色のボックス、(3))に対応できるように個別モジュールを中心にその機能を構築しています。PID制御は、次にクワッドコプターの4つのモータを駆動します。(画像提供:STMicroelectronics)

 この機能アーキテクチャを使用することにより、ドローンアプリケーションはユーザーの操作用コマンドを操作の実行に求められるモータ速度調整に変換するのに必要なワークフロー内のこれらのモジュールを組み合わせます(図6)。全体の機能としては複雑になりますが、飛行制御パラメータを更新するためのメインループは比較的簡単です。


図6:STMicroelectronicsの小型ドローン飛行制御ソフトウェアは、センサデータを継続的に読み込んでドローンの現在の飛行姿勢を更新し、ドローンの4つのモータの速度を調整するワークフローを実装します。これにより、目標とする飛行の組み合わせ(前進、ピッチ、ロール、ヨー)を実現できます。(画像提供: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);
     
  ...}
  ...}
リスト1:アプリケーションルーチン(main.c)。このメインループ内で、更新プロセスは一連の呼び出しを使用して、コア飛行制御アルゴリズムを実行します。

 このループ内で、マイクロコントローラの汎用TIM9タイマは、更新レートを制御するイベントフラグとしての役割を果たします。更新タイマイベントが発生すると、メインループはAHRS更新ルーチンahrs_fusion_ag()を呼び出します。これは、加速化センサ(acc_ahrs)およびジャイロスコープ(gyro_ahrs)から最新データを使用して、更新に関係するセンサ融合計算を実行します。結果として生成されるデータ(4元数の形式)は、QuaternionToEuler()ルーチンによって使用され、ドローンの現在の飛行姿勢のオイラー角を計算します。

 メインループのこの時点で、アプリケーションはBluetoothが有効(#ifdef REMOCON_BLE)な場合はBluetoothデータを使用し、外部RCコンソールが有効な場合はそのコンソールを使用して、目標飛行姿勢に関するデータを収集します。ここで、コードは従来のRCコンソールデータをミラーリングする次の4つの変数を更新します。

 gRUD(方向舵位置またはヨー)、gAIL(補助翼位置またはロール)、gELE(昇降舵位置またはピッチ)、およびgTHR(スロットル位置)。そのデータの収集後、ループはルーチンGetTargetEulerAngle()を使用して、ドローン操作者から命令された目標飛行姿勢のオイラー角を計算します。

 ただし、その計算の前に、ループのこのセクションはドローン操作者にとって非常に重要な機能を示します。何らかの理由でBluetooth接続が失敗した場合、コードはモータをシャットダウンします。これは、当然ドローン自体にとって制御されない急下降を意味します。明確かつ重要なソフトウェア拡張機能では、LIS2MDL磁力計およびLPS22HD圧力センサのデータを使用して、ドローンを開始点に戻し、モータをシャットダウンする前に制御された下降により着陸させます。

 最後に、メインループは、PIDコントローラの目標値を更新するFlightControlPID_OuterLoop()を呼び出して終了します。これとは別に、TIM9タイマイベントと関連した割り込みへのコールバックで実行される操作のシーケンスの一部として、FlightControlPID_innerLoop()が実行されます。

 これは、800Hzで実行されるようにプログラムされています。各割り込みでは、コールバックルーチンがセンサを読み込み、生データをフィルタリングし、メインループの一部として前述した変数acc_ahrsおよびgyro_ahrsと関連する先入れ/先出し(FIFO)バッファを更新します。この更新済みデータをドローンの現在の飛行姿勢で使用することにより、コールバックルーチンはFlightControlPID_innerLoop()を呼び出します。これは、各モータの新しいPWM値を計算します。コールバックは、set_motor_pwm()を呼び出して更新プロセスを完了します。これにより、マイクロコントローラのPWM出力が新しい値に設定されます。

 開発者は、多くのツールチェーンでオープンソースソフトウェアパッケージを変更することにより、代替の飛行制御シナリオを簡単に考察できます。これらのツールチェーンには、ARM用IAR Embedded Workbench、STM32用KEIL RealViewマイクロコントローラ開発キット、およびSTMicroelectronicsが独自に開発した無料WindowsベースのSTM32用System Workbench統合開発環境(IDE)が含まれています。

 変更済みのコードをコンパイルした後、開発者はSTMicroelectronicsのST-LINK/V2インサーキットデバッガおよびプログラマ、またはキットとともに提供されるJTAGシリアルワイヤデバッグ(SWD)アダプタボードに接続されたSTMicroelectronicsのSTM32 Nucleo開発ボードを使用して、ファームウェアをFCUにロードできます。

結論

 シンプルな機械設計により、マルチロータードローンは、航空写真、現場検査、監視、および他の多くの用途で好評な選択肢となっています。これらのドローンはスマートセンサが提供する制御アルゴリズムを使用し、安定した操作をサポートしつつ操作者のドローン操作命令に迅速に応答できる洗練された飛行制御ソフトウェアを採用しています。

 開発者は必要な機械部品、電子部品、およびソフトウェアコンポーネントを独自に見つけて組み立てることもできますが、STMicroelectronicsの包括的な小型ドローン開発キットは小型ドローン設計および操作のより簡単な導入を実現します。関連するオープンソースの飛行制御ソフトウェアを考察および変更することにより、開発者はマルチロータードローンの飛行力学と制御アルゴリズムの経験を迅速に積み重ねることができます。



免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。


 

このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
   


Digi-Key社の全製品は 1個からマルツオンラインで購入できます

※製品カテゴリー総一覧はこちら



ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】

毎月一定額をご購入予定のお客様や量産部品としてご検討されているお客様には、マルツ特別価格にてDigi-Key社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。


ページトップへ