Publish 2018.12.01
前回、前々回に引き続いてProject North Starです。
先日exiiiが簡易版Project North Star Ver.2を公開しました。
簡易版 Project North Star ver.2の作り方 – exiii | Wearable Haptic Technology for XR
高解像度のディスプレイに対応してます。
早速ディスプレイを注文したのですが、しばらく届きそうにないので以前からやろうと思ってた3DoF化にチャレンジしてみました。
DoF(Degree of Freedom)についてはこちらを。
North Starは手の動きしか取れないので結構狭く感じてたのですが、これでだいぶ世界が広がって感じます。
手順としては、arduinoからセンサーの値をUnityにシリアルで送信してそれを反映させるだけですのでシンプルです。
以下手順です。
・6軸モーションセンサー
めっちゃ安価です。
GY-521(mpu-6050)を使ってみる:はたして中華製加速度・ジャイロセンサモジュールの精度は良いのか - 人工知能・ロボティクス・and so on 工学系ブログこちらのサイトによるとコンデンサ部分の誤差があるとのことだったので記事に倣ってコンデンサ付け足してます。
・Arduino
Arduino Nanoを使用します。
後述しましすが、利用したライブラリがUNO(ATmega328)は対応していないっぽい?のでコンパイルできませんでした。ATMega328Pを使っているNanoを使用しました。Pro miniやMEGAでもいけるかと。
・普通のブレッドボード
MPU6050 - Arduino Nano
VCC - 5V
GND - GND
SCL - A5
SDA - A4
INT - D2
こんな感じで。
んでこれをひっくり返した状態でLeapMotionにテープで貼りました。醜いですが。
生データ読むだけでなんとかなると思ってたのですが、角加速度と加速度から傾きを導くには積分したりするようで、ちょっとわけわかんないので先人の知恵を借ります。Jeff Rowberg氏の偉大なライブラリを使います。
ZipでDownloadしてArduinoIDEに追加します。
GitHub -
jrowberg/i2cdevlib: I2C device library collection for AVR/Arduino or other
C++-based MCUs
このライブラリはいろんなセンサーの詰め合わせになっているので、「Arduino」フォルダ内にある、「i2cdev」と「MPU6050」だけライブラリのフォルダに追加します。
今回使用したコードはこちらのサイトのコードをちょっと編集したものです。やりたいことのほぼ全部載ってますがUnityとの通信に有料アセット使ってるみたいなのでArduinoのコードだけ拝借しました。
こちらにあげてます。
Releases ·
RyoKosaka/MPU6050_Unity
UnityパッケージとArduinoのコードをダウンロードしてください。
こちらのサイトが非常に参考になりました。
【Unity/Arduino】UnityとArduinoの加速度センサを連携してみた
まず、Edit - Project Setting - Player を開きます。
ConfigurationのApi Compatibility Levelを「.NET 2.0」に変更します。
これやっとかないとシリアル通信ができません。
パッケージファイルをProject North Starのファイルにぶち込みます。
Prefabフォルダ内に、「MPU」「SerialHandler」があるのでシーンに突っ込みます。
SerialHandlerのInspectorでポートとボーレートを指定します。
MPUのInspectorでSerialHandlerにはSerialHandlerを、NorthStarにはAR headsets Halo small BOE unity optimized Rev 2 internal rigelを。
あとはUnityでPlayすると動きます。
ジャイロ載せたらめっちゃ広く感じる。#ProjectNorthStar pic.twitter.com/AD99kQpBXZ
— Ryo Kosaka (@tnctrekit) November 29, 2018
だいぶカクついてますがPCスペックのせいだと思われます。
反応しない場合や挙動がおかしいときはArduinoをリセットすると治るかもです。
とりあえずこれで3DoF化できましたが、ライブラリの仕様なのか、安定するまでゆっくり回転してしまいますし、なぜか回転が逆になることもありましたし、改善点は多いです。誰か修正してくれると嬉しいです。
高解像度のディスプレイが届いたら綺麗に収まるような3Dデータ作って公開する予定です。
ところで、exiiiだけでなく、1-10も3Dモデル及びドキュメントを公開してます。
GitHub -
1-10/ProjectNorthStar_1-10_custom
オープンソースのハードウェアでここまで盛り上がってるプロジェクト他に無いんじゃないんでしょうか。Twitter見てると国内で盛んってところもおもろしいです。