Skip to content

fix(data): add pre-generated xarm7.urdf to xarm_description LFS archive#1312

Merged
spomichter merged 1 commit intofix/lazy-realsense-importfrom
fix/xarm7-urdf-missing
Feb 20, 2026
Merged

fix(data): add pre-generated xarm7.urdf to xarm_description LFS archive#1312
spomichter merged 1 commit intofix/lazy-realsense-importfrom
fix/xarm7-urdf-missing

Conversation

@spomichter
Copy link
Contributor

Problem

dimos run keyboard-teleop-xarm7 crashes with:

FileNotFoundError: Model file not found: data/xarm_description/urdf/xarm7/xarm7.urdf

The blueprint references xarm7.urdf via LfsPath, but only xarm7.urdf.xacro existed in the archive. CartesianIKTask/PinocchioIK need a plain URDF — they don't process xacro at runtime.

xarm6.urdf was already pre-generated; xarm7 was missed when the keyboard teleop blueprints were added in #1308.

Fix

Generated xarm7.urdf from xarm_device.urdf.xacro (dof=7, limited=true) using DimOS's own xacro processor with package_paths resolution, and repacked the xarm_description.tar.gz LFS archive.

Verification

# Round-trip: extract from tarball → load with pinocchio
from dimos.utils.data import get_data
import pinocchio
xarm = get_data('xarm_description')
model = pinocchio.buildModelFromUrdf(str(xarm / 'urdf/xarm7/xarm7.urdf'))
# Loaded: 7 joints — ['universe', 'joint1', ..., 'joint7']

Depends on #1309 (lazy realsense import fix).

The keyboard-teleop-xarm7 blueprint references xarm7.urdf via LfsPath,
but only xarm7.urdf.xacro existed. CartesianIKTask/PinocchioIK need a
plain URDF — they don't process xacro. xarm6.urdf was already pre-generated;
xarm7 was missed.

Generated from xarm_device.urdf.xacro with dof=7, limited=true using
DimOS's own xacro processor (with package_paths resolution).
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 20, 2026

No reviewable files after applying ignore patterns.

@spomichter spomichter merged commit b4211e5 into fix/lazy-realsense-import Feb 20, 2026
2 checks passed
@spomichter spomichter deleted the fix/xarm7-urdf-missing branch February 20, 2026 07:17
spomichter added a commit that referenced this pull request Feb 20, 2026
…lation (#1309)

* fix(realsense): lazy-load pyrealsense2 to avoid import errors in simulation

pyrealsense2 is a system-level dependency that requires hardware libraries.
Importing it eagerly in camera.py caused ModuleNotFoundError when loading
any blueprint from manipulation_blueprints.py, even simulation blueprints
that don't use RealSense cameras.

- Use __getattr__ in realsense/__init__.py for lazy package exports
- Defer pyrealsense2 import to runtime methods (start, _build_camera_info,
  _intrinsics_to_camera_info, _get_extrinsics) via local imports
- Use TYPE_CHECKING guard + from __future__ import annotations for type hints

Python's module cache makes repeated local imports effectively free.

* fix(data): add pre-generated xarm7.urdf to xarm_description LFS archive (#1312)

The keyboard-teleop-xarm7 blueprint references xarm7.urdf via LfsPath,
but only xarm7.urdf.xacro existed. CartesianIKTask/PinocchioIK need a
plain URDF — they don't process xacro. xarm6.urdf was already pre-generated;
xarm7 was missed.

Generated from xarm_device.urdf.xacro with dof=7, limited=true using
DimOS's own xacro processor (with package_paths resolution).

* fix(zed): add zed_camera stub when SDK is not installed

The else branch (no pyzed) was missing a zed_camera stub, causing
ImportError when blueprints tried to import it. Added a stub that
raises ModuleNotFoundError with name='pyzed' so the integration
test skips gracefully. Also added pyzed to OPTIONAL_DEPENDENCIES
in test_all_blueprints.py.

* fix(zed): add type annotations to zed_camera stub
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