Haritora - ハードウェア設計のポイント解説 -
概要
izmさんから頂いたHaritoraのプロトタイプに対し、メカ・回路視点からブラッシュアップを行ったさいの、検討内容まとめ記事です。
Haritoraとは?
装着型の下半身モーションキャプチャーデバイス。
trackerたくさん付けるの高いやん?ってトコからスタートしてたはず。
初めまして。
— Haritora (@HaritoraVR) 2020年5月3日
Haritoraという下半身トラッキングシステムを作っています。
ベースステーションが結構高いので、フルトラを民主化出来たら嬉しいです('-'*)#vrchat pic.twitter.com/nQstCKjmy7
何故作ったの?
1つ目は、最近Kicadで遊びはじめたので、じぶん以外の人が使うデバイス(回路)を作ってみたかった。
2つ目は、izmさんと得意領域が分かれており、かつお互いの領域について知見があるので、やりとりがスムーズ!!スーパーエンジニア izmさんはすごい!
構成要素は?
腰に取り付けるユニットを親デバイス、太ももやすねに取り付けるユニットを子デバイスと呼んでいます。
親と子は、LANケーブルで接続され、子機はディジーチェーン接続が可能です。
完成品
生基板
先にまとめ
基板CADの乗り越え方
今年基板CADを覚えたばっかりで、実際のプロダクトとして基板を作ったのは初めてでした。
回路設計は、ロボコン現役時「さっぱり分からん…」となり、どうしても苦手意識がありました。
ユニバーサル基板でいろいろ作ることはあっても、基板化までたどり着けずだったんですが。
今回のりこえられたのは、しごとで出会った、回路を相談できる友人達と、教えて貰ったこの本のおかげでした。
booth.pm たとえば「KiCADのエラーと警告ってどこまで対処するべき?全部?」「回路レビューを頼む(有償で)」が気軽に相談できるので、どうにか作れるようになってきました。得たもの
エレキ・メカをシームレスに変更出来るスキルは本当に楽ですね。
「あ、ちょっとここ変えたい」という要求の難易度と実装コストを、自分で把握できるため、どちら側で解決するかをすぐ考えられるのが嬉しいです。
他、仕事ではスクラム開発なのですが、チームでロボットを作りたいので、そこに貢献できるスキルを一個GET出来たのも、けっこう嬉しいポイントでした。
ここからが、本題です。
プロジェクトの前提条件
使用方法
- ユーザー自身に装着して貰うデバイス
- ユーザー自身がLANケーブルの抜き差しや、接続を行う(故にLANケーブルの接続ミスは減らしたい)
- 親機はベルトで取り付け。子機はベルト or リングフィットの脚に付けるやつに挿す。
- 電源は、別途ユーザーにモバブを付けてもらう
販売
- 販売方法の想定は2種類
- 生基板のみ販売 (ユーザー側で、ケースの製造や、電子部品の購入・製造 )
- 完成品の販売
- 初期の製造数は恐らく10~20セット程度。
プロジェクトのゴール
- 初期ロットをizm or リュートが出荷が出来るようになること
プロジェクトの優先度
- 開発速度(出荷出来るレベルまでまずは持って行く)
- 安全性 (個人開発の為、使用時の怪我などは自己責任とさせて頂きますが、それでも安全は出来るだけ担保したかった)
- コスト (trackerより高いと作る意味ない)
- 耐久性
- 製造汎用性(ユーザー側で製造する際のばらつき対応)
- 量産性 (組み立て性やばらつき対応)
要求・要望
- ユーザビリティ
- M5stickCの電源ケーブルを挿せるように
- M5stickCの電源ボタン(2カ所)のうち、いずれか1ヵ所を押せるようにする
- LANケーブルの抜き差しは、ケースを分解せずに出来るようにすると嬉しい
- 子機は上下が分かるように
- 子機は、スイッチのケースに入れるケース形状と、脚に巻けるケース形状の2種類に対応して欲しい
- 拡張性
- 下半身のトラッキングが目的だが、将来的に拡張性(ex:上半身と接続できるポート)があると嬉しい
- ソフトウェア的制約
- IMUの取り付け方向は、親子で指定の向きとする
- RJ45の接続口は、右足子機・左足子機で、別にしたい
設計検討事項
メカ側
- 安全面
- 装着時の怪我を防止する為、RJ45コネクタなどのエッジ面には触れない形状である事(基本的にケースで全て覆う)
- 転倒時に人体の側で無い方が自壊する・屈曲するように構造で制御(特に親機)
- 破損した場合、破損した部品が鋭角な壊れ方になりづらい材料で製造する
- コスト
- 耐久性
- 親子機が接続された状態で、いずれかの機器だけ持った状態で搬送される、ケーブルをどこかに引っ掛けるなど、LANケーブルが引っ張られる可能性が高いと判断
- コネクタ周りに負荷が集中する事故が想定される為、コネクタの根元で基板やケースとの結合を想定
- 組み立て性
- 親機はねじ止めしやすいよう、位置決め穴を2カ所設定。子機は組み立て難易度が低いと判断し、位置決め穴は無し。
- ネジはM2.5で統一(M5stickC 固定ネジは制御出来ないので例外)
- 部品選定
- 基板の着脱が多そうだったので、タップタイプねじ(Pタイプ)を使用(量産時は変更予定)。
回路側
- 前提条件
- izmさんの個人プロジェクトから始まっているので、電子部品の構成は確定済。
- 耐久性
- IMUなどの脱落防止に、着脱防止用のJQコネクタを検討。世界的な入手性が不明だったため、ケース側でIMUを押さえる方法に変更。
- 仕様準拠
- RJ45をI2Cで使用する際の仕様に準拠
- I2C バス仕様およびユーザーマニュアル
- SCLとGND(VSS)、SDAとVCCをペアにする(60P)
- RJ45をI2Cで使用する際の仕様に準拠
- テスト性
- M5StickCの使用していないピンと、I2Cのテスト用コネクタを別途実装
- ノイズ対策
- プルアップ抵抗を、各I2Cラインに接続出来るように追加(今のところは無しでも動く)
- I2C マルチプレクサのリセットピンとM5StickCを接続(起動時・通信トラブル時等にリセットをかけられるように)
- 汎用性
- RJ45をAliexpressで買うと、基板と接続する端子の上下が変わる事があったので、両方挿せるように対応
実装時の工夫した点
子機着脱用爪
台形形状の構造とし、押し込むと、ニュっと入っていく圧力感と脱落防止を実現
LANケーブル着脱穴
組み立て性
親機のフタを外せば、m5STICKCを取り外せるように実装しています。
テスト
親機を装着した状態で、お腹から転んでみる
- ゆっくり/ちょっと激しく転倒を、それぞれ5回ずつ実施。僕のお腹限定ですが、ケースに破損は見られませんでした。でも、お腹痛いのには変わらないので、何度もはやりたくないですね。みなさんも気を付けて使って頂けると幸いです。
フタの脱落テスト
- ベルトを通す部分辺りを手で持って、シェイクする感じで100回ほど激しく振ってみましたが、特に外れませんでした。
まとめ(悩んだ点・感想など)
回路
- 低速の信号なので、そこまでノイズに配慮しなくても良いだろう反面、I2Cの一般的な使用方法と異なる為、どこまで気に掛ければ良いかが分からない。
- Aliexpressの基板は、回路図が公開されていないので、ICのリファレンスを見ながら、きっとこの部品はこれ目的だろうという推測しか出来ず困った。
- 子機はもう一回り小さく出来そうだなと思っているので、もちょっと別バージョン作ってみたい
ケース
- 誰でも3Dプリントできる程度のパラメータで設計する(低価格3Dプリンタでも出せる収縮設計)。収縮比とかある程度目算持ってやってるけど、データ公開時は出力方向とか指定がいりそう。
- 分解し易いけど、外れにくいケースにする点。上記の収縮の事を加味する必要があるので、実は結構難しかったりします。
感想
今回、ノリノリで設計して楽しくやってたんですが、あらかた作った後、ControlVR※というKickStarter案件を思い出しました。(※ 2014年に、上半身のモーキャプデバイスとして、5300万円を調達したデバイス)
6万円ほどバックしたんですがまだ届かないので、Haritoraが完成したら、バッカー限定のスレッドに「下半身は出来たけど、そっちはどう?」って書き込みたいなぁ。
https://www.kickstarter.com/projects/controlvr/control-vr-motion-capture-for-vr-animation-and-mor?lang=jawww.kickstarter.com
さいごに
Haritoraが動いてるところ、早くみたいなぁ ;)