狠狠撸

狠狠撸Share a Scribd company logo
Micchy
2022.01.13 VIC仮想創造機構LT
~制作過程で気づいてしまった
IKの残念な真実~
みっちー Micchy
@Dream_Drive
? 社会人ロボコニスト
? メイカー系イベントや各種ロボコンをうろうろ
? 2004 ロボットつくりはじめる
? 2014 VR内視鏡をつくった (Oculus DK2)
? 2019 瀬戸内ROS勉強会 発足
? 2020.10 VRChatをはじめる
? 2021.04 「だみとら」公開
自己紹介
現実(ロボット)とVRChatをつなぐ???
? ROS → アバター
:仮想トラッカー(VMT)を利用して、
自作ロボットからアバターを動かす
? アバター → ROS
:Stream Camera を OpenCVで画像認識
現実(IoT)とVRChatをつなぐ???
? ROS → World : OpenSound Control 、MIDI
? World → ROS : Use判定をトリガーにHTTP Rrequest (引数でメッセージ)
VRChatの情報を外に持ち出す
Shaderを使って出力
? 実際に作ったもの紹介
? VRC : 手と胴体に仕込んだカメラで接触判定、深度を画面上に表示
? Web Server : 情報をウィンドウキャプチャし、httpで垂れ流し
? ROS : WebSocketで受け取った情報をROS messageに変換
? もっと複雑な情報、座標や姿勢など
リアルタイムで大量のデータを送るならShaderが有利
(Dummy Tracker)
? Oculus Quest2の人でも、ソフトだけ(無料)で足が自由に動かせるアプリ
? VRChat内で、フルトラのフレンドと写真を撮るために作りました。
https://booth.pm/ja/items/2897804
トラッカー自作アプリに必要な知識
? 仮想トラッカー OpenVR → VMT使えばクリア
? ハードウェア → 頑張る
? トラッカーの動作原理 、IKについて
順運動学 FK(Forward Kinematics)とは
各ジョイントの角度(q1,q2,q3,q4)が、
分かっていて、制御点の位置(x,y,Θ)を
計算すること
三角関数がわかれば解ける。
KFの解は一意
図参考 : MATLAB および Simulink による逆運動学 (IK) アルゴリズムの設計
https://jp.mathworks.com/discovery/inverse-kinematics.html
逆運動学IK(Inverse Kinematics)とは
目標点(x,y,Θ)を指示して、
その間のjoint(q1,q2,q3,q4)の角度
を求めること
解が複数ある!
図参考 : MATLAB および Simulink による逆運動学 (IK) アルゴリズムの設計
https://jp.mathworks.com/discovery/inverse-kinematics.html
例題 (xy平面)
? 制御点 を目標点 に移動させた
時、Θ1とΘ2は何度になるか?
Θ1
Θ2
例題 (xy平面)
? 制御点 を目標点 に移動させた
時、Θ1とΘ2は何度になるか?
Θ1
Θ2
Θ2
Θ1
Θ1
Θ2
解1 解2
脚に置き換えると???
目標
制御点 を目標点 に移動させた時、
大腿と下腿の姿勢はどうなるか?
=
ちなみに、IKを解くということは、
トラッカーの位置から、アバターの姿勢を計算するということと同義
脚に置き換えると???
目標
目標
目標
制御点 を目標点 に移動させた時、
大腿と下腿の姿勢はどうなるか?
解1 解2
脚に置き換えると???
目標
目標
目標
制御点 を目標点 に移動させた時、
大腿と下腿の姿勢はどうなるか?
解1 解2
人間じゃない!!
解は複数あるけど、選んじゃいけない解がある。
逆運動学IK(Inverse Kinematics)とは
? IKの解き方は、いろいろな手法がある
? どの解を選ぶかはIK次第
? VRChatにはVRChatのIKがある。
? 見た目がヒューマノイドの形状であるように味付けされている(複雑な拘束条件が入っている)
? 正直、VRChatのIK、めっちゃ優秀なので欲しい!→よし、調べよう。
そういえば、???
? たまに肘がおかしいよね
? 伸び切らない?ピンと伸びてしまう
? User Real Heightを下げると、ちょうど良いという噂
? そういえば、VRChatのIK計算時の、リンク間距離ってどうなってる??
数値入れてこねこねしてみた。
? NORANEKOSEVEN
? 身長 1.40
? View point 1.281214
? 中心から手首までの長さ 0.52
? Micchy
? 身長 1.78
? Real view point 1.65
? 中心から手首までの長さ 0.75
? 身長より、 view point の方がしっ
くりくる数値 (偶然かもしれない)
? スケールは User Real Heightに線形
User Real
Height
腕の長さ
94 38
101 48
112 50
122 54
132 65
140 67
150 70
160 73
170 76
178 80
185 87
0
20
40
60
80
100
80 100 120 140 160 180 200
User Real Heightと腕が伸び切る
ときの長さ(スケール)の関係
分かったこと (あくまで個人的感想です)
? IKのリンクの長さのパラメータとUser Real Height
? アバターの身長は、ボーンやメッシュの位置ではなく、ビューポイントの位置(原点からの距離)で決まる
? ビューポイントから見た手の位置は必ず一致する(気持ち良い没入感)
? アバターのビューポイントと、 User Real Heightのパラメータで、カメラ間距離(ICD)が決まる
? IK計算時のリンクの長さのパラメータに User Real Heightから計算した標準モデルを使ってはないみたい。
? あくまで、IK計算時のモデルはアバターのモデルを使っている様子
? User Real Heightはあくまで、カメラ間距離(ICD)にのみ使われている感じ。
分かったこと (あくまで個人的感想です)
? User Real Heightを下げると、ちょうど良いという噂
? User Real Heightの数値を変えると、カメラ間距離(ICD)が変わる
? カメラ間距離(ICD)が変わると、スケールが変わる
? スケールが変わっても、HMDから制御点=コントローラー(手)の位置関係は変わらない
? 結果として、スケールは変わっている分、腕の長さ(リンクの長さ)が変わり、結果、 User Real Height
の数値をいじると、腕が伸び切ったり、伸び切らなかったりの現象が起こる
? リンクの長さはアバター側のボーンのパラメータで決まるため、着心地の良いアバター?着心地の悪いア
バターが存在するのはそのせい
分かったこと (あくまで個人的感想です)
? 原点やビューポイントが適切に設定されたアバターの腕が、実際のUser Real Heightで伸び切らな
い原因は???
アバターから想定されるIKモデルのリンクの長さより、あなたの手足が短いから!
残念!
? スタイルの良いアバターを着こなすって大変 (結論)
ファイバリオン開発中… (リアル×VR連動!!)
2mの搭乗可能な変形ロボットを
VRと連動させて動かしたい!
ご清聴ありがとうございました。
#vket2021 【鉄鴉の戦場バトルフィールドオブマキナ/鉄火武闘マキナアリーナ】の1番ハンガーにて、出展しました。
2Fには写真展示がありました。
再公開された際は、是非、お越しください。

More Related Content

だみとらの作り方 ~制作過程で気づいてしまったVRChat IKの残念な真実~