Ardupilot Boatの研究

ロボット

必要パーツ

電源はすでに指摘したようにリチウムフェライト。
通常、マルチコプタードローンではリチウムポリマーが使われますが、かなり爆発のトラブルを起こしています。
ボートの場合、重量は比較的ルーズでよく大量に搭載できるのが利点です。

  • BLHeliなどの水中モーター専用 ESC 30A x 2
  • スラスター BlueRobotics T200 x 2
  • フライトコントローラー Pixhawk(今回はCube Orange)
  • GPS
  • Raspberry Pi (コンパニオンコンピューター)
  • パワーディストリビューションモジュール (5Vをラズパイに供給)
  • ラズパイ電源配線用ケーブル(私はUSB Type-Cケーブルをぶった切って作りました)
  • ブザー
  • 安全スイッチ(オプション、ボートはなくてもいい)
  • 識別用LED (未定)
  • プロポ受信機 (今回はFUTABA)
  • 船体用フレーム、フロート、塗装

以下は準備してるけど、試作機には重量の関係で未搭載。

  • リチウムイオン電池(リン酸鉄タイプ)
  • 18650電池
  • 186650 4本入り 電池ケース x n
  • 配線盤
  • ショットキーバリアダイオード(いるかどうか)

ボートなので安全スイッチはいらないかと思います。

結局フライトコントローラーはなにがいいの?

もちろんボートでも「フライトコントローラー」は必須です。

とはいえCubeシリーズは航空系では要求される高い水準の処理能力、高い価格。
OBALは試したが、導入がまったくスムースにいかないため、先行きが思いやられるので辞めました。
Raspberry PiのHATになるNavio2はゲットはしましたが、4万円程度とラズペリーパイが二台買えるほど高価だしメーカーのEmlidの製品ページには、すでにありません。
マイナーなボードはなくなります。結構あります。

結局、その時点時点でもっともユーザーが多い、出回っているボードを使うことが正しいということでしょう。

今なら明らかにPixhawk

3年後はわからないが、その時に変更します。

プロポ

以外なことですが、ドローンを組み立てる時、プロポは必須です。
というのもプロポで動作確認してから、自動運行もやってみようということになりますし、自動運行する状態にまではマニュアル操作で行う必要があるのでプロポは必要です。
日本には技適というそのデバイスがいらん電波や申請以上の出力、帯域を出していないかということを検査するところをとおったものが、一般的にはOKとされています。(アマチュア無線のように電波を飛ばす免許をもっていたら、自作の無線機については方式そ申請して検査を受ければOKな場合もあります。というか、一昔前は自作の無線機は普通でしたからね。)
一般的にはメーカー品、ドローンのプロポといえばFUTABA製を使うのが一般的です。必ずモード2という左側がスロットルのものを購入します。

モード1をモード2に無理に変えて使っている人がいますが、遭遇しなくていいトラブルにたいてい見舞われています。気をつけてください。

で、ですね。受信機がこんなタイプのものは買っちゃいけません。


これ、FUTABAのR2000SBMというやっすい受信機なんですが、S-BUSというシリアル信号の受信はできますが、パルス制御は一切できないんです。
一台しかプロポをもっていないのであれば、とてもマズイです。
たぶん、マルチコプターだけならばフライトコントローラー経由のキャリブレーションでもできますが、ボートで使うESCをキャリブレーションする時には、パルスが出る受信機を購入しましょう。

ボートで中国製のスラスラーを使うとSHARKのESCがついてきました。このキャリブレーションってスロットルが中央だとモーターはまわらないこと。前後で正逆回転する信号を出してもらうESCなんです。

このキャリブレーションはプロポのch3(スロットル)に繋いでやるのが簡単です。

私はFUTABAの受信機は上のものをもっていて失敗しています。ESCのキャリブレーションはFlySkyのものを使ってやってます。とほほです。

コンパニオンコンピューター

