2020年11月10日火曜日

DJI Mavic Pro ドローンアプリの開発

DJIのMavicProのアプリを開発したい。


iOSは開発環境を整えるのに資金(Macbook買ったりDeveloper登録したり)が必要なのでまずはAndroidアプリの開発。

参考になる記事だったりが英語がほとんど。っていうか全部英語。
日本語で参考になるページやブログはほぼ皆無。

前提条件としてDJIのSDKを扱うのは初めて。
Android Studioを使うのも初めて。
PCは東芝のノートPC、Windows10 x64




やったこと。

  • DJIのDeveloper登録
    DJI Developer
    https://developer.dji.com
  • Android Studioのダウンロード、インストール
    Android Studio と SDK ツールをダウンロードする | Android Studio
    https://developer.android.com/studio/index.html
    3.0.1を使った。
    日本語化もした。あんまり記憶に無いけど多分これ使ってやった。
    Pleiades - 日本語化プラグイン Eclipse, IntelliJ, PhpStorm...
    http://mergedoc.osdn.jp/
  • DJI SDKのダウンロード
    DJIのSDKは大きく三種類ある。
    Mobile SDK、Onboard SDK、Guidance SDK
    SDKのダウンロードにDeveloper登録が必須なように思ったが、GitHubから落とせる。
    https://github.com/dji-sdk/Mobile-SDK-Android

    このへんとか参考
    https://www.borg.media/dii-developer-overview/


サンプルとしてカメラにアクセスしたかった。
ここをに書いてあることだけをしてサンプルアプリを作れるもんだと思ったが、どうしてもビルドが通らなかった。
 Creating a Camera Application - DJI Mobile SDK Documentation
いろいろぐぐると出来上がったサンプルソースがあった。
これがサンプルソース。これを基本的にはそのまま使えばアプリが起動する。
対応、変更したのは下記の通り。

  • DJI Developerサイトでアプリの登録。
    USER CENTER→AppsでCREATE APP
    APP NameにFPVDemo
    Bundle Identifierにcom.dji.FPVDemo
    他は適当。API Keyが発行される。
  • Android-FPVDemo-master\FPVDemo\app\src\main\AndroidManifest.xml

    android:value="Please enter your App Key here."
    に自分のAPIキーを入力。
  • ビルドが通らなかった。
    こんなエラーメッセージ
    エラー:Failed to find target with hash string 'android-23' in: C:\Users\user\AppData\Local\Android\Sdk
    Consult IDE log for more details (Help | Show Log)
    <a href="install.android.platform">Install missing platform(s) and sync project</a>


    C:\Users\user\Desktop\Android-FPVDemo-master\FPVDemo\app\build.gradle
    これを

    defaultConfig {

            ndk {
                abiFilters 'armeabi-v7a'
            }

    こう
            ndk {
                abiFilters "armeabi-v7a", "x86"
            }
     
  • Android-FPVDemo-master\FPVDemo\.idea\misc.xml
    これも変わってたけど意図して変えた記憶はなし。
    これが
    <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="JDK" project-jdk-type="JavaSDK">
    こうなってた。
    <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
エミュレータデバッグは不可。ドローンと通信するため?
実機でバッグの方法はAndroid側端末で
設定→端末情報→ビルド番号
ここを連打タップ。そしたら設定画面に「開発者向けオプション」が表示されるようになるので、ONにして「USBデバッグ」のチェックを入れる。
OSがアップデートされたら方法は変わるかも。
PCとAndroid端末をUSBで接続したら端末側に「USBデバッグを許可しますか?」の旨の文言と PCの(おそらく)MACアドレスが表示されるのでOKを押下。

AndroidStudio側は
実行→デバッグ→接続済みのデバイス
から接続した端末を選択してOK。
接続して直ぐに表示されなかったり、正しい端末名が表示されるまで時間がかかることがあるので少しは気長に待つこと。

これで実機デバッグできる。
デバッグをすると端末側にデバッグしたいアプリがインストールされるみたい。
アプリ一覧に(アプリ側でアイコンを設定していなければ)ドロイドくんのアイコンで指定したアプリ名のアプリがインストールされていることが分かる。

ドローンとAndroid端末を接続するには2つすることがある。
  • ドローン側でWiFiモードへ切り替える。
    Mavic Proの話でSDカードが入っているスロットcoverを開いて制御モードのスイッチをWiFiモードに切り替える。
    普段はRCモードのはず。
  • 端末をドローンにWiFi接続する。
    端末側のWiFi設定でドローンのアクセスポイントに接続する。
    APの設定はドローン本体のシールに記載。
    Mavic Proの場合はバッテリーを外した本体側にSSIDとパスワードが書いてあるので写真を取ると吉。
    追記:右前足にもWiFiのシールが貼ってあったのでバッテリーがハマっていても確認可能。
    ドローンの電源をONにするとドローンAPに接続できる。
端末をドローンAPに接続し、実機デバッグの準備ができて端末側でアプリを起動すればカメラ映像が見られた。
サンプルアプリではリアルタイムのカメラ映像の表示、静止画・動画のキャプチャができた。
キャプチャしたデータはドローンのSDカードに保存される。

サンプルページを参考に自分でコーディングしようとしてたところで一週間くらいつまずいたが、サンプルアプリをそのままきどうするだけなら半日かからずで終えることができた。

DJIのDeveloperページとかReferenceが日本語化されたらめっちゃ開発しやすいのになぁ・・・。

とりあえずここまで。


0 件のコメント:

コメントを投稿

Amazonデバイスおすすめ