feat: in-house robot asset manager#2505
Conversation
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
Greptile SummaryThis PR introduces a Git-backed robot asset manager (
Confidence Score: 4/5Safe to merge pending one clarification: verify the upstream a750_description URDF does not contain package://a750_gazebo/... URIs before removing that alias from _A750_PACKAGE_PATHS. The core asset manager logic is well-structured and the vast majority of the migration is correct. The one concern is the removal of the a750_gazebo package alias in _A750_PACKAGE_PATHS — the old code deliberately mapped both names to the same directory, which implies the URDF (or its xacro includes) references package://a750_gazebo/... URIs. If the upstream repo retains those references, Drake will receive an unresolvable URI and silently drop or fail to load the affected meshes. dimos/robot/manipulators/a750/blueprints.py — verify the a750_gazebo package alias removal is safe against the upstream URDF contents. Important Files Changed
Reviews (5): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile |
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Problem
DimOS currently keeps several manipulation robot model bundles in Git LFS. That copies upstream robot description assets into this repo, makes updates manual, and makes CI brittle on runners that do not have those LFS objects available.
robot_descriptions.pysolves a related problem, but it is not the right main asset layer for DimOS:This PR keeps one Git-backed robot asset supply path for built-in and user-supplied robots.
pip install dimosinstalls code only; repos are resolved lazily when a concrete model path is used.Solution
Add a small in-house robot description source layer:
GitAssetCachefor fresh-when-safe Git checkouts under the platform user cache directory, indimos/robot_assets;RobotDescriptionSource, a lazy path-like source handle for an upstream repo/ref;xarm_repo / "xarm_description" / "urdf" / "xarm_device.urdf.xacro";dimos/robot/assets, while Drake-specific cleanup stays in Drake utilities.The asset code is self-contained under
dimos/robot/assetsand avoids an__init__.pyto match DimOS import policy.How to Test
Manual check for a human reviewer:
Open the Drake Meshcat URL printed in the logs. The xArm7 model should load and visualize correctly. The first run may clone
xarm_ros2into the platform user cache underdimos/robot_assets; derived URDFs should be written underdimos/robot_assets/derived.For daemon mode:
Contributor License Agreement