Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20220316_XRミーティング 20220316

20220316_XRミーティング 20220316

XRミーティング 20220316「HoloLens 2 と Keigan Motor を Bluetooth でつないでみる試行錯誤」の登壇資料です。

◆スライド内の素材は以下を使用させて頂いております。ありがとうございます!

・シルエットデザイン http://kage-design.com/
・human pictogram 2.0 http://pictogram2.com
・ICOOON MONO http://icooon-mono.com/
・Adobe Stock https://stock.adobe.com/jp

1ft-seabass
PRO

March 16, 2022
Tweet

More Decks by 1ft-seabass

Other Decks in Technology

Transcript

  1. 20220316_XRミーティング 20220316
    HoloLens 2 と Keigan Motor を Bluetooth で
    つないでみる試行錯誤
    ワンフットシーバス 田中正吾

    View Slide

  2. 私の話はスライドを後ほど共有します。
    話す内容に注力いただいて大丈夫です!

    View Slide

  3. 田中正吾(たなかせいご)
    屋号:ワンフットシーバス
    フリーランスエンジニア。WEBフロントエンド
    をベースにしながらも、情報とインターフェース
    が合わさるアプローチという視点で IoT や
    VR・MR といった技術も取り入れながら活動し
    ています。ウォンバットが好き。
    2022 年 2 月現在 Microsoft MVP ( Windows
    Development ) ・IBM Champion。

    View Slide

  4. こんなのも昨年開発で関わりました
    ドローン×ARグラスで災害現場の要救助者を発見する、レスキュードローンシステム実証実験
    https://prtimes.jp/main/html/rd/p/000000047.000013715.html

    View Slide

  5. Keigan Motor + HoloLens 2
    扱いやすくて強力なモーター動力を HooloLens 2 から直接 Bluetooth 制御したい
    Keigan Motor 引用 :
    https://keiganmotor.myshopify.com/collections/km-1u-%E5%8D%98%E4%BD%93/products/km-1u
    Bluetooth

    View Slide

  6. KeiganMotor KM-1U
    KeiganMotor KM-1Uはラピッドプロトタイピング(迅速な試作品製作)に
    特化したモーターモジュール®製品
    https://keigan-motor.com/km-1u/

    View Slide

  7. 以前も有線接続した Raspberry Pi + Node-RED が
    HoloLens 2 と Keigan Motor を中継するのは作りました
    このときは MQTT の接続まわりに力を入れた
    HoloLens 2 Keigan Motor
    Raspberry Pi
    Node-RED
    シリアル
    接続
    MQTT
    有線
    無線

    View Slide

  8. こんなコンテンツ
    https://twitter.com/1ft_seabass/status/1356407989922529280

    View Slide

  9. この仕組みでもいろいろ制御できるけど
    いかんせん関連する技術やデバイスが多い悩ましさがある
    HoloLens 2 Keigan Motor
    Raspberry Pi
    Node-RED
    シリアル
    接続
    MQTT
    有線
    無線

    View Slide

  10. もっと直接シンプルに動かせるパターンもあると
    より柔軟に対応るのでやってみたい
    大事なのはアプローチが多様でありたい
    Bluetooth

    View Slide

  11. Bluetooth での命令にも Keigan Motor は対応
    Bluetooth

    View Slide

  12. Chrome ブラウザから WebBluetooth でつなぐ
    https://twitter.com/1ft_seabass/status/1501365618397761537

    View Slide

  13. Bluetooth のドキュメントも豊富
    Service UUID も各 Characteristic も分かりやすい
    https://docs.keigan-motor.com/software_dev/blelow/kmblef/keigan-motor-service#KeiganMotor

    View Slide

  14. HoloLens でも以前 BLE でつなぐのは
    書いているので、うまく適用していく
    ザっと説明してみる
    https://www.1ft-seabass.jp/memo/2018/02/21/hololens-microbit-ble-send-receive/

    View Slide

  15. 事前にペアリングはしておく
    設定 > デバイス > Bluetooth
    きっとがんばれば自動ペアリングでも出来そうだけど、一旦は手動でやって検索対象になった

    View Slide

  16. KeiganMotor の Service UUID で検索して
    DeviceService 取得する
    DeviceWatcher で全検索かけるよりも直接的に取れる

    View Slide

  17. DeviceService から Characteristic 探す
    Status 確認したりして保持しておく

    View Slide

  18. ということで、LEDが操作できました!
    まずは動画から

    View Slide

  19. リアルタイムデモもやってみます
    色のタイルをクリックすると連動して色が変わります

    View Slide

  20. LED 機能はデータも分かりやすく飛ばしやすかった
    https://docs.keigan-motor.com/software_dev/lowapis/led

    View Slide

  21. こんなコード

    View Slide

  22. なんとか、モーターも動かせました!
    まずは動画から

    View Slide

  23. 動きが分かりやすいように KeiganMotor に
    LEGO 矢印つけます

    View Slide

  24. リアルタイムデモもやってみます
    180,90,0 と角度の書かれたタイルをクリックすると回転します

    View Slide

  25. モーターは、3手順必要
    動作許可→回転速度指定→指定した角度に動かす
    1 2 1
    3

    View Slide

  26. 動作許可はLEDぽくてやりやすい
    バイト列を並べるだけ

    View Slide

  27. enable のコード

    View Slide

  28. speed はいろいろ難しい
    4ケタ使って radian / second の小数点入りデータをバイトでつくる

    View Slide

  29. 指定角度へ動かす moveTo も speed 同様
    バイトの扱いに注意が必要
    絶対位置 radian で 4 ケタつかう

    View Slide

  30. 計算大変なので一度うまくいったてる
    Node-RED のバイト列を移植しました
    固定値だけど動くのが大事。近いうちに動的にバイト列作りたい。

    View Slide

  31. こんな値です
    ← enable
    ← speed
    ← moveTo

    View Slide

  32. 試行錯誤したところとか余談とか
    時間のゆるすかぎり

    View Slide

  33. デバイス情報取得時に IsEnable が False で
    つながらないかと思ってめっちゃ調べた
    False は気にしなくてよかった。勇気をもってつなげばよかった。
    micro:bit の時も同じ状況で心配しすぎだった。(所要 12 時間消費)

    View Slide

  34. 勇気をもってつないだ様子
    つまりは以前 micro:bit でつないだコードでほぼほぼイケた

    View Slide

  35. 無事つながったのが、今日の朝。
    ほんとつながって良かった
    一度つながれば、あとは順調で助かった。できませんでした LT にならなくてホッとした。

    View Slide

  36. WINDOWS_UWP 内がコードヒントが出て
    めちゃめちゃ書きやすくなった。知見感謝。
    Unity でプラットフォーム依存コンパイル内がグレーアウトされるときの対処法
    https://zenn.dev/fumiyahr/articles/3fa7013e43b5b5

    View Slide

  37. データをバイト列で書き込む知見は
    こちらがめちゃくちゃ助かったので感謝
    UWP(C#)でSwitchBot(BLEデバイス)を操作する
    https://qiita.com/natsu_san/items/da9c16809508fd30f4ab#%E3%82%B3%E3%83%9E%E3%83%B3%
    E3%83%89%E3%82%92%E9%80%81%E3%82%8B

    View Slide

  38. Unity で 2 分弱+Visual Studio で 1 分で
    あれこれで試行錯誤の1単位が10~15分はかかる
    デバイス操作関連は実機で見ないことには分からないことも多く色々試行錯誤できた。つらいたのしい。

    View Slide

  39. 今回 Unity で HoloLens2 OpenXR プロジェクトで
    Bluetooth やりましたが、問題なし!
    https://twitter.com/1ft_seabass/status/1503532564300308480

    View Slide

  40. バイト列の操作は苦労しそうなので
    良きやり方を模索していきたい
    BitConverterなど使うと良さそう?
    LEDのコードでバイト列を動的に入れるのも書けたのでなんとかなりそう?

    View Slide

  41. 角度指定を今回は泣く泣く固定値にしたけど
    動的にデータが作れるようにがんばりたい

    View Slide

  42. 事前に別手法で Bluetooth つながっていると
    安心感あった。諦めにくくなる。
    Android BLE Scanner アプリですぐ見れたり、WebBluetoothが素直に動いたので勇気を持って進めた

    View Slide

  43. KeiganMotor KM-1U 入手性
    開発元の Keigan さん販売サイトに在庫アリ。i-maker.jp にもあった。
    https://keiganmotor.myshopify.com/collections/km-1u-%E5%8D%98%E4%BD%93/products/km-1u

    View Slide

  44. KeiganMotor KM-1S というのもある
    https://keiganmotor.myshopify.com/collections/km-1s

    View Slide

  45. まとめ
    ➔ Bluetooth が疎通するのは毎度苦労するけどつながったと
    きはたのしい
    ➔ Bluetooth で HoloLens 2 と KeiganMotor がつながると
    シンプルな構成で得意分野ありそう
    ➔ C# のデータ送信はバイト列を扱うので慣れが必要そうだ
    けど良いやり方を探していきたい
    ➔ Bluetooth をつなげる知見は 1 の時期や別デバイスの知
    見も活かすことができる

    View Slide