【Androidでドローン(マルチコプター)を飛ばそう】 ドローンを操作するためのクラス

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

前回の【Androidでドローン(マルチコプター)を飛ばそう】 周囲のドローンを表示するではAndroid端末周辺に存在するドローンをリスト表示しました。
今回は取得したARDiscoveryDeviceServiceをもとにドローンを操作するための準備を行います。
ARDiscoveryDeviceServiceのインスタンスをもとにたくさんのクラスをインスタンス化するので混乱しないようにしましょう。

1-Drone操作の実装に使うクラス

実装に使うクラスは3つです、各クラスのインスタンスは次のクラスのインスタンスを作成・初期化するために使用します。

ARDiscoveryDeviceService ARDiscoveryServiceの探査機能から取得できるドローンの情報が詰まったクラスです。
ARDiscoveryService#getProductIDは製品を識別するためのIDを返却します。
このIDをARDiscoveryService.getProductFromProductIDに渡すことで、製品の列挙型ARDISCOVERY_PRODUCT_ENUMに変換することができます。
この列挙型をARDiscoveryService#getProductFamilyに渡すことで、製品種別の列挙型ARDISCOVERY_PRODUCT_FAMILY_ENUMに変換することができます。
ARDiscoveryDeviceService#getDeviceメソッドはObjectを返却しますが、そのインスタンスはドローンにWiFi,BLEで接続するためのクラスである、
ARDiscoveryDeviceBLEServiceまたはARDiscoveryDeviceNetServiceのインスタンスを取得できます。
今回はBLE接続を行うのでARDiscoveryDeviceBLEServiceにキャストして使用します。
このインスタンスを使うことでARDiscoveryDeviceを初期化することができます。
ARDiscoveryDevice ARDiscoveryDeviceはドローンとのWi-FiまたはBLE経由の接続を管理するクラスです。
Wi-Fi経由の場合はARDiscoveryDevice#initWifiを使い、BLE経由の場合はARDiscoveryDevice#initBLEを使います。
今回はBLE経由なのでARDiscoveryDevice#initBLEを使います。
このメソッドはARDISCOVERY_PRODUCT_ENUM,Context,ARDiscoveryDeviceBLEServiceを引数にとります。
このクラスのインスタンスからARDeviceControllerを作ることができます。
ARDeviceController ARDeviceControllerはドローンを制御するクラスです。
接続や切断、飛行や撮影などはこのクラスを経由して制御していきます。
今後このクラスを頻繁に使うので後ほど詳しく説明します。

 

2-ARDeviceControllerについて

ARDeviceControllerの主要メソッドを説明します。

メソッド名 説明
start ドローンへの接続を行う。
コールバックは後述のaddListenerで追加したARDeviceControllerListener経由で受け取ります。
stop ドローンの切断を行う。
getFeatureMiniDrone MiniDrone専用の命令を出すためのクラスARFeatureMiniDroneを返却する。
離陸や着陸、飛行の命令を出す。
addListener ドローンからの様々なコールバックを受け取るため、ARDeviceControllerListenerを設定します。
ARDeviceControllerListenerの詳細は後述します。

 

3-ARDeviceControllerListenerについて

ドローンからの様々なコールバックを受け取るためのARDeviceControllerListenerの主要メソッドを説明します。

メソッド名 引数 説明
onStateChanged
  • ARDeviceController deviceController:
  • ARCONTROLLER_DEVICE_STATE_ENUM newState:
  • ARCONTROLLER_ERROR_ENUM error:
ドローンの状態が変化したときに呼ばれるコールバックメソッド
第二引数のARCONTROLLER_DEVICE_STATE_ENUMが実際のドローンの状態を表す列挙型です。
  • ARCONTROLLER_DEVICE_STATE_STOPPED:操作停止状態(code値:0)
  • ARCONTROLLER_DEVICE_STATE_STARTING:操作開始状態(code値:1)
  • ARCONTROLLER_DEVICE_STATE_RUNNING:操作状態(code値:2)
  • ARCONTROLLER_DEVICE_STATE_PAUSED:操作中断状態(code値:3)
  • ARCONTROLLER_DEVICE_STATE_STOPPING:操作終了状態(code値:4)
onExtensionStateChanged
  • ARDeviceController deviceController:
  • ARCONTROLLER_DEVICE_STATE_ENUM newState:
  • ARDISCOVERY_PRODUCT_ENUM product:
  • String name:
  • ARCONTROLLER_ERROR_ENUM error:
拡張状態が変更されたときに呼ばれるコールバックメソッド
onCommandReceived
  • ARDeviceController deviceController:
  • ARCONTROLLER_DICTIONARY_KEY_ENUM commandKey:
  • ARControllerDictionary elementDictionary:
ドローンからコマンド来たときに呼ばれるコールバックメソッド
ドローンから送られてくるコマンドはドローンの種類によって異なるため、たくさんのコマンドが存在します。
  • ARCONTROLLER_DICTIONARY_KEY_COMMON_COMMONSTATE_BATTERYSTATECHANGED:バッテリー状態が更新されたときのコマンド
  • ARCONTROLLER_DICTIONARY_KEY_MINIDRONE_PILOTINGSTATE_FLYINGSTATECHANGED:飛行状態が更新されたときのコマンド
  • ARCONTROLLER_DICTIONARY_KEY_MINIDRONE_MEDIARECORDEVENT_PICTUREEVENTCHANGED:ミニドローンから発行された写真関係のコマンド
  • ARCONTROLLER_DICTIONARY_KEY_COMMON_RUNSTATE_RUNIDCHANGED:飛行IDが変化したときのコマンド
また、各コマンドと一緒にコマンドに関連するデータを保持したARControllerDictionaryが引数としてコールバックされてきます。
コマンドに対応するキーを使い取り出して使用します。

 

4-まとめ

今回は実装に使うクラスを説明しました、次回は実際にこのクラスを使ってドローンに接続しましょう。

【国内正規品】Parrot Minidrones Airborne Night Blaze(レッド)ドローン規制対象外200g 未満・パリデザイン・LED 付き自動安定ホバーリングクアッドコプター ・30万画素カメラ・簡単にアクロバット・スマホ・タブレットで操作 PF723132

新品価格
¥17,150から
(2017/2/28 00:50時点)


Parrot Airborne Cargo MiniDrone - Mars (White) by Parrot

新品価格
¥22,692から
(2017/2/28 00:53時点)


Parrot MiniDrones Airborne Night Drone Maclane (Blue) [並行輸入品]

新品価格
¥12,000から
(2017/2/28 00:54時点)


【国内正規品】Parrot Bebop 2 ホワイト Full HD/30fps 魚眼レンズ カメラ・25分飛行時間・8GB 内部フラッシュメモリー・自動安定ホバーリング・最高水平速度:60KM/H・パリデザイン・GNSS (GPS GLONASS)付・クワッドコプター PF726073

新品価格
¥65,701から
(2017/2/28 00:57時点)


 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)