3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dronecode Devマニュアル抜粋&翻訳-PX4 Architectural Overview

Last updated at Posted at 2020-06-09

DroneのオープンソースであるDronecodeについて理解するために本家のマニュアルを抜粋&翻訳しています。

今回はPX4 Architectural Overviewページの翻訳&抜粋です。

アーキテクチャ概要

  • PX4は主にフライトコントロールシステムとミドルウェアの2つのレイヤーからなる。
  • PX4はエアフレーム(機体)によらずコードベースは同じ
  • リアクティブな作りになっている
    • コンポーネント志向
    • 非同期なメッセージやり取りでの通信
    • 様々なワークロードに対応している

アーキテクチャの全体像

diagram

大きく分類して

  • Storage
  • External Connectivity
  • Drivers
  • Flight Control
  • Message Bus
    という構成に分かれている

それぞれのモジュールはuORBというpublish-subscribeのMessage Busを介して通信します。

Flight Stack(フライトコントロールシステム)

diagram - estimator:複数のセンサーからの入力を受け取り、統合し、現在の機体状態を推定します。 - controller(Position Controller/Attidude&Rate Controller):推定された機体状態と、指定の状態とを合わせることを目的とし、機体を目的位置に動かすための姿勢と推力を出力します。 - mixer:「右に移動」といった指示を個々のモーターの動作に変換するモジュールです。機体の構成(モーターの配置、重心、回転慣性)に応じた値を算出します。

Middleware

ミドルウェア層は主に組み込みセンサーなどのデバイスドライバーや、コンパニオンコンピュータ・GCS(Ground control system)、メッセージバスのuORBなどからなります。
また、机上シミュレーションのためのモジュールも含まれています。

Update Rates

IMUドライバーのサンプリングレートは1kHzで、250Hzに統合して発信する。他の、navigatorなどのモジュールはもっと低いサンプリングレート、という感じになっている。
メッセージの送信間隔は uorb top コマンドで調べられます。

Runtime Environment

PX4はPOSIX-APIを持つOS(Linux, macOS, NuttX, QuRT)上で動作し、各モジュールはメモリ空間を共有して動作します。

モジュールの起動方法には2種類あります。

Tasks

個別のスタックとプロセス上で動作させる方式

Work queue tasks

キューイングされたタスクとして順番に実行される方式

  • すべてのタスクは相互に割り込むことができないため、協調して動作する必要があります
  • 複数のタスクをキューで実行でき、また、複数のキューが存在する場合があります。
  • タスクは、実行される時間を指定するか、uORBトピック更新コールバックを介してスケジュール実行されます。

なお、 uorb top コマンドではWork queue上で実行されているタスクは見えない(work queueプロセス自体が見える)。work queue上で実行されている中身を見たい場合は work_queue status コマンドを使います。

Background Tasks

上記Taskの中からpx4_task_spawn_cmd() を実行することで、バックグラウンドのタスクを実行できる

OS-Specific Information

NuttX

NuttXはPX4用OSとして最適な(primaryの良い訳が思いつかない。。)OSです。
モジュールはタスクとして実行される。

Linux/macOS

LinuxまたはmacOS上で動作する場合、PX4は単一のプロセスで実行され、モジュールは個別のスレッドで実行されます。(NuttXのようにタスクとスレッドに違いはありません)

Controller Diagrams

(固定翼や、VTOL(垂直離着陸機)の解説もありますが、省略)

Multicopter Position Controller

(表記には、PX4 notationという表記法を使っています)

  • 推定は、EKF2(Extended Kalman Filter)を用いて行う

指定位置と推定位置の差(Δr)を元もとにP(Proportional:比例制御)を行い、速度指定値算出を行う。
その指定速度と、推定速度の差(Δv)を算出し、PID制御で、F(thrust:突き上げ?)の指定値を算出する。

  • F(thrust)指定値から射影計算しZ方向への指定値を算出する。
  • F(thrust)指定値とattitude(姿勢)の指定値を統合して計算し、新たなattitude(姿勢)の指定値を算出する
    という流れ。
3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?