Raspberry Piは何に使うのかというと、Ardupilotではコンパニオンコンピューターといわれる使い方です。

  • WiFiテレメトリー/LTEテレメトリー
  • Webサーバー
  • Pixhawkにデータを送ったり、受け取ったり
  • カメラ、ウィンチの操作(これらはWebサーバー経由だろう)

フライトコントローラーは、よく使われるGPS, コンパス、もちろんESCのコントロールといった典型的なことをやります。

フライトコントローラーとの接続は、テレメトリー(シリアル)です。コネクターはPixhawkの場合、DF13です。Raspberry Pi側はピンソケットです。ちょっと特殊なケーブルを自作することになります。

ArdupilotにおいてBoatとは

Ardupilotにおいて、BoatはRoverタイプの亜流となります。
フライトコントローラー(ミッションプランナー内から操作)内では

FRAME_CLASS=2

となります。

モーター(スラスター)とサーボはローバーのこの絵のとおりになります。

こういうモーターの使い方を英語でSkid Typeといいます。検索する時、必要ですからできれば覚えましょう。

言うまでもなく、ラジコンコントロール側はチャネル1, チャネル3です。
2023年1月12日にようやくスラスターが回り始めました。

スラスターについて

BlueRobotics T100, T200, T500はもっともよく使われるスラスター(水中プロペラ)です。
通常、時計回り、反時計回りはパルスで決まります。
反転可能ESCが使われます。
もし、BLHeli ESCを使っているならば、アプリで設定できます。
BlueRoboticsのESCならキャリブレーションは不要です。すでに設定されています。(ここ重要!)

BlueRoboticsの他に中国製のスラスターもあります。
このスラスターはSharkという会社のESCがついてきました。

 

このESCもパルスによって反転はできるのですが、ESCキャリブレーションは行いましょう。
ESCの多くはキャリブレーションをしないと、動作しません。

パルスを送ってモーターテストするツールを私ももっていますが、それで動作したからといってもキャリブレーションなしでは、Ardupilotでコントロールできないです。

Ardupilotの設定

Ardupilotのウィキにローバーのセットアップはここに掲載されています。
が、Instructableにボートの手順がありました。(Building a self-driving Boat)
正しい配線がされていれば、以下の手順で動作するはずです。

  1. フライトコントローラにファームを書き込む
  2. ESCキャリブレーションをESCのマニュアルに従って行う(マルチコプターとボートは違います)
  3. ミッションプランナーをインストールして、ボードと繋ぐ
    (まぁこのあたりはMPを入れてファームを書き込む方がラクでしょう)
  4. ”必須ハードウェア”の設定をする
    • 加速度計を調整する
    • (外に出て)GPSとコンパスの調整をする
    • リモコンを調整する
    • 出力チャネルを(SERVO1, SERVO3)をフルパラメーターリストから設定する
  5. 設定のパラメーターリストから以下の設定をする
    • 電圧、電流センサーの設定
    • LED(もしあれば)
  6. モーターのテストとパラメーターを適正に調整(スロットルやスラスター強度。とくに反転可能なESCの場合、反転の境目となる回転数(Trim Vlue)を設定しなければならない)

ArduPilot は、考えられるほとんどすべての自動運転システムを構築するために使用できます。

ボート オペレーション上の注意

*この節はArming/Disarmingから

Arm/Disarm

マルチコプターでもArm/Disarmがあり、フライトするための準備ができている場合のみArm(「航行開始」といえばいいのか)状態に入ることができる。GPSが受信できていないなどの条件がある場合、フライト準備条件からはずすか、強制的にArmするかを選べる。
それでもいきなりモーターが回るとケガをしたり危険なので、Arm/Disarmは安全性の面からはずさないほうがいい。
マルチコプターの場合はプロポの左レバー(スロットル)を下げて右方向に少し保てばArmし、スロットルを下げて左方向に少し保てばDisarmする。

ボートにおいても同様にArm/Disarmがある。
出港できる準備が整っているならば、LEDは青く点滅しているはず。(manualモードならグリーン)
いずれでもない時は出港準備ができていないのでセンサー、モーターなどの条件を調べる。

