ドローンのボートについて基礎をまとめました。
ボートメーカー
船舶のドローンを作っている会社はいくつかあります。
以下にいくつかの会社とメインの事業目的を挙げてみます。
- Saildrone:Saildroneは、自律型のセール船型ドローンを製造しており、その船舶ドローンは海洋観測や気象観測などに使用されています。
- Sea Machines Robotics:Sea Machines Roboticsは、自律型船舶制御システムを提供しており、これにはドローンやその他の遠隔操作機器が含まれます。このシステムは、船舶の自動化や遠隔操作に役立っています。
- OceanAlpha:OceanAlphaは、水上ドローンの製造会社であり、その製品は海洋観測や測量、救助活動などに使用されています。
- ECA Group:ECA Groupは、船舶用のドローンやロボットシステムを製造しており、これらの製品は、海洋探査、海底調査、海洋観測などに使用されています。なんか軍関係っぽいです。
これらでわかることは、ドローンのボートは
- 観測
- 海洋流出対策
- パトロール (密漁など)
- 捜索救助
- 作業者のヘルプ
といったことに、すでに使われています。
「うみねこカンパニー」のボートもこれらの用途を目指していることは言うまでもありません。
必要パーツ
ここはあくまでも「うみねこカンパニー」のドローンボートの仕様です。
電源は安全なリチウムフェライト。リチウムポリマーは実は事故が多いので採用しません。
ボートの場合、重量は比較的ルーズでよく大量に搭載できるのが利点です。
- BlueRoboticsの水中モーター専用 ESC 30A x 2
- スラスター BlueRobotics T200 x 2
- スラスター固定フレーム
- フライトコントローラー Pixhawk
- ラジコン送受信機(FlyskyのFS-i6XとFS-i10B)
- GPS
- Raspberry Pi (コンパニオンコンピューター)
- パワーディストリビューションモジュール (5Vをラズパイに供給)
- ラズパイ電源配線用ケーブル
- ラズパイIPアドレス表示用小型キャラクターディスプレイ
- ブザー
- 識別用LED
- 大量の電池(18650 x 32個-64個)
- ショットキーバリアダイオード(逆流防止)
- 船体用フレーム
- コントローラー筐体
フライトコントローラーの選択
もちろんボートでも「フライトコントローラー」は必須です。
Cubeシリーズは航空系では要求される高い水準の処理能力をもっていますが、高すぎます。
Raspberry PiのHATになるNavio2はもってはいますが、4万円程度とラズペリーパイが二台買えるほど高価だしメーカーのEmlidの製品ページには、すでにありません。
結局、その時点時点でもっともユーザーが多い、出回っているボードを使うことが正しいということでしょう。
今なら明らかにPixhawkです。
Ardupilotの定義
Ardupilotにおいて、BoatはRoverタイプの亜流となります。
フライトコントローラー(ミッションプランナー内から操作)内では
FRAME_CLASS=2
となります。
モーター(スラスター)2台だけで船をコントロールするようなモーターの使い方を英語でSkid Typeといいます。検索する時、必要ですからできれば覚えましょう。
こんな船体(カタマラン型)の左右にひとつずつモーターをつけます。
人が乗る船としては居住性がよくないので好まれませんが、無人船の場合、圧倒的に安定するのでこの形を取ることにします。
Ardupilotの設定は次のとおり。
- SERVO1_FUNCTION = 73 (Throttle Left)
- SERVO3_FUNCTION = 74 (Throttle Right)
言うまでもなく、ラジコンコントロール側はサーボ1=チャネル1, サーボ3=チャネル3です。
自動運転にかかわるので、必ずこの順番で設定しましょう。これを間違うと、GUIDEDモードにした途端に回転します。
2023年1月12日にようやくスラスターが回り始めました。
パラメーターでARMING_CHECKを確認し、GPS lockとCompassだけは確認するようにします。後はチェックをはずします。
BRD_SAFETYENABLE = 0 としてスイッチの確認はなしにします。
ミッション中のスピードを指定しておきます。CRUISE_SPEEDパラメーターで 1-2m/secが妥当でしょう。
スラスターについて
BlueRobotics T100, T200, T500はもっともよく使われるスラスター(水中プロペラ)です。
通常、時計回り、反時計回りはパルスで決まります。
このような反転可能ESCが使われます。
BlueRoboticsのESCのマニュアル日本語翻訳はこちら
ビープ音がどういう時に、どう鳴るかは複雑なので、ぜひご参照ください。
スラスターの取り付け方向はこちらの写真。
T-200にはCW(時計回り)スクリューとCCW(反時計回り)のスクリューがついています。
2台使う場合、CWとCCWを組み合わせないと船が傾きます。
スクリューの取り外し、取り付けはこちらを参照すること
スラスターの回転方向は前から見て右のスラスターは時計回り。左のスラスターは反時計回りです。
後ろから見ると右(前から見た左)は反時計回り。左(前から見た右)は時計回りということになります。正しくなるようにケーブルを繋ぎ変えます。
スラスターのテストは、水の外 (乾いた状態) で 10 秒以上作動させないでください。ベアリングは潤滑のために水を必要とし、乾燥した状態で長時間スラスターを操作すると損傷する可能性があります。
調整
Ardupilotのウィキにローバーのセットアップはここに掲載されています。
が、Instructableにボートの手順がありました。(Building a self-driving Boat)
正しい配線がされていれば、以下の手順で動作するはずです。
- ミッションプランナーをインストールして、ボードと繋ぐ
- フライトコントローラにRoverのファームを書き込む
- ESCキャリブレーションは上記のマニュアルのとおり。省略
- ”必須ハードウェア”の設定をする
- 加速度計を調整する
- (外に出て)GPSとコンパスの調整をする
- リモコンを調整する
- 出力チャネルを(SERVO1, SERVO3)をフルパラメーターリストから設定する
GPSの補正をしないと、まともに動かなかったことがしばしばあります。いろんなところに影響を与えているようです。
- 設定のパラメーターリストから以下の設定をする
- 電圧、電流センサーの設定
- 送信機のモード設定チャネルの変更
- モードの設定
- モーターのテストとパラメーターを適正に調整(スロットルやスラスター強度。とくに反転可能なESCの場合、反転の境目となる回転数 だいたい1500(Trim Vlue)を設定しなければならない)
ArduPilot は、考えられるほとんどすべての自動運転システムを構築するために使用できます。
ボート オペレーション上の注意
*この節はArming/Disarmingから
ARM/DisARM
ボートにおいても同様にARM/DisARMがあります。
出港できる準備が整っているならば、LEDは青く点滅しているはずです。(manualモードならグリーン)
Armできない時のチェック項目
まず、ミッションプランナーの画面に赤文字が出ていないか確認します。
それでわからない時は、
- AHRSチェック:(Attitude Heading Reference System)が初期化されていねばなりません。ドローンは電源投入後、しばらく時間をおきましょう!
- セーフティスイッチがセーフ:赤く点滅するボタンスイッチです。必要ないと思ったら取り外して、パラメーターのBR_SAFTY_DEFLT=0にします。(ボートではいらないと思います)
- センサーチェック:加速度計、ジャイロが動作しキャリブレーションされている必要があります。(初期設定で行うべきことです)
- コンパスチェック:コンパスが動作し、キャリブレーションされていなければなりません。
- GPSチェック:3D GPS Fixとでているならそうです。使うGPSはすべて構成されていなくてはなりません。(言い換えるとGPS電波が受信されねばならず、普通は屋外です。GPS電波はとても弱いため、木造の家屋内でも受信は難しいです)
- バッテリーチェック:バッテリーの電圧が足りない(構成していますか?)
- ログのチェック:マイクロSDカードにログを書き込める状態になっているか
- RC コントロールチェック:RCが接続され、動作し、スロットルがゼロか。(スロットルゼロは難しいので、ARMの条件に入れないほうが運用はラクです!)
- ESCチェック:マニュアルには書かれていませんが、ESCがキャリブレーションされ、RCと連動するようになっていないとArmしません
- 温度チェック:マニュアルには書かれていませんが、フライトコントローラーが冷たすぎるとArmできません。ログに出ます。
しばしばall チェックにしてしまっていますが、個別に設定しましょう。0にしても上記の下2つは満足していないとArmしません。
LEDとブザーの意味
Ardupilotを使い始めたころ、これがわからず苦労しました。
LEDがブルーで点滅 Disarm状態、ManualモードならArmできる
LEDがグリーンで点滅:Disarm状態、どのモードででもArmできる
LEDがイエローで点滅:Disarm状態、Armできない。Armチェックのどれかにひっかかっている
ブザーの意味はこのページで聞いてみてください。
モードについて
モードとはその走行の状態を決定します。例えばManualならば、プロポでコントロールすることをいい、Autoならあらかじめアップロードした航行計画を実行しはじめます。
理解しておくべき代表的なモードは以下のとおりです。
- Acro – ACRO_TURN_RATE(最大回転割合)とCRUISE_THROTTLEとCRUISE_SPEEDにしたがってジョイスティックで操作される。Autoの基本的機能の設定。
- Auto – 自動運転。最初はMANUALかHOLDでミッションを開始する。
- GUIDED – グランドステーションからの指令により動作する。テレメトリーを繋いでいれば無線でOK
- HOLD – 停止状態
- LOITER – その場に停止。川や流れの中でもGPSを利用して止まっているように見える。
- MANUAL – ラジコンと同じ
- RTL – Return To Launch ホームポジションに帰ってくる。緊急時に使われることが多い
- Smart RTL – Return To Launchでまっすぐ戻ると障害物がある場合、Smart RTLを選ぶべき。行った道どおりに帰って戻ってくる。
コンパニオンコンピューター
コンパニオンコンピューターはオプションですが、水上ドローンでは必須です。
通常、ラズベリーパイというワンボードコンピューターを使います。
何に使うのかというと、以下のような使い道があります。
- WiFiテレメトリー/LTEテレメトリー
- サービスリクエストを受けてフライトコントローラーに司令を送るWebサーバー
- Pixhawkにデータを送ったり、受け取ったり
- カメラ、ウィンチの操作
フライトコントローラーとの接続は、テレメトリー(シリアル)です。コネクターはPixhawkの場合、DF13です。Raspberry Pi側はピンソケットです。ちょっと特殊なケーブルを自作することになります。
そのほかの動作
さて、定義をした後、実際に走らせてどれくらいの速度が出るのか調べてチューニングが必要です。
自動運転は簡単じゃありません。
ボートが思わぬ動作をした時に回収する方法を見つけておきましょう。
リアルの船がもっともいいのですが。。。