フューチャー技術ブログ

DJI Mobile SDKのサンプルコードでシミュレータを動かしてみる

やりたいこと

ドローンを利用して自動操縦(Autopilot)のロジックを組みたいですが、自宅でドローンを飛ばしたら家が壊されてしまう恐れがあるので、シミュレータを使いたいなと思いました。

調査した結果、DJI Assistant 2というアプリがあり、開発PCでデバッグしながら動きを見ることができるそうです。

早速、作業に入りましょー!

必要なもの

  • DJI Phantom 4
  • リモートコントローラー(以下、RC)
  • USBケーブル数本

バージョン

  • 開発PC
    • Android Studio Hedgedog
    • Android SDK API Level 31
    • Gradle 7.5
    • Gradle JDK Correcto-11
  • シミュレータ用PC
    • DJI Assistant 2 for Phantom
  • Bridge App用携帯
    • DJI Bridge App

システム構成

image.png

手順

1(開発PC)DJI Mobile SDK V4をクローン

https://github.com/dji-sdk/Mobile-SDK-Android/tree/master

2(開発PC)DJI DeveloperでAPIキーを発行

  • DJI Developerでログイン
  • 「CREATE APP」でアプリケーションを登録する

※Package Nameはサンプルコード内のパッケージ名(各パッケージが存在するパス:Sample Code/app/src/main/java)。その他の項目は適当に記載

image.png

3(開発PC)サンプリコード内にAPIキーを入力

AndroidManifest.xml(パス:Sample Code/app/src/main/main)

image.png

4(開発PC)Sample Codeフォルダーを開いてビルドする

  • gradle-wrapper.properties(パス:Sample Code/gradle/wrapper)で一度「Sync」OR「build」
    ※まず最初からSyncするといいと思うが、大抵の場合ビルドエラーが起こる。こんな感じ
image.png
  • 「Change Gradle version in Gradle wrapper to 7.5….」を押すと、自動的にgradle-wrapper.propertiesの中身を書き換えてくれて、ビルドする
image.png

5(開発PC)エミュレータを起動

image.png
  • 起動後に「Register App」を押すと、DJI SDK利用が可能になる

6(BridgeApp用携帯)携帯にBridgeAppをインストール

7(BridgeApp用携帯)Bridge AppでRCに接続

  • 携帯は開発者モードをONにし、USB DebuggingをONにする
  • RCの電源をON、Phantom 4の電源をONにする
  • Bridge Appを立ち上げて、USBでRCに繋ぐ
image.png
  • 画面のIPアドレスをメモる(こちらの端末では192.168.1.35)

8(開発PC)IPアドレスをエミュレータ画面に入力

  • 「WSBridge IP」欄にIPアドレスを入力

(開発PC画面)

image.png

(BridgeApp用携帯画面)

image.png

9(シミュレータ用PC)DJI Assistant 2でPhantom 4に接続

  • DJI Assistant 2 for Phantomを立ち上げて、USBでPhantom 4に繋ぐ

  • このアプリを使うには、以下の制限と設定が必要です(少し面倒ですね…)

    • ※新し目のMACで使えない
    • ※USBドライブにアクセス制限あるPCはそれを解除する必要
  • 検知できると、こんな画面が出てくる

image.png image.png
  • 「Simulator」>「Start Simulating」を押すと、Simulatorが立ち上がる
    ※ファイアウォールを無効化にする必要! そうしないとRCからの信号が到達できない
image.png

10.🍷🍷🍷操作できました🍷🍷🍷

結論

シミュレーターを動かすことができました。ドローンにUSBで繋ぐところはなぜファイアウォールを無効化する必要があるのか理解できていないため、今後の調査課題とします。

シミュレータで学んだ後は、ドローン本体を調達して動かしていきましょう!