Skip to content

Correct V1 gripper frames, inertias and actuator parameters - #87

Draft
stevenaya wants to merge 5 commits into
enactic:masterfrom
stevenaya:fix/v1-hand-mass
Draft

stevenaya wants to merge 5 commits into
enactic:masterfrom
stevenaya:fix/v1-hand-mass

Conversation

@stevenaya

@stevenaya stevenaya commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

V1 assigns 0.35 kg to each hand and uses legacy mass properties for link7 and the fingers. Recalculate their masses, COMs and full inertia tensors from measured assemblies and the public V1 CAD, retaining link7 → hand → fingers / TCP. Synchronize the single-arm and both bimanual end effectors. Move TCP to 190.1 mm relative to link7 (90 mm from hand), align finger body axes with hand, set per-finger armature to 0.566 kg, and set the gripper actuator force range to ±150.75 N.

Measured end-effector allocation

Source: openarm_hardware 1.0.1, STEP/OpenArm01_follower.step, calibrated with the measured assemblies below.

Measurement Mass Boundary
L-bracket assembly, J8_A + J8_B 94 g Includes internal assembly screws; both motor attachment screw sets are removed.
Rail support 64 g Weighed separately.
Rail 48 g Included in the 181 g group.
Rail, rotor/crank, rods, bearings and sliders 181 g Includes internal hardware; excludes the support, support-to-rail screws, plastic jaws, jaw screws, motor and removed motor attachment screws.
Assembled gripper 312 g Includes the support, support-to-rail screws, plastic jaws and jaw screws.

The motor uses its 300 g nominal mass. CAD fasteners add 20.708274 g outside the 94 g and 312 g weighed assemblies. The complete end assembly is therefore 726.708274 g. The four support-to-rail screws contribute a CAD estimate of 3.031322 g inside the 312 g measurement, leaving 63.968678 g for the plastic jaws and their mounting screws.

Body Mass Allocated components
link7 0.405497127 kg Gripper motor, L-bracket assembly and its motor mounting screws.
hand 0.172311174 kg Support, rail, fixed mounting screws, rotor/crank, rotor-side bearings/bolts and half of each rod.
Each finger 0.074449987 kg Slider, aluminum adapter, plastic jaw, their hardware, finger-side bearing/bolt and half of its rod.

CAD geometry supplies each part's COM and central inertia. Measured masses calibrate the part groups; the slider mass is fitted to the remaining measured mass. Transform each tensor into its receiving link frame, then combine it with the parallel-axis theorem. At 22 mm travel per finger, split each rod's mass and central inertia equally between hand and its finger, retaining the rod's CAD COM for both contributions. This preserves the assembly's spatial inertia at the reference opening while approximating the rod motion over the stroke.

Inertia entries below are about each body's COM, expressed in its link axes. The order is (Ixx, Iyy, Izz, Ixy, Ixz, Iyz), in kg·m².

Body COM (m) Inertia (kg·m²)
Right link7 (-0.000098974547, 0.003372444724, 0.061389197292) (3.63783092067e-4, 3.35119095023e-4, 1.86511272319e-4, 0, 0, 7.09488421932e-5)
hand (0, 0, 0.005122940872) (2.50930641371e-4, 5.56062761675e-5, 2.90609333842e-4, 1.18380219510e-5, 0, 0)
+Y left_finger (-0.004646697332, 0.012178906515, 0.013352894473) (3.28426861725e-5, 4.17523619255e-5, 1.88211631821e-5, -4.81353477950e-7, -4.11024098296e-6, 3.50430778680e-6)
−Y right_finger (0.004646697332, -0.012178906515, 0.013352894473) (3.28426861725e-5, 4.17523619255e-5, 1.88211631821e-5, -4.81353477950e-7, 4.11024098296e-6, -3.50430778680e-6)

Apply COM-centered X-symmetry to link7: I_sym = (I + Sx I Sx)/2, Sx = diag(-1, 1, 1). This sets Ixy = Ixz = 0, retaining its mass, COM, diagonal terms and Iyz. The tensor changes by 0.0893% in Frobenius norm and removes the small CAD asymmetry that tilted the displayed inertia box horizontally. Mirror the left link7 with Sy = diag(1, -1, 1); the hand and finger assembly uses the same orientation on both arms.

The authored arm-body masses sum to 6.088692878 kg for the single arm and 12.177385756 kg for the bimanual model. The retained fixed pedestal adds 3.74 kg, giving 15.917385756 kg for the complete bimanual model.

Fixed pedestal

Use the corrected description pedestal parameters for openarm_body_link0: 3.74 kg, COM (-0.016206894902, 0, 0.244091987626) m, and diagonal inertia (0.248946829107, 0.253033907704, 0.0140271775534) kg·m². The mass combines the weighed 3.55 kg support assembly and approximately 190 g chest cover. The body remains the fixed parent of the pedestal geometry, arm_origin and both arm bases.

TCP and finger frames

The hand frame is 100.1 mm along link7 Z. Finger origins are (0, ±0.005, 0.015) m in hand; the TCP uses (0, 0, 0.09) m, giving 190.1 mm relative to link7. This matches the Isaac Lab cabinet task reference, including its −3 mm offset from the USD TCP.

Both finger body frames align with hand. The opposing finger's visual and collision geoms carry the 180° Z rotation (quat="0 0 0 1") and offset (0, 0.05, -0.673001) m. Its COM and full inertia use the same unrotated body frame. The slide axes are 0 -1 0 and 0 1 0, with positive coordinates opening the gripper and the existing equality coupling retained.

Gripper parameter calculation

