Ardupilot Rover の製作【3】Ardupilot のフラッシュ

目次

Section 1

Mission Planner のインストール

前回の記事 Ardupilot Rover の製作【2】で概ね配線が完了した段階で、今回はMATEK F405 STD に Ardupilot Rover のファームウェアをフラッシュします。

いよいよ Ardupilot の設定が始まりますが、Ardupilot を扱う上で代表的なGCS (Ground Control Station) である Mission Planner をインストールするところから始めましょう。

下記の Ardupilot のドキュメントに最新版のダウンロードリンクとインストール方法が記載されています。

Installing Mission Planner
https://ardupilot.org/planner/docs/mission-planner-installation.html

Betaflight や INAV では、FCを設定するためのアプリケーションは Configurator と呼ばれていますが、Ardupilot やPX4ではGCSと呼ばれます。

基本的に Configurator はFCの設定を行う役割が主となりますが、GCSは機体の動作中もリアルタイムで通信し、現在地を表示したり、エラーなど機体の状況を把握したり、ミッションを作成してアップロードしたり、時にはボタン操作で制御したりといった機能を有しており、そのウェイトが大きためGCSと呼ばれているものと思います。

今回は Mission Planner で Ardupilot の設定を行っていきますが、実はPX4で使用したQGCでも Ardupilot の機体の設定が可能なようです。

しかし、Ardupilot のドキュメントは基本的には Mission Planner で作業する形で書かれており、QGCで Ardupilot の機体設定を行うには Mission Planner とQGCとの対応状況や表記・表示の違いも把握しておく必要がありますのでかなり慣れていないと難しいと思います。

組み立てたばかりの機体を設定していく初期セットアップの時点で、さらに初めて挑戦するタイプの機体の場合、Ardupilot なら Mission Planner を使用するのがお勧めです。

一方、Ardupilot の完成した機体を動かす際に、GCSとして Mission Planner ではなくQGCを使用するという例はかなり一般的という印象です。

Mission Planner よりもQGCの方が対応しているOSが多く、モニターが小さい場合でもミッション作成画面が比較的見やすい事が大きな理由ではないかと思いますが、完成したら必要に応じてQGCを使用してみるのが良いと思います。

Section 2

ファームウェアのダウンロード

使用しているFCが Pixhawk などであれば、Mission Planner を使用して簡単にArdupilot をFCフラッシュする事ができるのですが、今回はFCとして MATEK F405 STD を使用しています。

Betafight やINAVで使用する事を基本として販売されているFCの多くは、初めて Ardupilot をフラッシュする場面で Mission Planner を使用する事ができません。

自分でファームウェアをダウンロードし、フラッシュする作業が少し手動になります。

ご自身の使用しているFC用のファームウェアを下記のURLより探してダウンロードします。
https://firmware.ardupilot.org/

今回 Mission Planner と接続できる状態になってから念の為再度 Mission Planner のファームウェアインストール機能を利用して最新版ローバーのファームに書き換えたのですが、MATEK F405 STD でローバーを利用したい場合恐らく正しいファイルのURLは下記になります。

ardurover_with_bl.hex

ファイルをダウンロードしたら、後で使用しますのでわかりやすい場所に格納しておきましょう。

Section 3

MATEK F405 STD へのフラッシュ

フラッシュするためにファームウェアのファイルもダウンロードしたので、いよいよ作業開始かと思いますが、まだツールが必要です。

いくつか方法があるようで、詳しい手順は下記の Ardupilot のドキュメントで紹介されています。

Loading Firmware onto boards without existing ArduPilot firmware
https://ardupilot.org/copter/docs/common-loading-firmware-onto-chibios-only-boards.html

以前は上記の記事でも紹介されている Betafight Configurator から事前にダウンロードしておいた.hexファイルを選択してフラッシュする方法を利用していたのですが、最近の Betafight Configurator ではうまく行かないようです。

今回はSTM32CubeProgrammerを利用した方法で作業しました。

これまで何度か同様の作業を行った経験があるのですが、この作業中にフリーズしたり、突然中断されたりという事が多く、苦労するイメージでした。

しかし、今回使用した STM32CubeProgrammer では一発でフラッシュに成功したので、比較的安定して使えるツールなのかも知れません。

下記のURLから STM32CubeProgrammer をダウンロードし、インストールします。
https://www.st.com/ja/development-tools/stm32cubeprog.html

その後の手順は Loading Firmware onto boards without existing ArduPilot firmware のドキュメントに記載された通りで問題なく動作しました。

まずボードを接続し、アップロードするファイルを選んで「Download」ボタンを押すだけです。

