Skip to content

Deprecate robot catalog#2550

Merged
mustafab0 merged 4 commits into
mainfrom
fix/remove-robot-catalog
Jun 20, 2026
Merged

Deprecate robot catalog#2550
mustafab0 merged 4 commits into
mainfrom
fix/remove-robot-catalog

Conversation

@mustafab0

@mustafab0 mustafab0 commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Problem

RobotConfig and catalogue was introduced in an effort to have a single source of truth for all modules that need to interface with hardware or need meta data of Robot. But it was not useful as pulling form lfs on import time

Closes DIM-1032

Solution

Removed all catalogue files and removed references. consolidated in hardware metadata into _hardware.py factory

How to Test

Contributor License Agreement

  • [x ] I have read and approved the CLA.

@mustafab0 mustafab0 changed the title Fix/remove robot catalog Deprecate robot catalog Jun 20, 2026
@mustafab0 mustafab0 marked this pull request as ready for review June 20, 2026 22:45
paul-nechifor
paul-nechifor previously approved these changes Jun 20, 2026
@codecov

codecov Bot commented Jun 20, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.33333% with 24 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
dimos/control/blueprints/_hardware.py 66.66% 9 Missing and 8 partials ⚠️
dimos/manipulation/blueprints.py 90.32% 1 Missing and 2 partials ⚠️
dimos/robot/manipulators/openarm/blueprints.py 95.55% 1 Missing and 1 partial ⚠️
dimos/robot/manipulators/xarm/blueprints.py 88.88% 1 Missing and 1 partial ⚠️
@@            Coverage Diff             @@
##             main    #2550      +/-   ##
==========================================
+ Coverage   70.79%   70.89%   +0.09%     
==========================================
  Files         862      851      -11     
  Lines       77504    77198     -306     
  Branches     6886     6850      -36     
