Mission Plannerで航行計画を作る

ardupilot
image_print

ドローンを使うアプリケーション(適用業務)として、「地表をくまなく撮影して地図を作る」というものがあります。
できあがった地図から3Dの起伏を調査してみたり、森林の状況を調べたりすることに使われています。

ドローンを飛ばし、海上から海を撮影する試みはなされていますが、私の認識ではうまくいかないと考えています。
理由は、そもそも海は風が強いのです。海風、陸風、天候による風と風が吹かないことはあまりありません。風速2メートル程度でドローンは煽られます。煽られないようにするためには機体を大きくするしかありません。旅客機があまり揺れない理由は機体が十分に大きいからです。
また海面から海の中はほとんど見えません。見えればもっと漁はラクなんですけどね。

漁師の中には海底の状態を知りたいと潜って丹念に写真を撮っておられる方もいるようです。

もうひとつポピュラーな方法は衛星写真です。ご想像どおり衛星写真はかなり高価、かつぼんやりとしかわかりません。

水上ドローン(船)はロボットです。休むことを知りません。
ドローンでこそ海底の地図を作りたいということが、本稿のテーマです。GPSを基に正確に場所を決めて写真を撮れることが期待できます。

撮影計画をたてるためには、ドローン本体よりもドローンの飛行計画を立てることの知識が多く必要です。

Mission PlannerのSurveyオプション

連続して海中写真を撮影する方法は、Mission Plannerで航行計画を建て、フライトコントローラーに送り込みAutoモードで実行させるということになります。

残念ながらMission Plannerは今回やるような細かいところがマルチコプター用にできていて、ボート用としてはわかりにくいところもあります。

以下、フライトプラン地図画面で。

まず、対象エリアをポリゴンで囲みます。地図上で右クリックすると次のようなメニューが出ますから、選択します。

ポリゴンを描いたら、次にSurveyを指定します。

Surveyを選択すると、別画面が立ち上がります。

撮影の間隔と船の移動速度

ここで船は飛びませんから、右ペインの指定を次のように解釈します。
カメラの指定は視野角があらかじめ定義されているようです。それと、Altitude(高度)で写真の撮影範囲がわかりますよね。
それでシャッターを何メートルおきにトリガーするかを自動的に決めるようです。

ですから、画面下部のDist between imageの数値をよく見てください。
逆にここを変化させるためには、カメラやAltitudeを調整します。

なお、Angleはポリゴン内を移動する角度です。Surveyモードで自動計算しますから変更しません。

さて、どれくらいのDist between images(間隔)で撮影すればいいのでしょうか?

GoPro Hero 11の場合、まず撮影モードをリニアにします。(でないと画像が魚眼処理でゆがむ)
この場合、視野角は110度となります。
110度の意味を考えます。深度5メートル程度の海底を撮影すると仮定します。5メートルが妥当かというよりも、なんらかの目安がないと考えようがないから「仮定」です。
3D Mappingするためにはだいたい80%撮影が重なっていることが望ましいとされています。
すると、次のように考えられます。

となり、一回の撮影で海底14.28 (7.14×2)メートルとなり、80%重なった状態での移動距離は2.8メートルとなります。
これを目安に移動距離を決めればいいと思います。

ところがCAM1_DURATION(カメラ撮影の時間)を3秒にセットすると、2.8メートルの移動には3秒以上かかるように設定しなければなりません。
撮影の時に船は止まりませんから移動速度とカメラのシャッター動作に必要な時間を考慮します。
カメラの動作はいろいろ選べます(Camera configタブ)が、DO_SET_CAM_TRIGG_DIST(上記Mission Plannerのdist between imagesの距離)が推奨されています。
他にもDO_DIGICAM_CONTROLやDO_SET_RELAYというものがあります。
結果的にFlying speedは0.9mくらいが妥当だということになります。

SurveyモードのWaypoint

もうひとつ考慮点があります。
Surveyモードでは一気に広い海域を指定しないでください。
ひとつは自動運転のWaypointの数が多すぎて、フライトコントローラーの転送に失敗することがあります。経験的に200前後なら問題ありません。

もう一点は電池の問題です。
ミッションはフライトコントローラーのRAMにあり、電源が落ちるとミッションを覚えていません。したがって適当な間隔でミッションを終了しRTLさせて電池交換し、新たなミッションをアップロードしたほうが確実です。

GoProの設定

GoProの写真モードでの設定はあまり資料がないし、設定できる箇所も少ないです。
赤色フィルターをつけたほうがいいという説もありますが、照明を取り付けたほうがいいと思います。
先ほど書いたように、撮影モードをリニアにして出力はSuperPhotoにしてあります。あと、ホワイトバランスを自動にしてしまうと、ますます設定できるところがなくなります。

そもそも水中写真撮影において、地上の一眼レフカメラのようにピント調整している人はいません。また、魚を美しく撮るわけではないので、これでいいのでしょう。

以前のプランを消す方法

Mission PlannerのSurveyモードで転送したプログラムを消す方法は
MIS_OPTIONS=1 を設定して再起動し、これによりミッションがクリーンアップされ、その後、将来のミッションを維持するために MIS_OPTIONS=0 に戻します。

とはいえ、、、

surveyで決めた航行をドローンに送り、AUTOモードにすると計画を実行しはじめます。

しかし、電池切れなどfail safeの状況になるとミッションは途中で止まります。
この時、電池交換するとミッションの状況はフライトコントローラーからふっとびます。

もしくはなんらかの理由でミッションの実行が止まった時、SET_CAM1_TRIGG_DISTでセットした状況は続き、ひたすら写真を取り続けます。

コンパニオンコンピュータに残された写真の緯度経度をGoogle Mapにプロットするプログラムを開発しました。
緯度経度だけを見ていても、所在地がわかりづらいからです。

マークアップした部分が写真を撮ったところで、マークアップには写真のファイル名が付加してあります。
これがないと、どの写真が必要なのか、なかなかわかりません。

写真撮影をストオプするにはMission PlannerからフルパラメーターリストでSET_CAM1_TRIGG_DISTを0にするしかないようです。

 

タイトルとURLをコピーしました