当然、アップロードするファイルは先程ダウンロードしておいた、お使いのFC用の.hexファイルになります。

「Download」ボタンを押すとファームウェアの書き換え作業が始まります。

しばらくしてフラッシュが完了すると「File download complete」と表示されました。

正常にフラッシュが完了すると、ミッションプランナーと接続する事ができるようになります。

Mission Planner への接続方法ですが、Mission Planner を起動し、FCとPCを接続します。

ほとんどの場合FCはUSB接続で起動しますので、この段階では機体本体の電源を入れる必要はありません。

ドライバーなどに問題がなければ、PCがFCを認識した段階で上記画像①のドロップボックスを開くとCOMxxとポートが自動で認識されているものと思いますので、基本的には該当するCOMxxを選択し、②の接続ボタンを押すだけです。

COMxxはFCやPCによって番号が変わります。

FCとPCを接続し、Mission Plannerに様々なデータがリアルタイムで反映されています。

Section 4

ファームウェアのアップデート

今回は念の為 Mission Planner のファームウェアインストールを使用してファームウェアを最新版の Rover のものにアップデートしたいと思いますので、Mission Planner に表示されている内容は一旦無視して作業を進めます。

Mission Planner の画面は各ウィンドウに機能が盛り込まれていて、非常に多機能であり、自分も全て使いこなせていませんが、機体の初期設定を行う上でまずアクセスするのは一番上の帯の中のアイコンです。

「フライト・データ」「フライト・プラン」「初期設定」「設定/調整」「シミュレーション」「ヘルプ」の6つのアイコンがあります。

「フライト・データ」は上記画像の画面で運用中の機体の状況を把握する際に使用します。

このページではエラーやメッセージ、センサーの数値など多くの情報を確認できるため、設定に行き詰まった時などにエラー内容を確認する事で問題解決のヒントを得られる事も多いです。

「フライト・プラン」は主に自動飛行や自動走行のミッションを作成する為に使用するもので、初期設定段階では使用しません。

「初期設定」と「設定/調整」はどちらも機体設定のためのページです。

なぜ項目が別れているのかは良くわかりませんが、「初期設定」ページの方に比較的必須で設定する項目が、「設定/調整」の方に必要に応じて設定する項目がまとまっているイメージです。

これまで自分は「初期設定」ページだけで設定が完結したことがないので、この2つのページを行ったり来たりしながら設定を進めていく印象を持っています。

シミュレーションは開発よりのページで、プログラムをテストする際などに利用するようです。

ヘルプには Ardupilot ドキュメントのURLや、Mission Planner のショートカットが簡単に記載されています。

シミュレーションとヘルプのページも今回は使用しません。

ファームウェアインストールを行うには①で示した「初期設定」ページへ移動し、②のファームウェアインストールを選択します。

③で説明が記載されていますが、MAVLink で機体と接続されている時はファームウェアインストールを行う事ができません。

MAVLink は有線接続だったり、無線接続だったり、様々な形があります。

今回の場合USBでFCとPCを接続しているところが MAVLink 接続という形ですので、先程接続する際に押した Mission Planner 右上のコンセントアイコンを再度クリックして接続を解除せよという旨のメッセージとなります。

④に新しい Bootloader が利用できるとのメッセージが出ていますので、ファームウェアインストールを行う前に④の Bootloader Update をクリックし、⑤のYesをクリックしました。

この Bootloader のアップデートを行うと、Ardupilot で使用する上では使いやすくなるようなのですが、ボードを壊す恐れもあるそうなので、試される場合はご注意ください。

詳細は下記のドキュメントをご確認ください。

Updating the Bootloader
https://ardupilot.org/copter/docs/common-bootloader-update.html

Bootloader のアップデートが完了した後に①のボタンをクリックし、USBを抜き差しすると、②の画面が表示されインストールするファームウェアを選択できるようになります。

今回はRoverをやりたいので、③のローバーをクリック。

ローバーのアイコンを選択すると、自動で合うローバーのファームウェアが検索され①のように表示されます。

もし希望のものと違う場合はドロップボックスから選択もできますが、今回はこれで良さそうでしたので、②の Upload Firmware を選択しました。

進捗を示すバーが現れ、一番右まで緑色になるとアップロードの完了です。

今回最新版にしたかったので、念の為2回ファームウェアをFCにフラッシュする作業を行いましたが、.hexファイルを正しく選択できていれば STM32CubeProgrammer で行った手順のみでも恐らく違いはないのかなと思います。

基板タイプのFCでも一度 Ardupilot を入れる事ができれば、Mission Planner のファームウェアインストールを使用できるようになる為、随分便利になります。

