ハリトラっぽいのをつくってみた件
概要
こんにちは、たひです。
以前(2021/5)に制作した自作トラッカー(ZAKOTrackerV1.0)についてまとめた記事です。
また、Zennでの初投稿記事でもあります。
きっかけ
HaritoraというIMUをつかったモーショントラッカーの
開発記事を見かけ、記事内の写真や開発者のツイートなどを見てて
もしかして自作できるんじゃね
っていう軽いノリで制作をはじめました。
開発開始
とりあえず何を乗っける必要があるかというとこから
- メインマイコン(ESP32)
ご本家がM5StickCを使ってて中身がESP32らしいので、手元に転がってた開発ボードを転用 - IMU(GY-BNO055)
こちらもご本家と同じセンサ。過去に自作ドローン製作時に使用したことがあり扱いやすかった。
当時は安価でフィルタを噛ませなくても安易に使えるジャイロセンサとして便利だった。 - I2C-MUX(TCA9548A)
またまたこちらもご本家様と同じもの。同じセンサを複数使うためにI2Cのアドレスの振り分けてくれるやつ。
はい。ただのパクリですねw
乗っけるものが決まったので回路設計していきます。
回路設計
ちなみに、今回のプロジェクトで初めて基板の設計をやりました。
基板設計の方向性として
- ESP32と各センサにつなげるポートを備えたメインボードと
センサとコネクタだけを備えたサブボードの2つの基板を設計する。 - 各センサまで配線が長いので念の為バスリピータを配置(今回はパターンのみ)
- ノイズ対策としてとりあえずLANケーブルを使う
それっぽいことを言ってるけど、バスリピータ以外ご本家様と構成に大差はありません。
で、完成した基板がこちら。
左側がメインボードで右側がサブボード。
左側のでかいシルクは切り取り線みたいな感じで切り離す用です。
実際に発注して届いた基板がこちら。今回はJLCPCBに発注しました。
記事のトップ画を見てもらうとわかるのですが、実はTCA9548のピンソケットの幅を間違っていて下駄を履かせていますw
外装設計
基板が完成したので外装の設計をします。
設計には普段から使い慣れているAutodeskのInventorを使用しました。
前述のとおり、ピッチ幅をミスって下駄を履かせているので画僧のように蓋を締めることはできてません。
アプリ開発
ハードウェアが完成したので、SteamVR上で利用できるようにアプリを作っていきます。
マイコン側のプログラム
まず、ESPからPCに値を送信できるようにします。
動作は保証しませんが、リポジトリのリンクを貼っておきます。
動作としては、IMUの値をクォータニオンで取得して、float型の配列に入れてBT(Bluetooth)を使ってシリアル通信しています。
マネージャーアプリ
PC側では、BTで受け取った値を元に順運動学とHMDの情報から人間の下半身の姿勢を推定して、OSCを使ってVNT(VirtualMotionTracker)に送信してSteamVR上で動かせるようにしています。
今回は三次元的な計算が必要なことからUnityを使ってアプリを作りました。
動作確認
実際に動作しているところです。
左足が痙攣しているのははんだ不良か通信不良です。(原因わかってない)
まとめ
かなり荒削りではありますが、ハリトラっぽいなにかは作れたかと思います。
特にハード面ではご本家様と近いものが作れたと思っていますが、ソフト面ではそうともいかず、私が作ったものだと現実との足の位置がかなり違ったり、横に寝っ転がってしまうと下半身が吹き飛んだりと、ご本家様には到底届かないものとなりました。
自作トラッカーV2.0として、各センサすべて無線化してものを製作中です。こちらについてはまた後日記事を書こうと思います。
Discussion