ARDrone
IoT
iOS9
WatchOS2
ARSDK

Apple WatchでDroneを制御してみた

More than 3 years have passed since last update.


概要

そのまんまなんですが、Apple WatchでDroneを制御するということをやってみました。


開発環境


使ったデバイス


SDKなど

※ 現在最新のSDKは3.8です。 (2016/01/22 時点)


仕組み

現状Apple WatchとDroneを直接接続することはできないので、各々iPhoneを経由して通信します。

Apple Watch (watchOS 2)

 ⇅ Watch Connectivity

iPhone (CoreBluetooth / ARSDK3)

 ⇅ BLE

Drone (Rolling Spider)

ざっくりした流れは下記です。


  1. iPhoneとRolling Spiderを接続 (ARSDK3を利用)

  2. Apple Watchの加速度センサ情報を取得、Watch Connectivityを利用してデータをiPhoneに送信

  3. Apple Watchの角度に応じて、Rolling Spiderにコマンド送信


1. iPhoneとRolling Spiderを接続 (ARSDK3を利用)

公式Documentationに従い、iOS用のSDKをダウンロードして組み込み。(※)

接続部分は、下記Sampleに含まれているRSPilotingNewAPI を参考にしました。

Parrot-Developers/Samples

※ 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

Apple Watch x Drone from syug on Vimeo.


デモ時の注意点


Apple Watchの自動スリープを解除しておく

Apple Watchは手首の動きに応じて画面をスリープしてくれて便利なのですが、制御時はスリープされると困るので解除しておきます。


  • 設定 > 一般 > 画面をスリープ解除


    • 「手首を上げてスリープ解除」をオフに

    • タップ時「70秒間スリープ解除」に



IMG_7617.PNG IMG_7616.PNG


感想


操作感


  • 片手で操作できるというのは楽かも


    • ただコントロールが難しいのでもろもろ要改良



  • (当たり前ですが)操作者がよろけたりすると変な方向に飛んでっちゃうので、不慮の動きへの対処が必要

  • Watch + 音声入力とかもやってみたい


開発面


  • ARSDKはらくちん


    • Droneのスキャンや接続周りなど、面倒そうなところはカバーしてくれてる

    • DocumentとSample通りに組めばOK




Rolling Spiderすごい


  • ほっといてもホバリングしてくれるので、Drone初心者にも扱いやすい


コード

https://github.com/syug/control-drone-by-watch

接続周りとか、かなりざっくりした作りなのでご注意ください m(_ _)m


参考リンク