Armの仕方は以下のとおり:

  • 送信機のジョイスティックでのArm: モードがHold, Manual, AcroかSteeringになっていることを確認する。
    スロットスティックを中央に保ち、ステアリングスティックを右に二秒倒す。
  • 送信機のスイッチ:外部の割り当てたスイッチをハイポジションにする。(外部スイッチの割当については後述)
  • GS(Mission PlannerやQGroundControl):Arm/Disarmを押す。

Disarmの仕方は以下のとおり:

  • 送信機のジョイスティックでのDisarm: モードがHold, Manual, AcroかSteeringモードの時にステアリングスティックを2秒、左に倒す。
  • 送信機のスイッチ:外部の割り当てたスイッチをローポジションにする
  • GSから:Aarm/Disarmボタンを押す

Armできない時のチェック

  • セーフティスイッチ:赤く点滅するボタンスイッチです。必要ないと思ったら取り外して、パラメーターのBR_SAFTY_DEFLT=0にします。(ボートではいらないと思います)
  • センサーチェック:加速度計、ジャイロが動作しキャリブレーションされている必要があります。(初期設定で行うべきことです)
  • AHRSチェック:(Attitude Heading Reference System)が初期化されていねばなりません。通常、ブートして30秒もすれば終了しているはずです。
  • コンパスチェック:コンパスが動作し、キャリブレーションされていなければなりません。(初期設定で行うべきっ項目です)
  • GPSチェック:3D GPS Fixとでているならそうです。使うGPSはすべて構成されていなくてはなりません。(言い換えるとGPS電波が受信されねばならず、普通は屋外です。GPS電波はとても弱いため、木造の家屋内でも受信は難しいです)
  • バッテリーチェック:バッテリーの電圧が足りない(もし、構成していえれば)
  • ログのチェック:マイクロSDカードにログを書き込める状態になっているか
  • RC コントロールチェック:RCが接続され、動作し、キャリブレーションされているか
  • ESCチェック:マニュアルには書かれていませんが、ESCがキャリブレーションされ、RCと連動するようになっていないとArmしません
  • 温度チェック:マニュアルには書かれていませんが、フライトコントローラーが冷たすぎるとArmできません。ログに出ます。

しばしばall チェックにしてしまっていますが、個別に設定しましょう。0にしても上記の下2つは満足していないとArmしません。

LEDとブザーの意味

Ardupilotを使い始めたころ、これがわからず苦労しました。

LEDがブルーで点滅 Disarm状態、ManualモードならArmできる

LEDがグリーンで点滅:Disarm状態、どのモードででもArmできる

LEDがイエローで点滅:Disarm状態、Armできない。Armチェックのどれかにひっかかっている

ブザーの意味はこのページで聞いてみてください。

MODE(モード)スイッチの割り当て

日本のサイトでRover(Boat)でフライトモードを切り替えるスイッチの割り当てについて書いているところはないように思います。
まず、RoverのRC Transmitter Flight Mode Configurationを読みます。
そこには「モードスイッチは3トグルスイッチに自動的に割り当てられる」とありますが、そんなことはありませんでした。
次にスイッチの(PWM pulse widths of 1165, 1425, and 1815 us)にすると自動的にスイッチが割り当てられるとありますが、およそなのか正確になのかわかりかねます。正確に割り当ててみても動作はしませんでした。

パラメーターのMODE_CHにチャネルの数値を書き込んで、「パラメーター書き込み」すると、そのチャンネルが割り当てられます。私の場合、チャネル5を割り当てたかったので5と書き込みました。

一方、そのスイッチがなぜチャンネル5になるかは、送信機で定義します。各送信機の解説を読めば、どのスイッチをどのチャンネルに割り当てるかカスタマイズの方法が書かれているハズです。
ちなみにチャンネル1から4までは普通、送信機の左右のレバーに割り当てられているのでいじらないほうがいいと思います。

そのほかの動作

リレーを動作させて

定義をした後、実際に走らせてどれくらいの速度が出るのか調べてチューニングが必要です。
自動運転は簡単じゃありません。