HybrIK流程
创始人
2024-02-08 16:05:10
0

定义

T={tk}k=1KT=\{t_k\}^K_{k=1}T={tk​}k=1K​:静止姿态下的关节点坐标。
R={Rpa(k),k}k=1KR=\{R_{pa(k), k}\}_{k=1}^KR={Rpa(k),k​}k=1K​:相对旋转。
Q={qk}k=1KQ=\{q_k\}^K_{k=1}Q={qk​}k=1K​:根据输入的相对旋转,FK计算出的关节点坐标。
KKK: 关节点数目。
pa(k)pa(k)pa(k):第k个节点的父节点。
Rpa(k),kR_{pa(k), k}Rpa(k),k​:第k个节点关于其父节点的相对旋转。
前向动力学:
qk=Rk(tk−tpa(k))+qpa(k)q_k = R_k(t_k - t_{pa(k)}) + q_{pa(k)} qk​=Rk​(tk​−tpa(k)​)+qpa(k)​
Rk=Rpa(k)Rpa(k),kR_k=R_{pa(k)}R_{pa(k),k} Rk​=Rpa(k)​Rpa(k),k​
Rk∈SO(3)R_k\in SO(3)Rk​∈SO(3):第k个节点关于标注静止姿态空间的全局旋转。

反向动力学:
IK是FK的逆过程,输入静止姿态TTT和目标姿态QQQ, 计算相对旋转矩阵RRR
R=IK(Q,T)R = IK(Q, T) R=IK(Q,T)
理想情况下,求得的旋转矩阵需要满足如下条件:
qk−qpa(k)=Rk(tk−tpa(k))∀1≤k≤Kq_k - q_{pa(k)} = R_k(t_k - t_{pa(k)}) \quad \forall 1 \leq k \leq K qk​−qpa(k)​=Rk​(tk​−tpa(k)​)∀1≤k≤K
FK问题是适定的,IK问题却是病态的,要么无解,要么可能存在许多解可以目前上述条件。

Naive HybrIK

类似FK过程,IK过程可以沿着运动学树迭代进行。
首先,我们要确定根节点的全局旋转R0R_0R0​,可以通过spine, left hip, right hip这三个点的位置和SVD分解求得闭式解。之后的每一步,以第k步为例,我们假设其父节点Rpa(k)R_{pa(k)}Rpa(k)​的旋转已知
Rpa(k)−1(qk−qpa(k))=Rpa(k),k)(tk−tpa(k))R^{-1}_{pa(k)}(q_k - q_{pa(k)}) = R_{pa(k),k)}(t_k - t_{pa(k)}) Rpa(k)−1​(qk​−qpa(k)​)=Rpa(k),k)​(tk​−tpa(k)​)

pk⃗=Rpa(k)−1(qk−qpa(k))tk⃗=tk−tpa(k)\begin{aligned} \vec{p_k} &= R^{-1}_{pa(k)}(q_k - q_{pa(k)}) \\ \vec{t_k} &= t_k - t_{pa(k)} \end{aligned} pk​​tk​​​=Rpa(k)−1​(qk​−qpa(k)​)=tk​−tpa(k)​​

可以通过下式计算相对旋转:
Rpa(k),k=D(pk⃗,tk⃗,ϕk)R_{pa(k), k} = D(\vec{p_k}, \vec{t_k}, \phi_k) Rpa(k),k​=D(pk​​,tk​​,ϕk​)
ϕk\phi_kϕk​是网络预测出的第k个节点的twist角。twist角的集合表示为Φ={ϕk}k=1K\Phi=\{\phi_k\}_{k=1}^KΦ={ϕk​}k=1K​,因为旋转矩阵是正交阵,因此Rpa(k)−1=Rpa(k)TR^{-1}_{pa(k)}=R^{T}_{pa(k)}Rpa(k)−1​=Rpa(k)T​,使得解算过程可微。
完整的算法流程如下:
输入:Q, T, Φ\PhiΦ
输出:R
第一步先确定根节点0的全局旋转,再沿着运动学树进行下述迭代处理
pk⃗←Rpa(k)−1(qk−qpa(k))tk⃗←tk−tpa(k)Rpa(k),ksw←Dsw(pk⃗,tk⃗)Rpa(k),ktw←Dtw(pk⃗,ϕk⃗)Rpa(k),k←Rpa(k),kswRpa(k),ktw\begin{aligned} \vec{p_k} &\leftarrow R^{-1}_{pa(k)}(q_k - q_{pa(k)}) \\ \vec{t_k} & \leftarrow t_k - t_{pa(k)} \\ R^{sw}_{pa(k), k} & \leftarrow D^{sw}(\vec{p_k}, \vec{t_k} ) \\ R^{tw}_{pa(k), k} & \leftarrow D^{tw}(\vec{p_k}, \vec{\phi_k} ) \\ R_{pa(k),k} & \leftarrow R^{sw}_{pa(k), k}R^{tw}_{pa(k), k} \end{aligned} pk​​tk​​Rpa(k),ksw​Rpa(k),ktw​Rpa(k),k​​←Rpa(k)−1​(qk​−qpa(k)​)←tk​−tpa(k)​←Dsw(pk​​,tk​​)←Dtw(pk​​,ϕk​​)←Rpa(k),ksw​Rpa(k),ktw​​

Rsw=Dsw(p⃗,t⃗)=I+sinα[n⃗]×+(1−cosα)[n⃗]×2R^{sw} = D^{sw}(\vec{p}, \vec{t}) = I + sin\alpha[\vec{n}]_{\times} + (1 - cos\alpha)[\vec{n}]_{\times}^2 Rsw=Dsw(p​,t)=I+sinα[n]×​+(1−cosα)[n]×2​

Rtw=Dtw(p⃗,ϕ)=I+sinϕ∣∣t⃗∣∣[n⃗]×+(1−cosϕ)∣∣t⃗∣∣2[n⃗]×2R^{tw} = D^{tw}(\vec{p}, \phi) = I + \frac{sin\phi}{||\vec{t}||}[\vec{n}]_{\times} + \frac{(1 - cos\phi)}{||\vec{t}||^2}[\vec{n}]_{\times}^2 Rtw=Dtw(p​,ϕ)=I+∣∣t∣∣sinϕ​[n]×​+∣∣t∣∣2(1−cosϕ)​[n]×2​
n⃗=t⃗×p⃗∣∣t⃗×p⃗∣∣\vec{n} = \frac{\vec{t}\times\vec{p}} {||\vec{t} \times \vec{p}||} n=∣∣t×p​∣∣t×p​​
[t⃗]×[\vec{t}]_{\times}[t]×​是t⃗\vec{t}t的对称矩阵。

Adaptive HybrIK

Naive HybrIK过程看着是有效的,它遵循了∣∣qk−qpa(k)∣∣=∣∣tk−tpa(k)∣∣||q_k - q_{pa(k)}||=||t_k - t_{pa(k)}||∣∣qk​−qpa(k)​∣∣=∣∣tk​−tpa(k)​∣∣这个假设。
但不幸的是,3D关键点估计方法的预测身体部件结果并不总是能和静止姿态模板一致。如果使用Naive HybrIK的方式,这个误差会沿着运动学树一直累计。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...