DHJJ [Hatsune's Journal Japan] blog

Hatsune's Journal Japan blog

目次

Blog 利用状況

ニュース

最新ツイート

運営サイト

Hatsune's Journal Japan
DHJJ

著作など

資格など

OCP
MCP

書庫

日記カテゴリ

わんくま同盟

2018年6月23日 #

[hardware]MAVIC AIRにも使えるDJI SDKを入手しよう

DJIのドローンでSDKといえば、build 2018で発表されたWindows 10 drone SDKに注目しています。

しかしながら、こちらは2018年秋くらいのリリースということで、9月のMicrosoft Igniteあたりにならないと詳細は出てこないかもしれないですね。

Windows 10 drone SDKがくればWindows 10デバイスで動作する制御アプリも組みやすくなるので、例えば、HoloLensであったり、Windows MRであったり、での活用もしやすくなるので、本当に待ち遠しいですね。

とはいえ、秋まで何もしないのももったいないですから既存のSDKで何か作っていきたいと思います。

SDK利用時のシステム構成

.

作成したアプリはSDKを経由してDJIのリモートコントローラーと接続し、その先のドローンをコントロールすることになります。MAVIC AIRの場合は、SDKから直接ドローンにもWi-FiやBluetooth経由で接続可能です。

App Keyの生成

SDKを使うときにApp Keyeの指定が必要ですが、こちらは、DJIのサイトに登録が必要です。

https://developer.dji.com/mobile-sdk/

登録時の個人認証にはクレジットカードまたはスマホへのSMSへの認証コード送信のどちらかが利用可能です(一時期動いていない時期もありましたが、2018/6/22現在は動作しています)。

登録が完了したらUser Centerにて自分のアプリケーションを登録してコードを取得します。

SDKの入手

現在のSDKはいろいろな種類がでていますが、MAVIC AIRで使うのであればMobile SDKに注目です。

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

https://github.com/dji-sdk/Mobile-SDK-iOS

SDK自体はどこにあるかといえば、Mobile-SDK-Android-master\Sample Code\gradle\wrapper\gradle-wrapper.jarがSDKになります。

Xamarin.AndroidでSDKを利用する

jarファイルをXamarinから呼び出すためには、バインディングライブラリを作成してjarファイルをまるっとXamarinのクラスライブラリでラッピングしてあげる必要があります。

image

jarファイルの追加

プロジェクトが生成できたら、Jarsフォルダを右クリックして[追加]-[既存の項目]メニューを選択します。

image

ダイアログが開いたらgradle-wrapper.jarを指定して、Jarsフォルダにgradle-wrapper.jarを追加します。

jarファイルのプロパティ指定

image

jarファイルに対するビルドアクションとして「EmbeddedJar」をしてしてdllにjarファイルを埋め込むようにします。

バインディングライブラリのビルドエラー対策

この状態でバインディングライブラリをビルドしてあげてエラーなくビルドできれば、バインディングライブラリのdllが完成します。

しかしながら、ここでエラーが出ないもののほうが少なく、gradle-wrapper.jarも当然のようにビルドエラーが発生します。

ビルドエラーは3件、すべてCS0535「〇〇はインターフェイスメンバー△△△を実装しません」です。

image

解決方法はいくつかありますが、今回出ているエラーは、「AbstractCommandLineConverter」、「AbstractCommandLineConverterInvoke」、「DownLoad」なので、主要な部分ではなさそうで使わないでもアプリ作れそうですから、とりあえずはなかったことにしてしまって、後日、必要だったらまた考えることにしたいと思います。

そのためには、Metadata.xmlに次の定義を入れておきます。

<remove-node path="/api/package[@name='org.gradle.wrapper']/class[@name='Download']" />
<remove-node path="/api/package[@name='org.gradle.cli']/class[@name='AbstractCommandLineConverter']" />


次回に続きます。

posted @ 1:43 | Feedback (245)