はじめに
MacでARSDKを使って、Parrot社のドローンを操作できるiOS版アプリケーションを開発するために必要な最低限の準備について記します。
この記事を執筆した時点のARSDKのバージョンは3.11.0、Swiftのバージョンは3.0.2です。
執筆にあたっては、こちらの記事を参考にさせていただきました。
開発言語によらず必要な準備
開発言語としてObjective-Cを使うにしろ、Swiftを使うにしろこちらの"Creating Project"に記された準備は必ず必要です。
空のプロジェクトを作成して、こちらの準備をしてください。
作成したプロジェクトを第三者に利用してもらうことを考えているのであれば、インクルードファイルやラリブラリファイルへのパスの記述に注意してください。相対パスを使って記述するか、マクロを使って記述して開発環境に依存しないようにしましょう。
どのコントローラ相当のアプリとするか
アプリケーションは、ドローンのコントローラの代わりにBLEもしくはWiFiでドローンに接続します。
そのため、アプリケーションがどのコントローラとして振る舞うかを決めたうえで、リンカのオプションを指定する必要があります。
こちらに記されている通り、SkyController相当のアプリとするのであれば、リンカオプションの"-lardiscoverywithouteacc"はそのままで良いですし、追加で特に必要な作業はありません。
SkyController2相当のアプリとするのであれば、リンカプションの"-lardiscoverywithouteacc"は"-lardiscovery"としたうえで、ExternalAccessoryフレームワークをプロジェクトに追加する必要があります。
プロジェクトの追加手順については、検索するといくつか見つかるのでそちらを参考にしてください。追加するフレームワークはExternalAccessory.frameworkです。
筆者は、SkyController2相当のアプリとする形で設定しました。
Swiftからの参照
こちらを見てわかるとおり、いまライブラリが用意されている言語はObjective-C、Java、Cだけです。
そこで、SwiftからObjective-C向けのライブラリを参照できるように準備します。
こちらも、検索するとたくさん手順が見つかりますが、必要な手順をまとめると次のとおりです。
- プロジェクトにBridging-Header.hファイル(例:ARSDK-Bridging-Header.h)を追加する。
- ターゲットの"Build Settings"にある"Objective-C Bridging Header"に、追加したBridging-Header.hファイルのパスを設定する。
まずは、ここまで設定したらプロジェクトをビルドしてエラーがでないことを確認します。エラーがあれば、ターゲットの"Build Settings"に設定した各種パスとリンカプションを見直してみてください。
swiftファイル内でARSDKが参照できることを確認する
swiftファイル内から、ARSDKが参照できることを確認してみましょう。
ARSDKのクラスやそのメソッドにアクセスするには、プロジェクトに追加したBridging-Header.hファイルで、次のヘッダファイルをインポートする必要があります。
- swiftファイルから参照したいクラスやメソッドが定義されたヘッダファイル
- 上述1のクラスから参照されるクラスやメソッドが定義されたヘッダファイル
まずは、こちらに記された"Start Discovery:"に相当する処理をswiftファイルに記載してみることにします。
空プロジェクトにデフォルトで追加されているViewController.swiftに次のメソッドを記述してみましょう。
private func startDiscovery() {
ARDiscovery.sharedInstance().start()
}
Bridging-Header.hファイルにARDiscoveryを利用するために必要なインポート行を記述していないので、当然このままではエラーが発生します。
そこで、次の記述をBridging-Header.hファイルに追記します。追記したらビルドしてみてください。
#import <libARDiscovery/ARDISCOVERY_BonjourDiscovery.h>
#import <libARDiscovery/ARDISCOVERY_Device.h>
#import <libARDiscovery/USBAccessoryManager.h>
ここまでのターゲットに対する設定が正しければ、ビルドが成功するはずです。
ここまでとこれから
これでARSDKのObjective-C向けライブラリがSwiftから利用できることがわかりましたので、こちらの内容を元にアプリケーションからドローンを探索して接続する処理を記述してみます。