概要
そのまんまなんですが、Apple WatchでDroneを制御するということをやってみました。
開発環境
使ったデバイス
- Parrot Rolling Spider
- iPhone 6
- Apple Watch
SDKなど
- ARSDK3 version3_7_5 for iOS (※)
- watchOS 2
- iOS9
※ 現在最新のSDKは3.8です。 (2016/01/22 時点)
仕組み
現状Apple WatchとDroneを直接接続することはできないので、各々iPhoneを経由して通信します。
Apple Watch (watchOS 2)
⇅ Watch Connectivity
iPhone (CoreBluetooth / ARSDK3)
⇅ BLE
Drone (Rolling Spider)
ざっくりした流れは下記です。
- iPhoneとRolling Spiderを接続 (ARSDK3を利用)
- Apple Watchの加速度センサ情報を取得、Watch Connectivityを利用してデータをiPhoneに送信
- Apple Watchの角度に応じて、Rolling Spiderにコマンド送信
1. iPhoneとRolling Spiderを接続 (ARSDK3を利用)
公式Documentationに従い、iOS用のSDKをダウンロードして組み込み。(※)
接続部分は、下記Sampleに含まれているRSPilotingNewAPI を参考にしました。
※ SDKアップデートに伴い、Documentationの説明がver 3.8用のものになっています。
3.7.5と3.8で組み込み時の手順が若干異なるのでご注意ください。
2. Apple Watchの加速度センサ情報を取得、Watch Connectivityを利用してデータをiPhoneに送信
データは逐一送るのではなく、コマンド単位で送信するようにしました。(データ送信がボトルネックになるのを避けるため)
Watch Connectivityについては下記を参考にさせていただきました。
3. Apple Watchの角度に応じてRolling Spiderにコマンド送信
今回Apple Watchを装着した腕を前に突き出した状態で、Rolling Spiderをコントロールするようにしています。
そのため、Apple Watchの座標系とRolling Spiderの座標系がz軸を中心に90度ずれている形になります。
- ホバリング中
- Apple WatchのPitch ⇒ Rolling SpiderのYaw
- Apple WatchのRoll ⇒ Rolling SpiderのGaz
- 移動中
- Apple WatchのPitch ⇒ Rolling SpiderのRoll
- Apple WatchのRoll ⇒ Rolling SpiderのPitch
また、その場にホバリングしてYaw/Gaz(高度)を制御するモードと、
Roll/Pitchを制御して移動するモードの2つのモードに分けました。
デモ
Apple Watch x Drone from syug on Vimeo.
デモ時の注意点
Apple Watchの自動スリープを解除しておく
Apple Watchは手首の動きに応じて画面をスリープしてくれて便利なのですが、制御時はスリープされると困るので解除しておきます。
- 設定 > 一般 > 画面をスリープ解除
- 「手首を上げてスリープ解除」をオフに
- タップ時「70秒間スリープ解除」に
感想
操作感
- 片手で操作できるというのは楽かも
- ただコントロールが難しいのでもろもろ要改良
- (当たり前ですが)操作者がよろけたりすると変な方向に飛んでっちゃうので、不慮の動きへの対処が必要
- Watch + 音声入力とかもやってみたい
開発面
- ARSDKはらくちん
- Droneのスキャンや接続周りなど、面倒そうなところはカバーしてくれてる
- DocumentとSample通りに組めばOK
Rolling Spiderすごい
- ほっといてもホバリングしてくれるので、Drone初心者にも扱いやすい
コード
接続周りとか、かなりざっくりした作りなのでご注意ください m(_ _)m