IsshikiHugh's picture
feat: CPU demo
5ac1897
from lib.body_models.skel.osim_rot import ConstantCurvatureJoint, CustomJoint, EllipsoidJoint, PinJoint, WalkerKnee
Q_COMPONENTS = [
{'qid': 0, 'name': 'pelvis', 'jid': 0},
{'qid': 1, 'name': 'pelvis', 'jid': 0},
{'qid': 2, 'name': 'pelvis', 'jid': 0},
{'qid': 3, 'name': 'femur-r', 'jid': 1},
{'qid': 4, 'name': 'femur-r', 'jid': 1},
{'qid': 5, 'name': 'femur-r', 'jid': 1},
{'qid': 6, 'name': 'tibia-r', 'jid': 2},
{'qid': 7, 'name': 'talus-r', 'jid': 3},
{'qid': 8, 'name': 'calcn-r', 'jid': 4},
{'qid': 9, 'name': 'toes-r', 'jid': 5},
{'qid': 10, 'name': 'femur-l', 'jid': 6},
{'qid': 11, 'name': 'femur-l', 'jid': 6},
{'qid': 12, 'name': 'femur-l', 'jid': 6},
{'qid': 13, 'name': 'tibia-l', 'jid': 7},
{'qid': 14, 'name': 'talus-l', 'jid': 8},
{'qid': 15, 'name': 'calcn-l', 'jid': 9},
{'qid': 16, 'name': 'toes-l', 'jid': 10},
{'qid': 17, 'name': 'lumbar', 'jid': 11},
{'qid': 18, 'name': 'lumbar', 'jid': 11},
{'qid': 19, 'name': 'lumbar', 'jid': 11},
{'qid': 20, 'name': 'thorax', 'jid': 12},
{'qid': 21, 'name': 'thorax', 'jid': 12},
{'qid': 22, 'name': 'thorax', 'jid': 12},
{'qid': 23, 'name': 'head', 'jid': 13},
{'qid': 24, 'name': 'head', 'jid': 13},
{'qid': 25, 'name': 'head', 'jid': 13},
{'qid': 26, 'name': 'scapula-r', 'jid': 14},
{'qid': 27, 'name': 'scapula-r', 'jid': 14},
{'qid': 28, 'name': 'scapula-r', 'jid': 14},
{'qid': 29, 'name': 'humerus-r', 'jid': 15},
{'qid': 30, 'name': 'humerus-r', 'jid': 15},
{'qid': 31, 'name': 'humerus-r', 'jid': 15},
{'qid': 32, 'name': 'ulna-r', 'jid': 16},
{'qid': 33, 'name': 'radius-r', 'jid': 17},
{'qid': 34, 'name': 'hand-r', 'jid': 18},
{'qid': 35, 'name': 'hand-r', 'jid': 18},
{'qid': 36, 'name': 'scapula-l', 'jid': 19},
{'qid': 37, 'name': 'scapula-l', 'jid': 19},
{'qid': 38, 'name': 'scapula-l', 'jid': 19},
{'qid': 39, 'name': 'humerus-l', 'jid': 20},
{'qid': 40, 'name': 'humerus-l', 'jid': 20},
{'qid': 41, 'name': 'humerus-l', 'jid': 20},
{'qid': 42, 'name': 'ulna-l', 'jid': 21},
{'qid': 43, 'name': 'radius-l', 'jid': 22},
{'qid': 44, 'name': 'hand-l', 'jid': 23},
{'qid': 45, 'name': 'hand-l', 'jid': 23},
]
QID2JID = {c['qid']: c['jid'] for c in Q_COMPONENTS}
JID2QIDS = {}
for c in Q_COMPONENTS:
jid = c['jid']
JID2QIDS[jid] = [] if jid not in JID2QIDS else JID2QIDS[jid]
JID2QIDS[jid].append(c['qid'])
JID2DOF = {jid: len(qids) for jid, qids in JID2QIDS.items()}
DoF1_JIDS = [2, 3, 4, 5, 7, 8, 9, 10, 16, 17, 21, 22] # (J1=12,)
DoF2_JIDS = [18, 23] # (J2=2,)
DoF3_JIDS = [0, 1, 6, 11, 12, 13, 14, 15, 19, 20] # (J3=10,)
DoF1_QIDS = [6, 7, 8, 9, 13, 14, 15, 16, 32, 33, 42, 43] # (Q1=12,)
DoF2_QIDS = [34, 35, 44, 45] # (Q2=4,)
DoF3_QIDS = [0, 1, 2, 3, 4, 5, 10, 11, 12, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 36, 37, 38, 39, 40, 41] # (Q3=30,)
# Copied from the `skel_model.py`.
# Change all axis (except those PinJoint) to positive and update the flip if needed.
JOINTS_DEF = [
CustomJoint(axis=[[0,0,1], [1,0,0], [0,1,0]], axis_flip=[1, 1, 1]), # 0 pelvis
CustomJoint(axis=[[0,0,1], [1,0,0], [0,1,0]], axis_flip=[1, 1, 1]), # 1 femur_r
WalkerKnee(), # 2 tibia_r
PinJoint(parent_frame_ori = [0.175895, -0.105208, 0.0186622]), # 3 talus_r Field taken from .osim Joint-> frames -> PhysicalOffsetFrame -> orientation
PinJoint(parent_frame_ori = [-1.76818999, 0.906223, 1.8196000]), # 4 calcn_r
PinJoint(parent_frame_ori = [-3.141589999, 0.6199010, 0]), # 5 toes_r
CustomJoint(axis=[[0,0,1], [1,0,0], [0,1,0]], axis_flip=[1, -1, -1]), # 6 femur_l
WalkerKnee(), # 7 tibia_l
PinJoint(parent_frame_ori = [0.175895, -0.105208, 0.0186622]), # 8 talus_l
PinJoint(parent_frame_ori = [1.768189999 ,-0.906223, 1.8196000]), # 9 calcn_l
PinJoint(parent_frame_ori = [-3.141589999, -0.6199010, 0]), # 10 toes_l
ConstantCurvatureJoint(axis=[[1,0,0], [0,0,1], [0,1,0]], axis_flip=[1, 1, 1]), # 11 lumbar
ConstantCurvatureJoint(axis=[[1,0,0], [0,0,1], [0,1,0]], axis_flip=[1, 1, 1]), # 12 thorax
ConstantCurvatureJoint(axis=[[1,0,0], [0,0,1], [0,1,0]], axis_flip=[1, 1, 1]), # 13 head
EllipsoidJoint(axis=[[0,1,0], [0,0,1], [1,0,0]], axis_flip=[1, -1, -1]), # 14 scapula_r
CustomJoint(axis=[[1,0,0], [0,1,0], [0,0,1]], axis_flip=[1, 1, 1]), # 15 humerus_r
CustomJoint(axis=[[0.0494, 0.0366, 0.99810825]], axis_flip=[[1]]), # 16 ulna_r
CustomJoint(axis=[[-0.01716099, 0.99266564, -0.11966796]], axis_flip=[[1]]), # 17 radius_r
CustomJoint(axis=[[1,0,0], [0,0,1]], axis_flip=[1, -1]), # 18 hand_r
EllipsoidJoint(axis=[[0,1,0], [0,0,1], [1,0,0]], axis_flip=[1, 1, 1]), # 19 scapula_l
CustomJoint(axis=[[1,0,0], [0,1,0], [0,0,1]], axis_flip=[1, 1, 1]), # 20 humerus_l
CustomJoint(axis=[[-0.0494, -0.0366, 0.99810825]], axis_flip=[[1]]), # 21 ulna_l
CustomJoint(axis=[[0.01716099, -0.99266564, -0.11966796]], axis_flip=[[1]]), # 22 radius_l
CustomJoint(axis=[[1,0,0], [0,0,1]], axis_flip=[-1, -1]), # 23 hand_l
]
N_JOINTS = len(JOINTS_DEF) # 24