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

Fecdd3417cd7375cc0bd0352d72db27e?s=128

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 で

    つないでみる試行錯誤 ワンフットシーバス 田中正吾
  2. 私の話はスライドを後ほど共有します。 話す内容に注力いただいて大丈夫です!

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

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

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

  7. 以前も有線接続した Raspberry Pi + Node-RED が HoloLens 2 と Keigan

    Motor を中継するのは作りました このときは MQTT の接続まわりに力を入れた HoloLens 2 Keigan Motor Raspberry Pi Node-RED シリアル 接続 MQTT 有線 無線
  8. こんなコンテンツ https://twitter.com/1ft_seabass/status/1356407989922529280

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

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

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

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

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

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

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

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

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

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

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

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

  21. こんなコード

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

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

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

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

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

  27. enable のコード

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

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

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

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

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

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

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

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

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

  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

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

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

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

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

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

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

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

  45. まとめ ➔ Bluetooth が疎通するのは毎度苦労するけどつながったと きはたのしい ➔ Bluetooth で HoloLens 2

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