>> Blog Top

Project North Starを3DoFにする

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軸モーションセンサー

MPU6050

めっちゃ安価です。

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にテープで貼りました。醜いですが。

③arudino側のコード

生データ読むだけでなんとかなると思ってたのですが、角加速度と加速度から傾きを導くには積分したりするようで、ちょっとわけわかんないので先人の知恵を借ります。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

こちらのサイトが非常に参考になりました。
【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見てると国内で盛んってところもおもろしいです。


>> Blog Top