Skip to content

Unify V1/V2 model assembly and add V2 camera assets - #97

Draft
stevenaya wants to merge 1 commit into
enactic:mainfrom
stevenaya:feature/v2-camera-mounts
Draft

stevenaya wants to merge 1 commit into
enactic:mainfrom
stevenaya:feature/v2-camera-mounts

Conversation

@stevenaya

@stevenaya stevenaya commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

V1 and V2 use separate model generators. This update moves both to shared topology-driven assembly, adds the V2 body-camera assembly, and makes control interfaces follow the selected preset. This draft tracks the complete model and the split PRs below; completed items are marked as merged.

Changes

  • Discover optional component Xacro interfaces through the package-level loader, with YAML generation as the default; keep common macros independent of component implementations.

  • Move transforms, link/joint output, reference frames, validation and topology-driven component generation into assets/common/, including oblique-axis reflection.

  • Name ordinary component links and joints as preset.prefix + local name. Remove topology prefixes, duplicate override aliases and V1 prefix CLI compatibility; preserve controlled joint names. Reference frames use the instance prefix, and mounting joints use <root_link>_mount_joint. Resolve ZED names once in its adapter.

  • Configure empty arm-tip folding through topology and generate ROS2 control interfaces from the enabled preset components.

  • Move body assets into assets/body/v1.0/ and assets/body/v2.0/. Resolve body root names from topology and mounting transforms from preset references.

  • Drive V1 assembly and placement from presets, removing parent/xyz/rpy and *_arm_base_xyz/rpy overrides. Use the complete parallel-gripper component, with link7 → hand → fingers/TCP. Center link2/link4/link6 origins while preserving physical placement and motor coordinates.

  • Add accessory support, the ZED Mini mount and the default bimanual camera assembly. Use the official zed_description 0.2.0 package in export and test CI. Rename the support instance prefix from openarm_body_zed_mount_ to openarm_body_zed_support_.

  • Add a 9,500-triangle ZED support visual, with selected fasteners removed and the shells and metal parts simplified separately.

  • Add ZED-mount collision geometry: a support box ending at Z=40 mm and a closed 5,314-triangle shell with flush camera/screw openings and a convex lower section up to Z=41 mm. Enable multiple collisions per link and regenerate the V2 example URDF.

  • Update example URDFs, launch configuration and usage instructions. Replace model-parameter snapshots with small configuration fixtures, interface checks and a shared preset-expansion suite.

  • Preserve prismatic travel limits under reflection and apply folded gripper placement to direct base children. Existing regression tests cover asymmetric travel and serial finger chains.

  • Require leaf tips for collapse and validate standalone gripper topology through the component macro entry.

  • Reflect pinch-gripper joint axes component by component and verify oblique travel at both configured endpoints.

Split PRs

The test cleanup in #110 is merged. Review continues with #111, including the direct-child folding guard, followed by the mounting-transform draft #112. IDs below identify the split plan; the PR column tracks submissions.

ID Change Branch Depends on PR
A Update V2 link4 cable-cover visuals fix/v2-link4-cable-cover main #98 (merged)
A2 Reduce the V2 link4 visual using the original body and repaired cable covers fix/v2-link4-mesh-reduction main #102 (merged)
J Update the open-top body visual and measured-mass inertia fix/v2-open-cover-model main #99 (merged)
C Add gripper camera visuals and pose-invariant reference frames feat/v2-gripper-camera main #100 (merged)
B Unify selected V1 visual materials fix/v1-visual-materials main #101 (merged)
E Extract shared Xacro primitives without behavior changes refactor/shared-xacro-primitives main #103 (merged)
E2 Generalize joint-axis and joint-origin reflection fix/shared-joint-reflection main #104 (merged)
N Repair and refine standard V2 visual meshes and normals fix/v2-visual-normals main #108 (merged)
N2 Repair V2 collision meshes and include link4 cable covers fix/v2-collision-meshes main #109 (merged)
F1a Extract assembly flow with caller-supplied component operations refactor/shared-kinematic-components main #105 (merged)
F1b Separate component loading from shared body emission refactor/shared-body-emitter main #106 (merged)
F1c Move the pinch-gripper macro into its asset directory refactor/pinch-gripper-macro main #107 (merged)
T Remove mesh-specific camera geometry checks refactor/test-contracts main #110 (merged)
F2 Generate topology-driven components with complete local names refactor/topology-component-generation main #111
F3 Compose mounting transforms and unify mounting-joint names fix/component-mount-reflection F2 #112 (draft)
F4 Discover component Xacro interfaces automatically feat/component-xacro-interfaces F3 Queued
G Configure empty arm-tip folding in topology refactor/arm-tip-collapse-config F4 Queued
H Generate shared control interfaces from enabled components refactor/shared-ros2-control F4 Queued
I Move V2 body assets and remove root-name overrides refactor/v2-body-assets F4 Queued
K Add the ZED Mini assembly and mount collision meshes feat/v2-body-camera-assembly I Queued
L Migrate V1 directly to shared presets and external bodies refactor/v1-preset-assembly G, H, I Queued
M Center V1 joint origins while preserving motor coordinates fix/v1-center-joint-origins L Queued

