
[ArduPilot] フライトコントローラ選びに重要!使える機能が違う?
ArduPilot は汎用性が高く、色々なフライトコントローラで様々な機能を利用することができます。年々機能は増えているため、ファームウェアのサイズもどんどんと大きくなっています。
CubeBlack などいろいろなフライトコントローラのベースとなっている fmuv3 のファームウェアのサイズは以下のように大きくなっています。
2018年4月: 938kB
2019年4月: 1305kB
2020年4月: 1329kB
2021年4月: 1570kB
ファームウェアのサイズに注目をするきっかけとなったのが Pixhawk のフラッシュメモリ 1MB 制限問題です。
古い Pixhawk では 1MB のフラッシュメモリが使われており、ArduPilot のファームウェアのサイズは 1MB を超えないように機能開発を進めていました。新しく製造された Pixhawk は 2MB のフラッシュメモリを持つようになっているため、手元にある Pixhawk のフラッシュメモリサイズを確認する手順として公開されたのが上記の動画でした。
その後、1MB に抑えるために全体的にコードの効率化を図り、一時期はサイズが小さくなりました。ただ、年々機能開発を進める中でサイズはどうしても大きくなり、結局 1MB の制限に再び目を向けなければならなくなりました。
その際に解決策として選んだ手法が、機能の無効・有効化です。
1MB のボードでは最小限の機能のみを動かし、2MB のボードでは全ての機能を利用できるようになりました。
現在 ArduPilot が対応しているフライトコントローラのリストは以下のページにあります。
50以上ものフライトコントローラに対応しています。そのリストの中で名前の横に※印のついているものがあります。これがフラッシュメモリにより機能制限があるフライトボードです。
そして、機能制限の詳細は以下のページに記載されています。
1MB フラッシュメモリのフライトコントローラでは散布機能や Optical Flow センサーなどが外されていますね。
小型機のために 1MB の Mini ボードを使う場合には、機能が制限されてしまうので、予め必要な機能が決まっている場合には注意が必要です。
これらの機能は、ソースコード上では1行変更すれば、有効、無効を入れ替えることができます。コンパイルを自分でできる方は機能を選択することが可能です。ただし、そのような使い方をするユーザーは圧倒的に少ないため、リスクが格段に上がることを認識した上で実施する必要があります。
ソースコードを変更しなくても、ユーザが機能を選択できるようにするためのビルドサーバーを構築する案があります。
Web UI から必要な機能を選択して、ボタンを押せばカスタムファームウェアが作られるイメージです。
各機能には依存関係もあるので、選択できない組み合わせも出てきます。
まだ完成時期は公開されていないので、気長に待ちましょう。