amazon PrimeAir みたいなことは自分でもできるらしいってばよ!?【設定・接続編】
見出し画像

amazon PrimeAir みたいなことは自分でもできるらしいってばよ!?【設定・接続編】

might(マイト)

というわけで【設定・接続編】です。
今回の取り組みに至った経緯等に関しては、過去のエントリをご覧下さい。

amazon PrimeAir みたいなことは自分でもできるらしいってばよ!?【出会い編】

というわけで!

早速取りかかります。
…と言っても、DJIのSDKを用いるにしても情報がもっと欲しいところ。
でも今すぐ試してみたい(気持ち先行w)。

とりあえずSDK落として、Android Studioを最新版にして〜っと。
Android Studioはカナリ古いバージョンで止まってたので、自分でもびっくりw

Drone Blocksってなんだろ?

調べている中で「Drone Blocks」というアプリを見つけました。
海外サイトですけどこちら!
■ Drone Blocks 
https://www.droneblocks.io/

DJI製のドローン限定のようですが、命令が記されたブロックを組み合わせるだけで飛行プログラムが作れるようです。へぇ〜。
でも私がやりたいのはコレジャナイ!

…と思ったのですが、このアプリって裏側ではDJIのSDKに命令を渡しているアプリなのかな?と逆に気になりました。

つまり、Drone Blocksでできることは、DJIのSDKでできるってこと?

逆に興味が湧き、Drone Blocksを調べたら日本人による紹介記事なども見つかりました。

現時点でプログラミングでドローンを飛ばす手段

調べてみると、SDK以外にもドローンを飛ばす手段が見つかったので、現時点では下記の2点がドローンを制御できる手段のようです。
  ■ DJIのドローン用SDKを用いてアプリケーションを制作する。
  ■ Drone Blocksを用いて飛行プランのプログラミングを行い、実行。

ひとまずDrone BlocksでSDKができることを探る

Drone Blocksが恐らくSDKを叩いている推測から、まずはDrone Blocksで色々試してみて、SDKができることを把握したいと思います。
その後、SDKを用いたアプリ制作へシフトしたいと考えています。

進めるにあたり、残念なことも1点。
先程「日本人による紹介記事なども見つかった」と書きましたが、そのほとんどがDJIのトイドローン「Tello」を用いており、作成できる命令に制限があるものなので、今回の勉強には「うーん」なものばかりです。
今回の開発機材で用意したMavic Airを用いた記事は…見つけられませんでした!w

これはもう人柱になるしかないですね(泣)

嘆いていても仕方ないから準備

今回用意する機材はこちら
 ・DJI製ドローン Mavic Air本体
 ・ドローン操作用プロポ(コントローラ)
 ・DJI GO 4アプリ(iOS版  初期の接続で必要)
 ・Drone Blocksアプリ(iOS)

飛行プランの設定

【出会い編】の記事でも書きましたが、法律により気軽にどこでも飛ばせません。それに設定誤って空の彼方に飛んでいったら大変なので、まずは動かすことに集中します。

Drone Blocksアプリを起動し、下記のような飛行プランを設定します。
 ・離陸する
 ・3フィート(約90cm)まで上昇
 ・5秒間その場でホバリングする
 ・カメラで写真を1枚撮影する
 ・着陸する
室内なので、動き回らないようにしますww
設定した画面は下記です。

ドローン本体、プロポ、スマホを接続する

ここは通常利用時と同じなので、DJIの純正アプリ「DJI GO 4」を経由する形で、ドローン本体とプロポを接続します。

接続すると、ファームウェアのチェックが行われます。
問題なければドローン本体のセルフチェックが行われ、さらに問題なければ離陸可能状態になります。
また、カメラの映像がスマホアプリ上に映ります。
(散らかってる部屋でごめんなさいw)

Drone Blocksアプリと繋ぐ

ココ最初わかりませんでした。
DJI GO 4アプリと繋がっているのに、どうやってDrone Blocksアプリと繋ぐの?って。
この箇所について触れている情報も見つけられなかったので、「えいや!」とタスク一覧画面呼び出して、強引にDrone Blocksアプリに切り替えw

