Dronecode Devマニュアル抜粋&翻訳 - Flight Controller Porting Guide

#この記事は
Dronecode本家サイトの[Flight Controller Porting Guide](https://dev.px4.io/master/en/hardware/porting_guide.html)ページの抜粋・翻訳です。

(**Portとは移植のこと**)

# Flight Controller Porting Guide

PX4用の新しいフライトコントローラHWを作成したいときのガイド


## PX4 Architecture
PX4は主に２つの層からなります。
1つはボードサポートとホストOS上のミドルウェアとボードサポート層、もう一つは `src/modules` にある Flight Stackといったアプリケーション層です。

アプリケーション/フライトスタックはどのボードターゲットでも実行できるため、このガイドはホストOSとミドルウェアにのみ焦点を当てています。

## Flight Controller Configuration File Layout

ボードの起動ファイルと構成ファイルは、[/boards](https://github.com/PX4/Firmware/tree/master/boards/)の下の各ボードのベンダー固有のディレクトリにあります。
(例えば、`boards/VENDOR/MODEL/`)

例として、FMUv5の場合

- すべてのボード特有なファイルは[/boards/px4/fmu-v5](https://github.com/PX4/Firmware/tree/master/boards/px4/fmu-v5)に
- ビルド設定は[/boards/px4/fmu-v5/default.cmake](https://github.com/PX4/Firmware/blob/master/boards/px4/fmu-v5/default.cmake)
- ボード特有な初期化ファイルは[/boards/px4/fmu-v5/init/rc.board_defaults](https://github.com/PX4/Firmware/blob/master/boards/px4/fmu-v5/init/rc.board_defaults)
  - もしボードのディレクトリに`init/rc.board`ファイルが見つかれば、ボード特有の初期化ファイルは自動的に起動スクリプトに取り込まれます。
  - このファイルは特定のボードにのみ存在するセンサーなどを起動させるために利用されます。
  - FMUv5の場合、すべてのPixhawk 4センサーが開始されていることがわかります。また、より大きなLOGGER_BUFが設定されます。

## Host Operating System Configuration
このセクションでは、サポートされている各ホストOSを、新しいフライトコントローラハードウェアに移植するために必要な構成ファイルの目的と場所について説明します。

### NuttXの場合
[NuttX Board Porting Guide](https://dev.px4.io/master/en/hardware/porting_guide_nuttx.html)を参照のこと

### Linuxの場合
Linuxボードには、OSとカーネル構成は含まれていません。これらは、ボードで利用可能なLinuxイメージによってすでに提供されています。

- [boards/px4/raspberrypi/default.cmake](https://github.com/PX4/Firmware/blob/master/boards/px4/raspberrypi/default.cmake) - ラズパイのクロスコンパイル

(翻訳したけどどうも意味分からず。。。)

## Middleware Components and Configuration
このセクションでは、さまざまなミドルウェアコンポーネントと、それらを新しいフライトコントローラハードウェアに移植するために必要な構成ファイルの更新について説明します。

### QuRT/Hexagon
(省略)

## RC UART Wiring Recommendations
フライトコントローラボードとRCの(UART)接続はRXとTXのピンを分ける事が推奨される。が、もしRXとTXピンをひとまとめにしている場合は、競合を防ぐためにUARTはシングルワイヤーモードにしないとならない。
この設定はボードのマニフェストファイルで行う。
例としては[px4fmu-v5](https://github.com/PX4/Firmware/blob/master/boards/px4/fmu-v5/src/manifest.c)


## Officially Supported Hardware
PX4プロジェクトは、[FMU標準リファレンスハードウェア](https://dev.px4.io/master/en/hardware/reference_design.html)と、その標準と互換性のあるすべてのボードをサポートおよび維持しています。これには[Pixhawkシリーズ](https://docs.px4.io/master/en/flight_controller/pixhawk_series.html)が含まれます（公式にサポートされているハードウェアの完全なリストについては、[こちら](https://docs.px4.io/master/en/flight_controller/)を参照してください）。

公式サポートのボードのメリットは、

- PX4の移植版がPX4のリポジトリから利用できるようになります。
- QGroundControlから利用できる自動的にビルドされたファームウェア
- もろもろののエコシステムとの互換性(翻訳自信なし)
- CIでの自動チェック(コミュニティにとって安全は常に重要です)
- 飛行テスト

ボードメーカーは、FMU仕様との完全な互換性を目指してください。
完全な互換性があれば、PX4の継続的な日々の開発のメリットを享受でき、仕様からの逸脱をサポートすることによるメンテナンスコストがかかりません。

> メーカーは、仕様から逸脱する前に保守のコストを慎重に検討する必要があります（コストは仕様からの逸脱量に比例します）。

また、PX4開発チームには安全なソフトウェアをリリースする責任があることにも注意してください。そのため、ボードのメーカーには、移植版を最新の状態に保つために必要なリソースを投入することを求めます。

もしあなたがあなたのボードにPX4の公式サポートがほしい場合は：

- あなたのボードは市場で入手できる必要があります。
- PX4の開発チームが移植検証を行うために、ハードウェアを利用できる必要があります。(詳細はlorenz@px4.ioにコンタクトしてください。)
- そのボードは[すべてのテストスイート](https://dev.px4.io/master/en/test_and_ci/)と[テストフライト][https://dev.px4.io/master/en/test_and_ci/test_flights.html]をパスしている必要があります。


PX4プロジェクトは、プロジェクトで設定された要件を満たさない場合、新しい移植版の受け入れを拒否する（または現在の移植版を削除する）権利を留保します。

公式のフォーラムとチャットでコアデベロッパーチームやコミュニティに連絡できます。