==========================================
- Hits        54872    54727     -145     
+ Misses      20843    20669     -174     
- Partials     1789     1802      +13     
Flag Coverage Δ
OS-ubuntu-24.04-arm 62.97% <83.33%> (+0.04%) ⬆️
OS-ubuntu-latest 65.80% <83.33%> (+0.04%) ⬆️
Py-3.10 65.80% <83.33%> (+0.04%) ⬆️
Py-3.11 65.80% <83.33%> (+0.04%) ⬆️
Py-3.12 65.80% <83.33%> (+0.04%) ⬆️
Py-3.13 65.80% <83.33%> (+0.04%) ⬆️
Py-3.14 65.81% <83.33%> (+0.04%) ⬆️
Py-3.14t 65.80% <83.33%> (+0.04%) ⬆️
SelfHosted-Large 30.16% <ø> (-0.02%) ⬇️
SelfHosted-Linux 37.76% <82.25%> (-0.03%) ⬇️
SelfHosted-macOS 36.55% <82.25%> (-0.07%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/control/blueprints/basic.py 90.47% <100.00%> (-0.44%) ⬇️
dimos/control/blueprints/dual.py 100.00% <100.00%> (ø)
dimos/control/blueprints/mobile.py 100.00% <100.00%> (ø)
dimos/control/blueprints/teleop.py 93.33% <100.00%> (-0.22%) ⬇️
dimos/robot/diy/alfred/config.py 100.00% <100.00%> (ø)
dimos/robot/manipulators/a750/blueprints.py 100.00% <100.00%> (ø)
dimos/robot/manipulators/piper/blueprints.py 100.00% <100.00%> (ø)
dimos/robot/unitree/g1/config.py 100.00% <100.00%> (ø)
dimos/robot/manipulators/openarm/blueprints.py 96.77% <95.55%> (-3.23%) ⬇️
dimos/robot/manipulators/xarm/blueprints.py 92.00% <88.88%> (-8.00%) ⬇️
... and 2 more

... and 13 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@greptile-apps

greptile-apps Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR removes the dimos/robot/catalog/ layer (four catalog files + RobotConfig) and consolidates hardware construction into a new dimos/control/blueprints/_hardware.py factory module. All blueprint files that previously called catalog converter methods now call the factory helpers or build HardwareComponent / TaskConfig / RobotModelConfig directly.

  • Catalog removed: catalog/a750.py, catalog/openarm.py, catalog/piper.py, catalog/ufactory.py, and robot/config.py are deleted; all references are replaced in 11 blueprint files.
  • New _hardware.py: Provides simulation-aware helpers without triggering LFS downloads at import time.
  • Config objects simplified: G1Config and AlfredConfig become plain frozen dataclasses exposing only the fields actually consumed by navigation blueprints.

Confidence Score: 5/5

Safe to merge; the refactor is a mechanical substitution that produces equivalent hardware and planning configurations to the deleted catalog layer.

Every changed blueprint was cross-checked against the deleted catalog. Gripper flags, joint names, adapter types, home positions, end-effector links, and coordinator task names all match their prior values. No functional regressions were found.

dimos/manipulation/blueprints.py and dimos/robot/manipulators/xarm/blueprints.py each contain their own copy of XARM_GRIPPER_COLLISION_EXCLUSIONS and a private xArm model-config builder worth consolidating in a follow-up.

Important Files Changed

Filename Overview
dimos/control/blueprints/_hardware.py New module: provides simulation-aware factory helpers for all supported arms and the mock twist base.
dimos/manipulation/blueprints.py Inlines _make_xarm_model_config() and XARM_GRIPPER_COLLISION_EXCLUSIONS locally; creates a second copy also present in xarm/blueprints.py (flagged in prior review).
dimos/robot/manipulators/xarm/blueprints.py Inlines _xarm_model_config() and XARM_GRIPPER_COLLISION_EXCLUSIONS; end_effector_link logic preserved from old catalog.
dimos/robot/manipulators/openarm/blueprints.py Well-structured replacement; joint naming convention preserved correctly matching old catalog joint_prefix='' behaviour.
dimos/robot/unitree/g1/config.py G1Config frozen dataclass retains all fields accessed by existing callers; no regressions.
dimos/robot/diy/alfred/config.py AlfredConfig frozen dataclass retains the fields its sole caller accesses; removing model_path has no impact.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    subgraph OLD["Old Architecture"]
        CAT["robot/catalog/*.py\n(RobotConfig / GripperConfig)"]
        CAT -->|".to_hardware_component()"| HC1["HardwareComponent"]
        CAT -->|".to_task_config()"| TC1["TaskConfig"]
        CAT -->|".to_robot_model_config()"| RMC1["RobotModelConfig"]
    end
    subgraph NEW["New Architecture"]
        HW["_hardware.py\nmanipulator / mock_arm / xarm7 / xarm6 / piper / a750"]
        HW -->|"returns directly"| HC2["HardwareComponent"]
        BPX["blueprint files"]
        BPX -->|"TaskConfig(...)"| TC2["TaskConfig"]
        LOCAL["per-manipulator blueprints\n_xarm_model_config() etc."]
        LOCAL -->|"RobotModelConfig(...)"| RMC2["RobotModelConfig"]
    end
    HC2 --> COORD["ControlCoordinator"]
    TC2 --> COORD
    RMC2 --> PLAN["ManipulationModule / PickAndPlaceModule"]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    subgraph OLD["Old Architecture"]
        CAT["robot/catalog/*.py\n(RobotConfig / GripperConfig)"]
        CAT -->|".to_hardware_component()"| HC1["HardwareComponent"]
        CAT -->|".to_task_config()"| TC1["TaskConfig"]
        CAT -->|".to_robot_model_config()"| RMC1["RobotModelConfig"]
    end
    subgraph NEW["New Architecture"]
        HW["_hardware.py\nmanipulator / mock_arm / xarm7 / xarm6 / piper / a750"]
        HW -->|"returns directly"| HC2["HardwareComponent"]
        BPX["blueprint files"]
        BPX -->|"TaskConfig(...)"| TC2["TaskConfig"]
        LOCAL["per-manipulator blueprints\n_xarm_model_config() etc."]
        LOCAL -->|"RobotModelConfig(...)"| RMC2["RobotModelConfig"]
    end
    HC2 --> COORD["ControlCoordinator"]
    TC2 --> COORD
    RMC2 --> PLAN["ManipulationModule / PickAndPlaceModule"]
Loading

Reviews (2): Last reviewed commit: "address blueprint cleanup review comment..." | Re-trigger Greptile

Comment thread dimos/control/blueprints/mobile.py Outdated
Comment thread dimos/robot/manipulators/xarm/blueprints.py
@mustafab0 mustafab0 enabled auto-merge (squash) June 20, 2026 23:52
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Jun 20, 2026
@mustafab0 mustafab0 merged commit 5e41345 into main Jun 20, 2026
27 checks passed
@mustafab0 mustafab0 deleted the fix/remove-robot-catalog branch June 20, 2026 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Required CI checks have passed on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants