gripper-forward-axis#
Code |
GR.002 |
|---|---|
Validator |
CheckPrim |
Compatibility |
open-usd |
Tags |
🔑 |
Summary#
Every gripper site prim must contain a child BasisCurves prim named gripper_forward_axis with at least 2 points defining the gripper approach direction.
Description#
The gripper_forward_axis curve is a linear BasisCurves prim that encodes the direction from which the gripper approaches the object. The direction vector is computed as p1 - p0 (from first point to second point).
The unprefixed child name forward_axis is also accepted for existing assets.
New assets should use gripper_forward_axis. When both are present the
gripper_-prefixed name wins.
The curve is used in preference to IsaacSiteAPI’s forwardAxis token attribute because:
The approach direction may be non-axis-aligned in local space
Negative axis directions cannot be expressed by the token enum (
"X","Y","Z"only)The curve provides an unambiguous, visually verifiable representation in any USD editor
Why is it required?#
Robot motion planners need the approach vector to compute pre-grasp poses.
Without a forward axis the gripper cannot be oriented correctly during approach.
A visual BasisCurves representation aids authoring and debugging in any USD viewer.
Examples#
# Invalid: gripper site without gripper_forward_axis child
def Xform "gripper_01"
{
double3 xformOp:translate = (0, 0.15, 0)
uniform token[] xformOpOrder = ["xformOp:translate"]
float gripper_maxOpening = 0.085
def BasisCurves "gripper_grip_line"
{
point3f[] points = [(-0.2, 0, 0), (0.2, 0, 0)]
int[] curveVertexCounts = [2]
uniform token type = "linear"
}
# Missing gripper_forward_axis — invalid
}
# Valid: approach along local +Y
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"
}
}
# Valid: non-axis-aligned approach direction
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, 0), (0.1, 0.2, 0.05)]
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_forward_axisunder the gripper site prim (the unprefixed nameforward_axisis accepted for existing assets).Set the prim type to
BasisCurves.Author at least 2 points that define the approach direction vector (
direction = p1 - p0).Set
curveVertexCounts = [2]andtype = "linear".