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. Assembly and ROS2 control share resolved component descriptions, including custom names and mimic relationships. Hardware parameters live directly under each preset component's control; use_fake_hardware selects the mock plugin and its current parameter names.

  • 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. Expose the V2 arm mounting midpoint as arm_origin and number body visual parts, including data-source and scene-node IDs.

  • 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. Number the support visual parts, data sources and scene nodes consistently.

  • 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.

  • Fill the finger recesses and shallow circular grooves, reduce each finger visual to 2,492 triangles, and rebuild normals with 35-degree angle-limited smoothing. Number link4 visual parts, including their COLLADA IDs and references.

  • Fill the gripper-camera mounting holes and remove residual rim topology, then reduce the camera from 1,756 to 808 triangles. Split PCB, base plate and lens into ee_base_link_03/04/05, with matching reduced geometry in the Cell installation.

Split PRs

#113, #114 and #115 are merged. #116 and #117 are ready for review, followed by drafts #118 and #119. #120 independently consolidates the axis baseline test. #121 adds the camera visual refinement.

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 (merged)
F3 Compose mounting transforms and unify mounting-joint names fix/component-mount-reflection main #112 (merged)
N3 Fill and simplify the finger visuals and number link4 parts codex/refine-v2-visual-assets main #113 (merged)
N4 Fill, simplify and split the V2 gripper camera visual codex/refine-v2-camera-visuals main #121
F4 Discover component Xacro interfaces automatically feat/component-xacro-interfaces main #114 (merged)
G Configure empty arm-tip folding in topology refactor/arm-tip-collapse-config main #115 (merged)
T2 Consolidate the unreflected axis baseline test codex/consolidate-axis-tests main #120
H Generate shared control interfaces from enabled components refactor/shared-ros2-control main #116
I Move V2 body assets and remove root-name overrides refactor/v2-body-assets main #117
K Add the ZED Mini assembly and mount collision meshes feat/v2-body-camera-assembly I #118 (draft)
L Migrate V1 directly to shared presets and external bodies refactor/v1-preset-assembly H, I #119 (draft)
M Center V1 joint origins while preserving motor coordinates fix/v1-center-joint-origins L Queued

Validation

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, T2, N4 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 35 tests pass. The camera base plate has filled mounting holes and uses the shared 350-triangle plate with 182 triangles for its four mounting pieces. The PCB and lens use 46 and 230 triangles, for 808 per camera. The latest Cell updates restore the cable-chain bend from CAD, consolidate black plastic geometry, refine the light-curtain yellow and name the visual components descriptively. The 180-degree base-motor installation is set in the preset with compensated J1 origins.

Review the Cell-only changes.

Follow-up model work

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

ROS caller migration

The companion draft PR updates bringup and MoveIt to select a description preset and read CAN settings from it. It depends on #116 for V2 and #119 for V1.

@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 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
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 9ba8203 to e389f09 Compare November 4, 2026 01:54
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from e389f09 to a524028 Compare November 4, 2026 07:03
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from a524028 to fcc4805 Compare November 4, 2026 07:50
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from fcc4805 to a6661fb Compare November 4, 2026 07:55
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from a6661fb to 237aac0 Compare November 4, 2026 08:01
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 237aac0 to 06314a1 Compare November 4, 2026 09:15
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 06314a1 to 5d5430e Compare November 4, 2026 11:22
@stevenaya
stevenaya force-pushed the feature/v2-camera-mounts branch from 5d5430e to 9b1901a Compare November 4, 2026 11:39

This branch was successfully deployed

1 active deployment
release — 9b1901a7 Deployed Nov 4, 2026 by stevenaya via Publish #341
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