やりたいこと
ドローンを利用して自動操縦(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
システム構成

手順
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)。その他の項目は適当に記載

3(開発PC)サンプリコード内にAPIキーを入力
AndroidManifest.xml(パス:Sample Code/app/src/main/main)

4(開発PC)Sample Codeフォルダーを開いてビルドする
- gradle-wrapper.properties(パス:Sample Code/gradle/wrapper)で一度「Sync」OR「build」
※まず最初からSyncするといいと思うが、大抵の場合ビルドエラーが起こる。こんな感じ

- 「Change Gradle version in Gradle wrapper to 7.5….」を押すと、自動的にgradle-wrapper.propertiesの中身を書き換えてくれて、ビルドする

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

- 起動後に「Register App」を押すと、DJI SDK利用が可能になる
6(BridgeApp用携帯)携帯にBridgeAppをインストール
- iOSはApp Storeからダウンロードする
- Andriodはdji-sdk/Android-Bridge-Appからapk経由でインストール
7(BridgeApp用携帯)Bridge AppでRCに接続
- 携帯は開発者モードをONにし、USB DebuggingをONにする
- RCの電源をON、Phantom 4の電源をONにする
- Bridge Appを立ち上げて、USBでRCに繋ぐ

- 画面のIPアドレスをメモる(こちらの端末では192.168.1.35)
8(開発PC)IPアドレスをエミュレータ画面に入力
- 「WSBridge IP」欄にIPアドレスを入力
(開発PC画面)

(BridgeApp用携帯画面)

9(シミュレータ用PC)DJI Assistant 2でPhantom 4に接続
DJI Assistant 2 for Phantomを立ち上げて、USBでPhantom 4に繋ぐ
このアプリを使うには、以下の制限と設定が必要です(少し面倒ですね…)
- ※新し目のMACで使えない
- ※USBドライブにアクセス制限あるPCはそれを解除する必要
検知できると、こんな画面が出てくる


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

10.🍷🍷🍷操作できました🍷🍷🍷
結論
シミュレーターを動かすことができました。ドローンにUSBで繋ぐところはなぜファイアウォールを無効化する必要があるのか理解できていないため、今後の調査課題とします。
シミュレータで学んだ後は、ドローン本体を調達して動かしていきましょう!