BrainCo¶
BrainCo is a rigid articulated model of the BrainCo Revo 2 robotic hand using the official MuJoCo XML and STL assets.
Setup¶
BrainCo downloads automatically on first use. To prefetch and save the path:
# Download the BrainCo MuJoCo XML and STL assets.
body-models download brainco
When passed manually, model_path should contain left.xml, right.xml, and meshes/{left,right}/*.STL.
Usage¶
from body_models.brainco.numpy import BrainCoHand
# Load the right hand with scalar hinge coordinates for the active joints.
hand = BrainCoHand(side="right", rotation_type="hinge")
Notes¶
The model exposes the six active Revo 2 joints for each hand: thumb metacarpal, thumb proximal, and the proximal joints for index, middle, ring, and pinky. Passive distal joints are included in the skeleton and meshes.
API¶
body_models.robots.brainco.numpy.BrainCoHand
¶
BrainCoHand(model_path=None, *, side='right', rotation_type='rotmat')
Bases: BodyModel
BrainCo Revo 2 as rigid STL links attached to its MuJoCo hand skeleton.
Initialize the BrainCoHand model.
| PARAMETER | DESCRIPTION |
|---|---|
model_path
|
Path to model assets, or the default assets when omitted.
TYPE:
|
side
|
Hand side to load.
TYPE:
|
rotation_type
|
Rotation representation expected by pose inputs.
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
forward_skeleton |
Compute posed joint transforms. |
forward_vertices |
Compute posed mesh vertices. |
joint_index |
Resolve a standard joint to this model's native joint index. |
get_tpose |
Get parameters for the SMPL-style T-pose. |
get_apose |
Get parameters for the MHR-style A-pose. |
prepare_skinning |
Pack prepared model state into renderer-ready skinning inputs. |
Source code in src/body_models/robots/brainco/numpy.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | |
forward_skeleton
¶
forward_skeleton(
hand_pose,
global_translation=None,
*,
global_rotation=None,
joint_indices=None,
)
Compute posed joint transforms.
| PARAMETER | DESCRIPTION |
|---|---|
hand_pose
|
Local hand joint rotations.
TYPE:
|
global_translation
|
Global model translation.
TYPE:
|
global_rotation
|
Global model rotation.
TYPE:
|
joint_indices
|
Optional subset of joints to return.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Float[ndarray, 'B J 4 4']
|
Joint transforms in the model hierarchy. |
Source code in src/body_models/robots/brainco/numpy.py
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | |
forward_vertices
¶
forward_vertices(
hand_pose,
global_translation=None,
*,
global_rotation=None,
vertex_indices=None,
)
Compute posed mesh vertices.
| PARAMETER | DESCRIPTION |
|---|---|
hand_pose
|
Local hand joint rotations.
TYPE:
|
global_translation
|
Global model translation.
TYPE:
|
global_rotation
|
Global model rotation.
TYPE:
|
vertex_indices
|
Optional subset of vertices to return.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Float[ndarray, 'B V 3']
|
Posed vertex positions. |
Source code in src/body_models/robots/brainco/numpy.py
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | |
joint_index
¶
joint_index(joint)
Resolve a standard joint to this model's native joint index.
Source code in src/body_models/base.py
77 78 79 80 81 82 83 84 85 | |
get_tpose
¶
get_tpose(batch_dims=(), **kwargs)
Get parameters for the SMPL-style T-pose.
Source code in src/body_models/base.py
134 135 136 137 138 139 140 | |
get_apose
¶
get_apose(batch_dims=(), **kwargs)
Get parameters for the MHR-style A-pose.
Source code in src/body_models/base.py
142 143 144 145 146 147 148 | |
prepare_skinning
¶
prepare_skinning(*, identity, pose)
Pack prepared model state into renderer-ready skinning inputs.
Source code in src/body_models/base.py
161 162 163 164 165 166 167 168 169 170 171 172 173 174 | |