ただし、自分が経験した範囲では、デフォルトで Betaflight などが入っている基板型のFCに一度 Ardupilot を入れてしまうと、その後 Betaflight などに戻す事が非常に難しくなる、もしくは結局戻すことが出来なかった、というケースが多いので、 Ardupilot 用として使い続ける決心をした上で作業しましょう。

ブートローダーのアップデートを行っている点に問題があるかも知れませんが、基板型のFCを Ardupilot で使用する場合はご注意ください。

Section 5

フレームクラスの確認

ファームウェアのフラッシュ作業は完了しているのですが、ちゃんとローバーのファームウェアが入っているか確認する意味でも、少しだけ設定作業を行なっておきたいと思います。

まず初めに行うべき設定はフレームタイプの確認・設定です。

初期設定ページ、必須ハードウェアタブの一番上に表示されているフレームタイプのタブをクリックします。

フレームタイプの設定ページでどんなに探してもローバーのアイコンが見当たりません。

間違えてマルチコプターのファームを入れてしまった可能性も考えたのですが、確かにローバーを入れたはずなので、別の方法で確認してみましょう。

①で示したフライト・データのページに移動し、②で示した左下のウィンドウの上のタブの中からメッセージというタブを見つけてクリックします。

このメッセージにはFCと Mission Planner が接続されてからの通信履歴のようなものが一覧表示されるのですが、一番下、つまりFCと Mission Planner が接続された後の初めのメッセージを確認します。

③で示した通り ArduRover V4.5.5 というメッセージが残っており、ArduRover として認識されている事がわかります。

このことから、フラッシュしたファームウェア自体に問題はなく、単にミッションプランナーのフレームタイプのページにローバーのアイコンが用意されていないだけなのではないかと考えました。

では、どのようにフレームタイプの設定を行ったら良いか、という点なのですが、フレームタイプのページで選択できない以上、 フレームタイプのページでは設定の確認が出来ません。

この場合、設定/調整タブにあるフルパラメーターリストで確認するのが良いと思います。

個人的には、Ardupilot ではフルパラメーターリストから設定を行う方が便利であったり、理解しやすい場合が頻繁にあるので、疑問に思ったらドキュメントのパラメーターリストを確認し、どんなパラメーターがあるのか、どんな選択肢があるのかを把握してから設定するのがおすすめです。

フルパラメーターリストの内容はモデルタイプやバージョンにより異なり、Ardupilot のドキュメントでは各パラメーターが簡単に解説されています。

下記がローバーのパラメーターリストです。

Complete Parameter List (ローバー)
https://ardupilot.org/rover/docs/parameters.html

パラメーターリストを調べるとFRAME_CLASS= 1がRoverだという事がわかります。

ローバーのファームウェアでは、他にボートとバランスボットなどが選択できるようですね。

Complete Parameter List で何のパラメーターを確認すべきか把握したら、早速Mission Planner で自分のFCが現在どのように設定されているかを確認しましょう。

フルパラメーターリストへは、①で示した設定/調整タブへ移動し、②のフルパラメーターリストを選択します。

恐らく初期段階では「生のパラメーターに警告」というメッセージが出現し、安全の為にはスタンダード/アドバンスドパラメーターを使用してください、と記載されています。

OK 押すとフルパラメーターリストでの設定が可能となります。

目指す機体構成によってはスタンダード/アドバンスドパラメーターのみの使用で設定を完結できるものなのかもしれませんが、Ardupilot のドキュメントの方でもフルパラメーターリストで設定する方法が普通に紹介されています。

個人的には、フルパラメーターリストを一切使用しないで全ての設定を完了する事は難しいと認識しており、結果的に頻繁に使用します。

一方、パラメーターの内容も理解せずにどんどん変えてしまうと、当然うまく動作しなかったり、簡単に危険な状況を招く設定となってしまいます。

フルパラメーターリストの変更作業は、事前にパラメーターの内容を調査した上で、操作中に別のパラメーターを変更してしまわないように注意して行う必要があります。

フルパラメーターリストを開くと膨大な量のパラメーターが表示されます。上から見て、該当するパラメーターを探しても良いですし、色々探し方はあるのですが、今回は探しているパラメーターの名前が明確にわかっていますので検索機能を使用してパラメーターを探します。

①で示した区画に「絞込み検索」と書かれた検索ボックスがありますので、そこに「Frame」と入力しました。

すると「Frame」に関連するパラメーターが表示される為、この中から探す事ができます。

②で示したところに FRAME_CLASS が表示されているのですが、値が「1」となっており、FRAME_CLASS= 1つまりRoverが既に設定されている事がわかりました。

