Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6f6bcae
Unify preset assembly and refine V2 visual and collision assets
stevenaya Nov 4, 2026
893c9d8
Generate shared control interfaces from enabled components
stevenaya Oct 31, 2026
98bdede
Check control selection and resolved names in one fixture
stevenaya Nov 4, 2026
6e82271
Share resolved component descriptions with control generation
stevenaya Nov 4, 2026
d3bb6e2
Flatten preset control settings and select mock hardware automatically
stevenaya Nov 4, 2026
d064d3c
Restore CAN launch arguments for preset-based V2 control
stevenaya Nov 6, 2026
e3fb789
Add the ZED Mini mount and default bimanual camera assembly
stevenaya Nov 1, 2026
ee68e77
Add collision meshes for the ZED camera mount
stevenaya Nov 2, 2026
b63791d
Number ZED mount visual parts
stevenaya Nov 4, 2026
c0a3d34
Align ZED mount data and scene identifiers with part names
stevenaya Nov 4, 2026
8658915
Cover compound collision generation with its feature
stevenaya Nov 4, 2026
cb154c4
Clean redundant V2 visual mesh topology
stevenaya Nov 6, 2026
8ce3ad5
Refresh V2 collision meshes and finger split variants
stevenaya Nov 6, 2026
0dde98c
Clean redundant topology in ZED mount meshes
stevenaya Nov 6, 2026
df8af77
Split V2 pedestal collisions into primitive and convex parts
stevenaya Nov 6, 2026
735f327
Integrate finalized V2 visual and collision meshes
stevenaya Nov 6, 2026
d34fb36
Integrate camera-mount and pedestal collision refinements
stevenaya Nov 6, 2026
41eba58
Migrate V1 assembly to shared presets and explicit control systems
stevenaya Nov 6, 2026
70937a2
Center V1 joint origins while preserving motor coordinates
stevenaya Nov 6, 2026
471bd5b
Declare control systems with stable joint indices in presets
stevenaya Nov 6, 2026
2ccea7e
Integrate explicit control systems with the V1 and V2 models
stevenaya Nov 6, 2026
7fcbff2
Allow zero-based control joint indices
stevenaya Nov 6, 2026
b7f2e9a
Migrate V1 assembly to shared presets and explicit control systems
stevenaya Nov 6, 2026
27f2352
Center V1 joint origins while preserving motor coordinates
stevenaya Nov 6, 2026
797e249
Accept zero-based indices in integrated control systems
stevenaya Nov 6, 2026
2996035
Separate stable component keys from emitted link and joint names
stevenaya Nov 6, 2026
2f9d210
Declare control systems using component keys and stable joint indices
stevenaya Nov 6, 2026
f0a9f02
Migrate V1 assembly to shared presets and stable component keys
stevenaya Nov 6, 2026
cbabe2a
Add the ZED Mini mount and camera assembly
stevenaya Nov 6, 2026
d756908
Center V1 joint origins while preserving motor coordinates
stevenaya Nov 6, 2026
ef7cacc
Split V2 pedestal collisions into primitive and convex parts
stevenaya Nov 6, 2026
27f267c
Integrate stable component keys across V1 and V2
stevenaya Nov 6, 2026
e5a4ae7
Keep the original link6 visual pending surface review
stevenaya Nov 6, 2026
fc2240a
Refresh V2 collision meshes and finger split variants
stevenaya Nov 6, 2026
a4727c6
Keep link6 unchanged in the integrated model
stevenaya Nov 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ jobs:
- "humble"
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: stereolabs/zed-ros2-description
ref: 22468247c1653d08a1e213809f3e9ce76291487d
path: .ci/zed_description
- name: Build URDF files
run: |
docker container run \
Expand All @@ -37,7 +42,7 @@ jobs:
osrf/ros:${{ matrix.id }}-desktop-full \
bash -c '
cd /source
colcon build
colcon build --paths /source/.ci/zed_description /source
source install/setup.bash

mkdir -p urdf_output
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ jobs:
- "humble"
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: stereolabs/zed-ros2-description
ref: 22468247c1653d08a1e213809f3e9ce76291487d
path: .ci/zed_description
- name: Run tests
run: |
docker container run \
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ Recommended starting point:
- for all new robot assembly, presets, xacro, and URDF generation work, start with `assets/robot/openarm_v2.0`
- only use `assets/robot/openarm_v1.0` when you need the old `v10 + parallel_link` compatibility path -->

## V2 camera assembly

The V2 `default_bimanual` preset includes both arms, pinch grippers, the camera mount, and the official ZED Mini model. Single-arm presets are also available. Use `ros2_control:=false` when exporting a model without control interfaces.

## Component interfaces

Robot entries load `assets/component_loader.xacro`. The loader locates each component using the existing `type`, `product`, and `config` fields, then optionally loads `<component directory>/urdf/component.xacro`. Components without this file use the standard YAML model generator.
Expand All @@ -33,6 +37,8 @@ The default implementations are `openarm_describe_config_component` and `openarm

Interface files declare macros; implementation and third-party model includes belong inside those macros. Each interface is loaded in a local scope, so its definitions do not affect other components. Presets need no implementation selector or product registry.

Component topology uses stable `link1`, `link2`, ... and `joint1`, `joint2`, ... keys. An optional `name` on each topology entry defines its local URDF name; otherwise the key is used. The instance prefix is added once. Geometry, inertia, joint parameters, parent/child links, mimic targets, references, reflection selections and overrides use the stable keys. Changing `name` preserves these config references. Component descriptors expose resolved `link_name_map` and `joint_name_map` entries for emitters and control generation.

## Related links

- 📚 Read the [documentation](https://docs.openarm.dev/software/description)
Expand All @@ -49,3 +55,5 @@ Copyright 2025 Enactic, Inc.

All participation in the OpenArm project is governed by our
[Code of Conduct](CODE_OF_CONDUCT.md).

Control partitions are declared under the preset's top-level `systems` mapping. Each system's `joints` maps component instance names to stable local joint keys with an `idx`. Each active joint requires a unique non-negative integer `idx` within its system; gaps are allowed. Joints are emitted in index order, with `idx` included as a joint parameter for runtime adapters. Disabled components are skipped, and final joint names come from the resolved component descriptions. Standard OpenArm hardware defaults are supplied by the model entry. Per-system hardware_plugin and driver parameters can override those defaults, and CAN launch arguments take precedence. `use_fake_hardware:=true` selects `mock_components/GenericSystem`. Optional `command_interfaces` and `state_interfaces` default to `[position, velocity, effort]`.
16 changes: 16 additions & 0 deletions assets/accessory/zed_mount/config/inertials/nominal.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
link1:
origin:
x: 0.014296
y: 0.0034952
z: 0.047826
roll: 0
pitch: 0
yaw: 0
mass: 0.13704
inertia:
xx: 0.00018293
xy: -6.3997e-06
xz: -3.1024e-05
yy: 0.00011247
yz: -8.6526e-06
zz: 0.00012779
29 changes: 29 additions & 0 deletions assets/accessory/zed_mount/config/link/collisions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
link1:
- name: support
origin:
x: 0
y: 0
z: 0
roll: 0
pitch: 0
yaw: 0
geometry:
mesh: package://openarm_description/assets/accessory/zed_mount/meshes/collision/zed_mount_support.stl
scale:
x: 1
y: 1
z: 1
- name: shell
origin:
x: 0
y: 0
z: 0
roll: 0
pitch: 0
yaw: 0
geometry:
mesh: package://openarm_description/assets/accessory/zed_mount/meshes/collision/zed_mount_shell.stl
scale:
x: 1
y: 1
z: 1
14 changes: 14 additions & 0 deletions assets/accessory/zed_mount/config/link/visuals.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
link1:
origin:
x: 0
y: 0
z: 0
roll: 0
pitch: 0
yaw: 0
geometry:
mesh: package://openarm_description/assets/accessory/zed_mount/meshes/visual/zed_mount.dae
scale:
x: 1
y: 1
z: 1
10 changes: 10 additions & 0 deletions assets/accessory/zed_mount/config/struct/reference_points.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
camera_mount_point:
parent: link1
emit: true
origin:
x: 0.0263085336684006
y: 0.00869000000000031
z: 0.065829226007701
roll: 0
pitch: 1.08210413623648
yaw: 0
4 changes: 4 additions & 0 deletions assets/accessory/zed_mount/config/struct/topology.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
links:
link1:
name: base_link
joints: {}
Binary file not shown.
Binary file not shown.
279 changes: 279 additions & 0 deletions assets/accessory/zed_mount/meshes/visual/zed_mount.dae

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2025 Enactic, Inc.
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -12,10 +12,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.

body_link0:
link1:
origin:
xyz: -0.016206894902 0 0.244091987626
rpy: 0.0 0.0 0.0
x: -0.016206894902
y: 0.0
z: 0.244091987626
roll: 0.0
pitch: 0.0
yaw: 0.0
mass: 3.74
inertia:
xx: 0.248946829107
Expand Down
28 changes: 28 additions & 0 deletions assets/body/v1.0/config/link/collisions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

link1:
origin:
x: 0
y: 0
z: 0
roll: 0
pitch: 0
yaw: 0
geometry:
mesh: package://openarm_description/assets/body/v1.0/meshes/collision/body_link0_symp.stl
scale:
x: 0.001
y: 0.001
z: 0.001
28 changes: 28 additions & 0 deletions assets/body/v1.0/config/link/visuals.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

link1:
origin:
x: 0
y: 0
z: 0
roll: 0
pitch: 0
yaw: 0
geometry:
mesh: package://openarm_description/assets/body/v1.0/meshes/visual/body_link0.dae
scale:
x: 0.001
y: 0.001
z: 0.001
34 changes: 34 additions & 0 deletions assets/body/v1.0/config/struct/reference_points.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

left_arm_mount_point:
parent: link1
emit: false
origin:
x: 0
y: 0.03
z: 0.697
roll: -1.5708
pitch: 0
yaw: 0
right_arm_mount_point:
parent: link1
emit: false
origin:
x: 0
y: -0.03
z: 0.697
roll: 1.5708
pitch: 0
yaw: 0
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2025 Enactic, Inc.
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -12,11 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

body_link0:
kinematic:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
links:
link1:
name: body_link0
joints: {}
2 changes: 1 addition & 1 deletion assets/body/v2.0/config/inertials/nominal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

body_link0:
link1:
origin:
x: -0.01627169562
y: 0.0
Expand Down
79 changes: 74 additions & 5 deletions assets/body/v2.0/config/link/collisions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,76 @@
# See the License for the specific language governing permissions and
# limitations under the License.

body_link0:
link1:
- name: column
origin:
x: 0.0
y: 0.0
z: 0.383
roll: 0.0
pitch: 0.0
yaw: 0.0
geometry:
box:
x: 0.06
y: 0.06
z: 0.75
- name: diagonal_brace
origin:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
geometry:
mesh: package://openarm_description/assets/body/v2.0/meshes/collision/diagonal_brace.stl
scale:
x: 1.0
y: 1.0
z: 1.0
- name: chest_cover
origin:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
geometry:
mesh: package://openarm_description/assets/body/v2.0/meshes/collision/chest_cover.stl
scale:
x: 1.0
y: 1.0
z: 1.0
- name: base_plate
origin:
x: -0.03
y: 0.0
z: 0.004
roll: 0.0
pitch: 0.0
yaw: 0.0
geometry:
box:
x: 0.25
y: 0.19
z: 0.008
- name: base_bracket_left
origin:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
geometry:
mesh: package://openarm_description/assets/body/v2.0/meshes/collision/base_bracket_left.stl
scale:
x: 1.0
y: 1.0
z: 1.0
- name: base_bracket_right
origin:
x: 0.0
y: 0.0
Expand All @@ -21,8 +90,8 @@ body_link0:
pitch: 0.0
yaw: 0.0
geometry:
mesh: "package://openarm_description/assets/body/v2.0/meshes/collision/body_link0_symp.stl"
mesh: package://openarm_description/assets/body/v2.0/meshes/collision/base_bracket_right.stl
scale:
x: 0.001
y: 0.001
z: 0.001
x: 1.0
y: 1.0
z: 1.0
2 changes: 1 addition & 1 deletion assets/body/v2.0/config/link/visuals.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

body_link0:
link1:
origin:
x: 0.0
y: 0.0
Expand Down
Loading
Loading