gripper-grip-line#
Code |
GR.003 |
|---|---|
Validator |
CheckPrim |
Compatibility |
open-usd |
Tags |
🔑 |
Summary#
Every gripper site prim must contain a child BasisCurves prim named gripper_grip_line with at least 2 points defining the axis of the imaginary tube the gripper can grasp.
Description#
The gripper_grip_line curve is a linear BasisCurves prim that encodes the axis of an imaginary tube running through the graspable region — the direction along which a cylindrical or elongated object would be oriented when held by the gripper.
The unprefixed child name grip_line is also accepted for existing assets.
New assets should use gripper_grip_line. When both are present the
gripper_-prefixed name wins.
The intended roles of the three axes are:
gripper_forward_axis— approach direction (gripper moves toward object along this axis)gripper_grip_line— axis of the graspable tube (typically perpendicular to finger motion)Grip motion — direction the finger pads move when opening/closing (implied third axis, typically
gripper_forward_axis × gripper_grip_line)
Keeping gripper_forward_axis and gripper_grip_line mutually orthogonal is
suggested so planners can derive a stable closure axis from their cross
product. It is not validated: GR.003 only requires a BasisCurves child with
at least 2 points. Nearly parallel curves still pass static validation;
consumers may fall back when the cross product degenerates.
The gripper_grip_line is not the jaw closure direction — it is typically
perpendicular to it. The length of the segment (|p1 - p0|) encodes the
physical width of the grip pads along the tube axis, representing how much of
the object the pads can contact.
This definition generalizes to hand grippers and multi-finger grippers, not just parallel-jaw grippers.
Why is it required?#
Defines the axis of the graspable tube so planners can align cylindrical or elongated objects correctly.
Segment length (
|p1 - p0|) is the grip pad width — the extent of the finger contact surfaces along the tube axis.Together with
gripper_forward_axis, the axes (forward, grip_line, grip motion) describe the grasp frame; orthogonal authoring is suggested but not required.A visual representation aids authoring and debugging in any USD viewer.
Examples#
# Invalid: gripper site without gripper_grip_line
def Xform "gripper_01"
{
double3 xformOp:translate = (0, 0.15, 0)
uniform token[] xformOpOrder = ["xformOp:translate"]
float gripper_maxOpening = 0.085
def BasisCurves "gripper_forward_axis"
{
point3f[] points = [(0, -0.15, 0), (0, 0.15, 0)]
int[] curveVertexCounts = [2]
uniform token type = "linear"
}
# Missing gripper_grip_line — invalid
}
# Valid
def Xform "gripper_01"
{
double3 xformOp:translate = (0, 0.15, 0)
uniform token[] xformOpOrder = ["xformOp:translate"]
float gripper_maxOpening = 0.085
def BasisCurves "gripper_forward_axis"
{
point3f[] points = [(0, -0.15, 0), (0, 0.15, 0)]
int[] curveVertexCounts = [2]
uniform token type = "linear"
}
def BasisCurves "gripper_grip_line"
{
point3f[] points = [(-0.2, 0, 0), (0.2, 0, 0)]
int[] curveVertexCounts = [2]
uniform token type = "linear"
}
}
How to comply#
Add a child prim named
gripper_grip_lineunder the gripper site prim (the unprefixed namegrip_lineis accepted for existing assets).Set the prim type to
BasisCurves.Author at least 2 points spanning the jaw closure axis, centered at the local origin.
Set
curveVertexCounts = [2]andtype = "linear".Suggested: orient the segment perpendicular to
gripper_forward_axisand size it so that|p1 - p0|equals the physical width of the grip pads. Orthogonality is not checked by the validator.