Section 6

PCがFCを認識しなくなってしまったら

今回の作業中に問題が発生したわけではありませんが、過去にファームウェアのフラッシュ作業でFCへの書き込みの最中にPCのアプリがフリーズしてしまい、どうにもできない状況に陥るケースがありました。

作業中にフリーズした原因がPC側にあったのか、FC側にあったのか分かりませんが、その後アプリをシャットダウンしてFCを再度接続しても一切認識しないといった状況。

そのケースでは最終的に壊れかけたFCを復旧することが出来ましたので、その時に行った作業をご紹介します。

上記画像は STM32CubeProgrammer でFCが正常に認識されている時のPort表示ですが、FCがうまく認識されていない場合Protの部分が「No COM detected」表示のままとなります。

基板型の KAKUTE F4mini に Ardupilot をフラッシュする作業中でしたので、STM32CubeProgrammer の他に Mission Planner、betaflight configurator、INAV configurator などFCをフラッシュできるアプリケーションを立ち上げ一通り確認して見ましたが、一切認識せず。

PC側の問題も疑い、別のPCにも接続しましたが結果は同じでした。

KAKUTE F4mini の基板側のLEDも、通常は通電時に点灯する黄緑色のLEDの他に青いLEDがPC点滅するのですが、黄緑色のLEDが点灯するのみで青色のLEDは一切光らない状態です。

煙が出たりといった現象は見られなかったので、ハードではなくFCのソフトウェアに問題があると考えられますが、そもそもFCにアクセスできない状況となった為、このFCはもう使用できない可能性が高いと思いました。

ここで活躍したのが ImpulseRC Driver Fixer です。

この ImpulseRC Driver Fixer は主にWINのOSのアップデートなどでPC側のドライバーに問題が起こりFCを認識しなくなってしまった際にドライバーを自動で修復してくれるツールです。

下記のURLからダウンロードできます。
https://impulserc.com/pages/downloads

自分は Mission Planner を使用しなくてはならない時以外はWINではなくMacで作業することが多いので、そもそもドライバーの問題でFCを認識しないといった状況が少なく、WINで作業する時も最近はあまり ImpulseRC Driver Fixer 使用しないのですが、自作ドローンを始めた頃は時々お世話になっていました。

最近は以前と比べてFCとPCの接続に問題が発生するケースが少なくなった印象もあり、あまりご存じない方も多いかもしれませんが、ImpulseRC Driver Fixer は betaflight configurator の起動画面でもしっかり紹介されている強力なツールです。

FCとPCの接続が上手くいかなくなったらとりあえず ImpulseRC Driver Fixer というイメージがあったので、ダメで元々という気持ちで使用してみる事に。

使用方法は、FCとPCを接続し、FCをフラッシュしたいアプリケーションを立ち上げた状態でさらに ImpulseRC Driver Fixer を起動します。

ImpulseRC Driver Fixer で手動で行うべき作業はありません。

起動すると自動で動作し、うまく処理が終わると立ち上げていたもう一方のアプリケーション側でUDFモードでFCが認識されます。

KAKUTE F4mini が接続できなくなった時は STM32CubeProgrammer を立ち上げた状態で ImpulseRC Driver Fixer を起動する形で作業しました。

1回ではうまくいかず、失敗する度にアプリケーションを再起動とFCとPCをUSBで再接続し、5から10回程度根気よく続けた結果、運良く STM32CubeProgrammer 側で認識されたので、PC側にダウンロードしておいたファームウェアを  STM32CubeProgrammer でフラッシュし、無事にフラッシュが成功。

その後は何事もなかったかのように問題なくFCを使用できるようになりました。

故障の程度や内容によっては修復が難しいケースもあると考えられますし、ハードウェアに問題がある場合はやはりその基板を諦めるしかない可能性も高いですが、同じような状況に陥った際には試してみる価値のある方法だと思います。

Pixhawk シリーズではPX4や Ardupilot のファームウェアの書き換えが安定している印象なのですが、基板タイプのFCに Ardupilot を入れる際は時折トラブルに直面することもありますので、もしそういったトラブルが起こってしまったらFCを諦める前にお試しください。

さて、少し余談を挟みましたが、今回は MATEK F405 STD に Ardupilot Rover のファームウェアをフラッシュしました。

次回からはセンサーなどのキャリブレーションの作業を紹介したいと思います。

ArdupilotMateksysRover

JACK によるブログ

DAYSCAPE ( DIYドローン オンラインショップ ) では、FPVドローン、産業開発ドローンの分野に関する商品の紹介やドローンの組み立て、使用方法などの情報発信を行っています。

ピックアップ