Ardupilotレースに使っていたフライトコントローラーにArdupilotをインストールする。reply息子の大学の研究室に買ったままの状態のドローンがあり、教授からこれを飛ばす様に言われたらしいのですが、これがまた数十万円もする機体で、慣れ親しんだレース機の様に墜落上等!!なモノとは緊張感が違う様です。この機体のフライトコントローラー(以下FC)にはPixhawk(これも10万円前後するやつ!)が載っていて、ファームウェアにはArdupilotが書き込まれています。FCのオープンソースなファームは各種ありますが、レーシングドローンだとBetaflightがメジャーなのに対し、オートパイロット用途ではこのArdupilotやPX4等が多く使われている様です。Ardupilotを初めて知ったのはMake:日本版Vol09の記事でした。この頃はArduinoベース(なのでArdupilotという名前)でしたが最近はPixhawkが主流になっています。何十万円もする機体を飛ばす前に、落ちてもダメージが少ない5インチ程度の機体を使ってArdupilotに慣れたいという希望が出てきた様です。そこで手持ちのFCにArdupilotをインストールできないか調べてみました。上手くいけば自作フライトコントローラーのHOIHOI-FCに載せられるかもしれません。(下まで読んで貰えると現状のHOIHOI-FCには載せられなかった事が分かるのですが)何はともあれArdupilotをビルド必ずしも手元でビルドできる必要は無いかもしれませんが、最終的にHOIHOI-FCに載せるとしたら設定を変えてビルドする必要が出てきそうです。Linux)上にビルド環境を作ってみます。基本は下記のドキュメントに沿って作業していきました。https://ardupilot.org/dev/docs/building-setup-windows10_new.htmlhttps://ardupilot.org/dev/docs/building-setup-linux.htmlhttps://github.com/ArduPilot/ardupilot/blob/master/BUILD.mdという事で、まずはWSLを開き、GithubのArdupilotリポジトリをクローンします(gitの環境は予めインストールしてあります)。その前に改行コードを勝手にCRLFに変更しない設定にしておきます。「CRLFにする」設定のままで作業すると、後々エラーが出てしまったのです。←勝手にCRLFに書換えない設定。https://github.com/Ardupilot/ardupilot出来上がったardupilotディレクトリに移動して設定スクリプトを実行しました。-yスクリプトが.profileに加えた変更を反映させます(ログインし直しても良いですが)。~/.profileビルド可能なボード名一覧を参照し、この中からMatekF405をビルドしてみました。copter暫くすると”adrupilot/build/MatekF405/bin/”の下に”arducopter_with_bl.hex”ができました。FCがMatekF405であれば、このままファイルを書き込めば良い筈です。HOIHOI-FC用にビルドできるか?ではHOIHOI-FC用の設定を作ろうと思います。各FC用の設定はどうやら”ardupilot/libraries/AP_HAL_ChibiOS/hwdef”の下にFC名のディレクトリを作ってそこに置く様です。先ほどのMatekF405だと”ardupilot/libraries/AP_HAL_ChibiOS/hwdef/MatekF405′′で、この中に”hwdef-bl.dat”,”hwdef.dat”の二つのファイルがあります。よってこのディレクトリをHOIHOI-FCディレクトリとして丸ごとコピーした後に変更を加えていこうと思います。・・・ところがHOIHOI-FCに載せているマイコン、STM32F411はArdupilotでサポートされていない事が分かりました。wikiによるとフラッシュメモリが1MB以上必要との事。STM32F411は512KBなのでファームが入りきらない様ですね。STM32F722もHOIHOI-FCに載せた事があるのでこれならどうだっけ?・・こちらも512KBでサポート対象外ですね。うーん、なんてこった。SuccexF405に載せてみる。このまま止める訳にもいかず、手持ちの中からArdupilotがサポートしているFCを探したところ、iFLIGHTのSuccexF405がありました。このボードに載っているSTM32F405(フラッシュ容量1MB)ならOKです。SuccexF405のファームをビルドして書き込んでみます。書き込み方法は“1/3三田式3型改1製作記さん”のブログ“を参考にしました。FCのBOOTボタンを押しながらUSBに接続する事によりDFUモードで起動し、STM32CubeProgrammerで先ほどのファームを指定して「Download」ボタンを押すと書き込みが始まります書込みは特に問題なく終了しました。USBケーブルを外し、今度はBOOTボタンを押さずに接続すると・・・反応ありません。WindowsのデバイスマネージャーにCOMxとして認識されるはずなんですけどねぇ。そこでSTM32CubeProgrammerでVerifyをやると不一致のエラーがでました。上手く書けていない様ですね。結局、消去ページで一旦全体消去をしてから同様の書き込みをするとVerifyも一致し正常に動作する様になりました。「Download」ボタンで自動的に消去もやってくれる訳ではない様です。以上によりMissionPlannerとも接続でき、まだ細かい所はこれからですがArdupilotとして動作し始めました。次はGPSやコンパスを繋ぐ必要がありますね。feedWordPress.orgこちらも見てちょ~だい。