お?画面右上のに「Only RemoteContoller」って表示出た。
アプリだけで使ってた時は「No Aircraft Connected」ってなってたし。
リモートコントローラってどれ?このアプリに繋がったの??不明。
とりあえず繋がった気がするので、Drone Blocksアプリの「メニューボタン>Preview Mission>Start Mission」でプログラムを走らせてみる!

確認画面が出たぞ?もちろんYes!

はいエラー!予想通りエラー!一瞬でエラー!
そんな上手くは物事運びませんね。
Codeは出てるけど、nullってなんやねん!このアプリバグってるんとちゃうか!?
なんて疑いを持ちつつ、エラーコードからググるもヒットしないんだなコレが…。いや違う、ヒットするけど、完全英語…まぁ予想はしてたけどね。

提供されているエラークラスのドキュメント確認して〜。
それを元にまたググったりして〜。
考えてみたら、他人(他社)が作ったアプリだからデバッグできないじゃん!w
でも原因くらいわからんかなぁ〜。。。
・・・やりくり1時間程。

困った時の再起動、再接続(笑)

やっぱりこれですね。
全部接続解除して、電源入れなおしたりして改めて接続し直しましたよ。
そしたらMavic AirをDrone Blocksが認識しました!バンザイ!

右上の表示が「Mavic Air」になりました!
やれやれです、、、調べまくった時間は何だったのか…。
でもエラーの分だけプログラミングは上達するのです!
(今回ソース書いてないけど)

改めて!Take Off!

これで繋がったはずなので、今度こそ行けるはず!

Start Missionボタンから、さっきの確認画面が出て〜。

プロペラ回った!

そして

飛んだ!

空低く舞い上がりました!(室内なので)

そしてプログラム通り、90cm程浮き上がり、5秒間のホバリングへ。
うんうん、順調順調♪

そして悲劇がやってくる・・・

順調にホバリング、次は写真撮影だ!
と思っていた最中、それは起きました。

このドローン、優秀だから障害回避のセンサーがあるんですよね。
前後と下方向にセンサーが付いているようです。
なのでセンサーが反応すると、障害物に衝突しないように離れようとします。
はい、そこでたまたま下に私がいたんですね。。。
なのでドローンは私を障害物として判断し、上昇しようとします。
私はそれを阻止しようと手を伸ばします。それがいけなかった…。

私を障害物と判断したドローンは、それを回避しようと更に上昇。
それに気づかず、抑え込もうと手を伸ばしましたが、それをまたドローンは障害物として検知し、回避しようと上昇ww

バキッ

と天井に衝突。
部屋の電気の傘にぶつかり、落下。
電気の傘は割れてしまいますw

そして落下するドローンを抑え込もうと手を伸ばすも、回転が止まっていないプロペラに手を巻き込まれ、右手の指2本が刻まれ、損傷。
まじかーww
周囲には鮮血が飛び散る不始末…。

まとめ

最後は散々な不始末となってしまいましたが、プログラミングでドローンを飛ばすことができるのはわかりました。
プロポを握らず飛ぶその姿は感動すら覚えました。

最後は空飛ぶドローンだけにオチのある結果となってしまいましたが、次は体育館など、屋根のある広い施設で飛行を確認し、SDKを用いた本格的なプログラミングへシフトしたいと思います。

そしてその先には、人の役に立つドローン連携アプリケーションとしてリリースできるよう頑張りたいですね!

今回のところはひとまずタイピングもままならないこの指の治療に専念します。

いや〜マネジメント職やってても、やはりエンジニアリングな作業は楽しいですね!

次回に続く!

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
might(マイト)
ガジェットとアニメやゲームが大好きな元アプリエンジニア。今はプロジェクトマネジメントの知識と経験を得るために苦戦の日々。 新しい技術には特に目がなくすぐ飛びつく。最先端技術サイコー! 最近は購入したバイク(MT-25)を駆り、知らない土地へ行っては新しい発見に感動している。