Validation

  • Generate arm and gripper joints from topology #111 passes 17 existing tests on ROS 2 Jazzy, including serial-finger pose equivalence across tip collapse. The mounting-transform branch passes 19 tests, including two regression cases for reflected overrides and excluded joints.
  • 13 robot/gripper configurations pass physical-equivalence checks and check_urdf across the mounting-transform change, accounting for fixed mounting-joint renames.
  • K and M reconstruct the integrated tree. The propagated fixes pass 23 tests at F4, 34 on the integrated model and 37 on Cell. The strengthened assertions reproduce both defects on the preceding implementations.
  • Both mount collision meshes are single closed surfaces with consistent winding and pass self-intersection checks. The shell reduction has a maximum sampled deviation of approximately 0.005 mm from the flattened reference. The final model was previewed in RViz.

Cell follow-up

ID Change Branch Depends on Status
O Add the V2 Cell, movable lifter, calibrated inertia and fitted collisions feat/v2-cell-description K, M Prepared for a separate PR after its prerequisites

The Cell branch adds CAD-derived visuals with a white tabletop sheet, a black metal plate and yellow light-curtain housings, a 0–0.3 m lifter, openarm_cell_ frame names and 17 collision primitives: 12 boxes and five triangular prisms. The floor encloses the tabletop beams, side ramps reach the rear posts, and the lifter box maintains 0.5 mm clearance from the guide envelope. The light-curtain end caps, infrared strips and brackets remain black. The estimated lifter mass is 2.82498 kg. Its extrusion uses 2.465533 kg/m, derived from the weighed pedestal after deducting the plate, brackets, rear brace and fasteners. The HFS6-3060 rear brace is estimated at 0.328101 kg from the original STEP, including its hollow section and machined cutouts. The other two lifter parts retain their steel-density estimates. COM and inertia use three component boxes combined with the parallel-axis theorem. Its 37 existing tests pass.

Review the Cell-only changes.

Follow-up model work

  • Refine the ZED Mini mounting transform using exact CAD or measured mounting-hole coordinates.

@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 76400b5 to ef91899 Compare October 28, 2026 06:51
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from ef91899 to 37bf37e Compare October 28, 2026 07:35
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 37bf37e to 7075d62 Compare October 28, 2026 08:42
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 7075d62 to f0333ef Compare October 29, 2026 06:57
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from f0333ef to 73304b3 Compare October 29, 2026 15:52
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 73304b3 to c4bea31 Compare October 30, 2026 14:48
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from c4bea31 to 6a66874 Compare October 30, 2026 18:11
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 6a66874 to 9a6fe67 Compare October 30, 2026 18:20
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 9a6fe67 to 7cbb1c9 Compare October 31, 2026 19:07
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 7cbb1c9 to 942231b Compare October 31, 2026 21:14
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 942231b to d0602fd Compare October 31, 2026 22:25
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from d0602fd to 84e1e2a Compare October 31, 2026 23:18
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 84e1e2a to 694d09c Compare November 1, 2026 15:05
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 694d09c to 769ed69 Compare November 2, 2026 00:47
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 769ed69 to b5e2df7 Compare November 2, 2026 05:19
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from b5e2df7 to 91b2908 Compare November 2, 2026 06:23
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 91b2908 to 46ae0f2 Compare November 2, 2026 07:10
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 46ae0f2 to 5237901 Compare November 2, 2026 08:00
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 5237901 to c8eac06 Compare November 2, 2026 08:44
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from c8eac06 to 8787a26 Compare November 2, 2026 09:09
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 8787a26 to 9ba8203 Compare November 2, 2026 09:37

This branch was successfully deployed

1 active deployment
release — 9ba8203f Deployed Nov 2, 2026 by stevenaya via Publish #305
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.

1 participant