Let q be each finger's displacement; total jaw opening is 2q. One actuator drives the two fingers coupled by a joint equality.

Linear model for gains and armature. The nominal 60° motor travel and 88 mm jaw opening give g = dθ/dq = (π/3) / 0.044 = 23.799944 rad/m. Using output-shaft gains Kp = 10 N·m/rad, Kd = 0.2 N·m·s/rad and the existing motor-inertia estimate I = 0.002 kg·m²:

Parameter Calculation Model value
Actuator kp 10 × g² = 5664.373508 N/m 5664 N/m
Actuator kv 0.2 × g² = 113.287470 N·s/m 113.3 N·s/m
Each finger joint's armature I × g² / 2 = 0.566437351 kg 0.566 kg, previously 0.55 kg

The factor of two distributes the reflected motor inertia between the two synchronized finger joints.

Force limit from the CAD linkage. The V1 CAD gives crank radius r = 0.040 m, connecting-rod hole spacing L = 0.035 m and slider-axis offset e = 0.0186 m. For crank angle φ measured from the slider direction:

y(φ) = r cosφ + sqrt(L² − (r sinφ − e)²)
q = y(φ) − 0.0185 m,  q ∈ [0, 0.044] m
J(φ) = |dq/dφ|
     = |−r sinφ − r cosφ (r sinφ − e) / sqrt(L² − (r sinφ − e)²)|

The CAD open slider-pivot coordinate is y = 0.0625 m; subtracting the 44 mm finger stroke sets the closed reference to 0.0185 m. Evaluating the analytical Jacobian at the endpoints and its interior extremum gives Jmin = 0.031565962684 m/rad at closure and Jmax = 0.0464337254 m/rad at q = 25.2285 mm (total opening 50.4571 mm).

With the DM4310's 7 N·m peak output torque, virtual work gives Q = τ/J. The largest constant bound valid throughout the modeled stroke is Q_limit = min_q (7 / J(q)) = 7 / Jmax = 150.752496 N, set to forcerange="-150.75 150.75". This is the force on the single active opening coordinate; symmetric static jaw loads are 75.375 N each. Using the rated 3 N·m gives a constant bound of 64.61 N. The opening-dependent peak reaches 221.758 N at closure; that is retained as a performance reference.

Validation

The earlier inertial checks below were run on 072b88b6, with coordinated inertial branch 88c2f0a9. The uniform-force update additionally passes ±150.75 N saturation checks and 1000-step runs of the single-arm, bimanual and V1 scene models.

  • Single-arm, bimanual and V1 scene models each run 1000 steps with finite states and no warnings, for both the umbrella and inertial branch.
  • Fresh description single-arm and bimanual URDFs match MuJoCo at 103 poses each on shared arm-body/COM frames, mass matrices and gravity/Coriolis bias. Meshes and motor armature are omitted from this rigid-body comparison.
  • Link7 left/right reflection, shared hand/finger parameters, total masses and valid tensors are checked. The measured-inertia update preserves all authored geometry and joint transforms.
  • The retained pedestal matches description mass, COM and diagonal inertia. Both the umbrella and pedestal branch pass 103-pose checks for geometry, arm frames, mass matrices, gravity/Coriolis terms and contact pairs, plus 1000-step robot and scene runs without warnings.
  • The split branches recompose to the umbrella's model definitions. The three Python unit tests and git diff --check pass.
    The 90 mm TCP update matches description at 103 poses per arm configuration and preserves geometry, mass matrices and gravity/Coriolis terms.

Copilot AI balanced review requested due to automatic review settings October 12, 2026 14:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

Copy link
Copy Markdown

Copilot AI balanced review requested due to automatic review settings October 13, 2026 13:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@stevenaya stevenaya changed the title Align V1 hand mass with the community description Update V1 hand mass, center of mass and inertia Oct 13, 2026
Copilot AI balanced review requested due to automatic review settings October 13, 2026 16:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@stevenaya stevenaya changed the title Update V1 hand mass, center of mass and inertia Update V1 hand inertial parameters and TCP position Oct 13, 2026
Copilot AI balanced review requested due to automatic review settings October 13, 2026 16:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI balanced review requested due to automatic review settings October 14, 2026 06:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@stevenaya stevenaya changed the title Update V1 hand inertial parameters and TCP position Correct V1 hand inertia, TCP position and gripper dynamics Oct 14, 2026
Copilot AI balanced review requested due to automatic review settings October 14, 2026 08:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@stevenaya stevenaya changed the title Correct V1 hand inertia, TCP position and gripper dynamics Correct V1 gripper frames, inertias and actuator parameters Oct 14, 2026
Copilot AI balanced review requested due to automatic review settings October 14, 2026 09:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@stevenaya
stevenaya marked this pull request as draft October 15, 2026 03:30
Copilot AI balanced review requested due to automatic review settings October 15, 2026 03:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Copilot AI balanced review requested due to automatic review settings October 15, 2026 16:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Copilot AI balanced review requested due to automatic review settings October 15, 2026 17:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Copilot AI balanced review requested due to automatic review settings October 16, 2026 03:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Copilot AI balanced review requested due to automatic review settings October 16, 2026 04:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Copilot AI balanced review requested due to automatic review settings October 16, 2026 05:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@stevenaya
stevenaya force-pushed the fix/v1-hand-mass branch 2 times, most recently from 747ba04 to accfd38 Compare October 16, 2026 06:47
Copilot AI balanced review requested due to automatic review settings October 16, 2026 06:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Copilot AI balanced review requested due to automatic review settings October 16, 2026 07:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants