Add LinkerHand Isaac Sim bridge and G20 assets.

Includes G20 PLAN/cmd_u8 bridge, joint mapping, dual-hand sim scripts,
and G20/L20/O6 URDF with USD payloads for Isaac Sim integration.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
sunxianghui
2026-07-27 14:13:00 +08:00
commit 0b727785c6
134 changed files with 17662 additions and 0 deletions
@@ -0,0 +1,332 @@
#usda 1.0
(
customLayerData = {
string creator = "URDF USD Converter v0.1.3"
}
defaultPrim = "linkerhand_o6_left"
doc = """Generated from Composed Stage of root layer /tmp/tmp43xsk_0z/linkerhand_o6_left.usdc
Generated from Composed Stage of root layer /tmp/urdf_import_linkerhand_o6_left_7nekwe14/usdex_linkerhand_o6_left/linkerhand_o6_left.usdc
Generated from Composed Stage of root layer /tmp/urdf_import_linkerhand_o6_left_7nekwe14/temp_linkerhand_o6_left/linkerhand_o6_left.usd
Generated from Composed Stage of root layer /home/lxqs/mujoco_testwork/linkerhand-urdf/o6/left/linkerhand_o6_left/payloads/base.usd
"""
kilogramsPerUnit = 1
metersPerUnit = 1
subLayers = [
@./physics.usda@
]
upAxis = "Z"
)
over "linkerhand_o6_left"
{
over "Physics"
{
def MjcActuator "lh_thumb_cmc_yaw_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_thumb_cmc_yaw>
}
def MjcActuator "lh_thumb_cmc_pitch_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_thumb_cmc_pitch>
}
def MjcActuator "lh_thumb_ip_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_thumb_ip>
}
def MjcActuator "lh_index_mcp_pitch_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_index_mcp_pitch>
}
def MjcActuator "lh_index_dip_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_index_dip>
}
def MjcActuator "lh_middle_mcp_pitch_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_middle_mcp_pitch>
}
def MjcActuator "lh_middle_dip_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_middle_dip>
}
def MjcActuator "lh_ring_mcp_pitch_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_ring_mcp_pitch>
}
def MjcActuator "lh_ring_dip_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_ring_dip>
}
def MjcActuator "lh_pinky_mcp_pitch_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_pinky_mcp_pitch>
}
def MjcActuator "lh_pinky_dip_actuator"
{
uniform double mjc:forceRange:max = 100
uniform double mjc:forceRange:min = -100
custom rel mjc:target
prepend rel mjc:target = </linkerhand_o6_left/Physics/lh_pinky_dip>
}
over "root_joint"
{
}
over "lh_thumb_cmc_yaw" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_thumb_cmc_pitch" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_thumb_ip" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_index_mcp_pitch" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_index_dip" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_middle_mcp_pitch" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_middle_dip" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_ring_mcp_pitch" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_ring_dip" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_pinky_mcp_pitch" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
over "lh_pinky_dip" (
delete apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
}
}
over "Geometry"
{
over "lh_hand_base_link"
{
over "lh_thumb_metacarpals_base2"
{
over "lh_thumb_metacarpals"
{
over "lh_thumb_distal"
{
over "thumb_distal"
{
}
over "thumb_distal_1"
{
}
}
over "thumb_metacarpals"
{
}
over "thumb_metacarpals_1"
{
}
}
over "thumb_metacarpals_base2"
{
}
over "thumb_metacarpals_base2_1"
{
}
}
over "lh_index_proximal"
{
over "lh_index_distal"
{
over "index_distal"
{
}
over "index_distal_1"
{
}
}
over "index_proximal"
{
}
over "index_proximal_1"
{
}
}
over "lh_middle_proximal"
{
over "lh_middle_distal"
{
over "middle_distal"
{
}
over "middle_distal_1"
{
}
}
over "middle_proximal"
{
}
over "middle_proximal_1"
{
}
}
over "lh_ring_proximal"
{
over "lh_ring_distal"
{
over "ring_distal"
{
}
over "ring_distal_1"
{
}
}
over "ring_proximal"
{
}
over "ring_proximal_1"
{
}
}
over "lh_pinky_proximal"
{
over "lh_pinky_distal"
{
over "pinky_distal"
{
}
over "pinky_distal_1"
{
}
}
over "pinky_proximal"
{
}
over "pinky_proximal_1"
{
}
}
over "hand_base_link"
{
}
over "hand_base_link_1"
{
}
}
}
over "Materials"
{
}
over "VisualMaterials"
{
}
}
@@ -0,0 +1,394 @@
#usda 1.0
(
customLayerData = {
string creator = "URDF USD Converter v0.1.3"
}
defaultPrim = "linkerhand_o6_left"
doc = """Generated from Composed Stage of root layer /tmp/tmp43xsk_0z/linkerhand_o6_left.usdc
Generated from Composed Stage of root layer /tmp/urdf_import_linkerhand_o6_left_7nekwe14/usdex_linkerhand_o6_left/linkerhand_o6_left.usdc
Generated from Composed Stage of root layer /tmp/urdf_import_linkerhand_o6_left_7nekwe14/temp_linkerhand_o6_left/linkerhand_o6_left.usd
Generated from Composed Stage of root layer /home/lxqs/mujoco_testwork/linkerhand-urdf/o6/left/linkerhand_o6_left/payloads/base.usd
"""
kilogramsPerUnit = 1
metersPerUnit = 1
upAxis = "Z"
)
over "linkerhand_o6_left"
{
over "Geometry"
{
over "lh_hand_base_link" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsArticulationRootAPI", "NewtonArticulationRootAPI", "PhysicsMassAPI"]
)
{
bool newton:selfCollisionEnabled = 0
point3f physics:centerOfMass = (-0.0015778857, -0.00034876727, 0.053845223)
float3 physics:diagonalInertia = (0.000022785269, 0.000033403405, 0.00005226303)
float physics:mass = 0.067293525
quatf physics:principalAxes = (0.7112235, 0.0196564, 0.7019677, -0.031875554)
over "lh_thumb_metacarpals_base2" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (0.0016280068, -0.0027668017, -0.0018423444)
float3 physics:diagonalInertia = (2.804746e-8, 4.6153662e-8, 5.5545172e-8)
float physics:mass = 0.001385883
quatf physics:principalAxes = (0.71651435, 0.1483551, 0.6348633, 0.2480857)
over "lh_thumb_metacarpals" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (0.00004248162, 0.000017418392, 0.022834163)
float3 physics:diagonalInertia = (8.782631e-7, 0.0000011610094, 0.0000017675784)
float physics:mass = 0.012338159
quatf physics:principalAxes = (0.602796, 0.6027095, 0.37003604, 0.3693936)
over "lh_thumb_distal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (-0.004137257, -5.907045e-8, 0.023011401)
float3 physics:diagonalInertia = (2.7226213e-7, 0.0000012248909, 0.0000013107585)
float physics:mass = 0.0076333294
quatf physics:principalAxes = (0.7312508, 0.000050898147, 0.68210864, 0.000050140923)
}
}
}
over "lh_index_proximal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (-0.0020865656, 0.0000025383872, 0.017273495)
float3 physics:diagonalInertia = (7.583063e-8, 2.7291307e-7, 2.757608e-7)
float physics:mass = 0.0025317466
quatf physics:principalAxes = (0.78133, 0.007643632, 0.6240355, 0.0066868095)
over "lh_index_distal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (0.0065898662, 0.0000051385564, 0.01943936)
float3 physics:diagonalInertia = (7.204472e-8, 3.6532765e-7, 3.7459085e-7)
float physics:mass = 0.003769511
quatf physics:principalAxes = (0.54057455, 0.0024824692, 0.84128624, 0.0032386186)
}
}
over "lh_middle_proximal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (-0.0020866066, 0.0000025691818, 0.0172735)
float3 physics:diagonalInertia = (7.5831146e-8, 2.7291338e-7, 2.757611e-7)
float physics:mass = 0.0025317736
quatf physics:principalAxes = (0.7813296, 0.0076768305, 0.62403536, 0.0067128767)
over "lh_middle_distal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (0.0065898653, 0.0000051086295, 0.019439332)
float3 physics:diagonalInertia = (7.204529e-8, 3.6532907e-7, 3.745922e-7)
float physics:mass = 0.003769528
quatf physics:principalAxes = (0.5405751, 0.0024706838, 0.84128594, 0.003223407)
}
}
over "lh_ring_proximal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (-0.0020866792, 0.0000026300042, 0.017273493)
float3 physics:diagonalInertia = (7.5832226e-8, 2.7291406e-7, 2.7576172e-7)
float physics:mass = 0.0025318223
quatf physics:principalAxes = (0.78132856, 0.0077359965, 0.62403536, 0.0067587425)
over "lh_ring_distal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (0.0065898667, 0.000005058835, 0.019439397)
float3 physics:diagonalInertia = (7.20441e-8, 3.6532612e-7, 3.7458938e-7)
float physics:mass = 0.003769496
quatf physics:principalAxes = (0.54057366, 0.002450255, 0.841287, 0.0031969126)
}
}
over "lh_pinky_proximal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (-0.002086736, 0.0000026806224, 0.017273486)
float3 physics:diagonalInertia = (7.5833086e-8, 2.7291458e-7, 2.7576223e-7)
float physics:mass = 0.00253186
quatf physics:principalAxes = (0.78132784, 0.007784023, 0.6240353, 0.0067960154)
over "lh_pinky_distal" (
prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"]
)
{
point3f physics:centerOfMass = (0.006589876, 0.0000050308754, 0.01943945)
float3 physics:diagonalInertia = (7.2043434e-8, 3.6532472e-7, 3.7458818e-7)
float physics:mass = 0.0037694806
quatf physics:principalAxes = (0.54057276, 0.0024336982, 0.8412878, 0.0031746821)
}
}
}
}
over "Physics"
{
def PhysicsRevoluteJoint "lh_thumb_cmc_yaw" (
prepend apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
uniform token physics:axis = "Z"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_thumb_metacarpals_base2>
point3f physics:localPos0 = (0.011508, -0.022975, 0.032794)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 74.48451
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_thumb_cmc_pitch" (
prepend apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_thumb_metacarpals_base2>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_thumb_metacarpals_base2/lh_thumb_metacarpals>
point3f physics:localPos0 = (0.0061649, -0.010678, -0.004891)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (0.41919965, 0.47202873, -0.27252436, 0.7260792)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 33.231552
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_thumb_ip" (
prepend apiSchemas = ["NewtonMimicAPI", "PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
float newton:mimicCoef1 = 2.29
rel newton:mimicJoint = </linkerhand_o6_left/Physics/lh_thumb_cmc_pitch>
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_thumb_metacarpals_base2/lh_thumb_metacarpals>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_thumb_metacarpals_base2/lh_thumb_metacarpals/lh_thumb_distal>
point3f physics:localPos0 = (0.0037776, 7.372575e-18, 0.045368)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 61.87944
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_index_mcp_pitch" (
prepend apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_index_proximal>
point3f physics:localPos0 = (0.0024758, -0.02419, 0.098779)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (0.99965733, 0.026176646, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 91.67325
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_index_dip" (
prepend apiSchemas = ["NewtonMimicAPI", "PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
float newton:mimicCoef1 = 0.89
rel newton:mimicJoint = </linkerhand_o6_left/Physics/lh_index_mcp_pitch>
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_index_proximal>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_index_proximal/lh_index_distal>
point3f physics:localPos0 = (-0.0052516, 0, 0.036625)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 81.93297
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_middle_mcp_pitch" (
prepend apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_middle_proximal>
point3f physics:localPos0 = (0.00052576, -0.00634, 0.1027)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 91.67325
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_middle_dip" (
prepend apiSchemas = ["NewtonMimicAPI", "PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
float newton:mimicCoef1 = 0.89
rel newton:mimicJoint = </linkerhand_o6_left/Physics/lh_middle_mcp_pitch>
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_middle_proximal>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_middle_proximal/lh_middle_distal>
point3f physics:localPos0 = (-0.0052516, 0, 0.036625)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 81.93297
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_ring_mcp_pitch" (
prepend apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_ring_proximal>
point3f physics:localPos0 = (0.0010258, 0.011135, 0.098767)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (0.99965733, -0.026176646, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 91.67325
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_ring_dip" (
prepend apiSchemas = ["NewtonMimicAPI", "PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
float newton:mimicCoef1 = 0.89
rel newton:mimicJoint = </linkerhand_o6_left/Physics/lh_ring_mcp_pitch>
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_ring_proximal>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_ring_proximal/lh_ring_distal>
point3f physics:localPos0 = (-0.0052516, 0, 0.036625)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 81.93297
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_pinky_mcp_pitch" (
prepend apiSchemas = ["PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_pinky_proximal>
point3f physics:localPos0 = (0.0024758, 0.028372, 0.092741)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (0.99904823, -0.043619126, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 91.67325
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsRevoluteJoint "lh_pinky_dip" (
prepend apiSchemas = ["NewtonMimicAPI", "PhysicsDriveAPI:angular", "PhysicsJointStateAPI:angular"]
)
{
float drive:angular:physics:maxForce = 100
float newton:mimicCoef1 = 0.89
rel newton:mimicJoint = </linkerhand_o6_left/Physics/lh_pinky_mcp_pitch>
uniform token physics:axis = "Y"
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_pinky_proximal>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link/lh_pinky_proximal/lh_pinky_distal>
point3f physics:localPos0 = (-0.0052516, -3.469447e-18, 0.036625)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
float physics:lowerLimit = 0
float physics:upperLimit = 81.93297
custom float urdf:limit:effort = 100
custom float urdf:limit:velocity = 1
}
def PhysicsFixedJoint "root_joint"
{
custom rel physics:body0
prepend rel physics:body0 = </linkerhand_o6_left>
custom rel physics:body1
prepend rel physics:body1 = </linkerhand_o6_left/Geometry/lh_hand_base_link>
point3f physics:localPos0 = (0, 0, 0)
point3f physics:localPos1 = (0, 0, 0)
quatf physics:localRot0 = (1, 0, 0, 0)
quatf physics:localRot1 = (1, 0, 0, 0)
}
}
}
@@ -0,0 +1,108 @@
#usda 1.0
(
customLayerData = {
string creator = "URDF USD Converter v0.1.3"
}
defaultPrim = "linkerhand_o6_left"
doc = """Generated from Composed Stage of root layer /tmp/tmp43xsk_0z/linkerhand_o6_left.usdc
Generated from Composed Stage of root layer /tmp/urdf_import_linkerhand_o6_left_7nekwe14/usdex_linkerhand_o6_left/linkerhand_o6_left.usdc
Generated from Composed Stage of root layer /tmp/urdf_import_linkerhand_o6_left_7nekwe14/temp_linkerhand_o6_left/linkerhand_o6_left.usd
Generated from Composed Stage of root layer /home/lxqs/mujoco_testwork/linkerhand-urdf/o6/left/linkerhand_o6_left/payloads/base.usd
"""
kilogramsPerUnit = 1
metersPerUnit = 1
subLayers = [
@./physics.usda@
]
upAxis = "Z"
)
over "linkerhand_o6_left"
{
over "Physics"
{
over "lh_thumb_cmc_yaw" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_thumb_cmc_pitch" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_thumb_ip" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_index_mcp_pitch" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_index_dip" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_middle_mcp_pitch" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_middle_dip" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_ring_mcp_pitch" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_ring_dip" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_pinky_mcp_pitch" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
over "lh_pinky_dip" (
prepend apiSchemas = ["PhysxJointAPI"]
)
{
float physxJoint:maxJointVelocity = 57.29578
}
}
}