Skip to content

Ruthwik/go2sdk: Prev. Go2 low-level adapter#2333

Draft
ruthwikdasyam wants to merge 42 commits into
mainfrom
ruthwik/go2sdk
Draft

Ruthwik/go2sdk: Prev. Go2 low-level adapter#2333
ruthwikdasyam wants to merge 42 commits into
mainfrom
ruthwik/go2sdk

Conversation

@ruthwikdasyam
Copy link
Copy Markdown
Contributor

Problem

Closes DIM-XXX

Solution

How to Test

Contributor License Agreement

  • I have read and approved the CLA.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 2, 2026

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
1825 1 1824 151
View the top 1 failed test(s) by shortest run time
dimos.robot.test_all_blueprints_generation::test_all_blueprints_is_current
Stack Traces | 2.65s run time
def test_all_blueprints_is_current() -> None:
        root = DIMOS_PROJECT_ROOT / "dimos"
        all_blueprints, all_modules = _scan_for_blueprints(root)
    
        common = set(all_blueprints.keys()) & set(all_modules.keys())
        assert not common, (
            f"Names must be unique across blueprints and modules, "
            f"but these appear in both: {sorted(common)}"
        )
    
        generated_content = _generate_all_blueprints_content(all_blueprints, all_modules)
    
        file_path = root / "robot" / "all_blueprints.py"
    
        if "CI" in os.environ:
            if not file_path.exists():
                pytest.fail(f"all_blueprints.py does not exist at {file_path}")
    
            current_content = file_path.read_text()
            if current_content != generated_content:
                diff = difflib.unified_diff(
                    current_content.splitlines(keepends=True),
                    generated_content.splitlines(keepends=True),
                    fromfile="all_blueprints.py (current)",
                    tofile="all_blueprints.py (generated)",
                )
                diff_str = "".join(diff)
>               pytest.fail(
                    f"all_blueprints.py is out of date. Run "
                    f"`pytest dimos/robot/test_all_blueprints_generation.py` locally to update.\n\n"
                    f"Diff:\n{diff_str}"
                )
E               Failed: all_blueprints.py is out of date. Run `pytest dimos/robot/test_all_blueprints_generation.py` locally to update.
E               
E               Diff:
E               --- all_blueprints.py (current)
E               +++ all_blueprints.py (generated)
E               @@ -110,13 +110,13 @@
E                    "unitree-go2-relocalization": "dimos.robot.unitree.go2.blueprints.smart.unitree_go2:unitree_go2_relocalization",
E                    "unitree-go2-ros": "dimos.robot.unitree.go2.blueprints.smart.unitree_go2_ros:unitree_go2_ros",
E                    "unitree-go2-security": "dimos.robot.unitree.go2.blueprints.agentic.unitree_go2_security:unitree_go2_security",
E               -    "unitree-go2-wholebody-commander": "dimos.robot.unitree.go2.blueprints.basic.unitree_go2_wholebody_commander:unitree_go2_wholebody_commander",
E               -    "unitree-go2-wholebody-coordinator": "dimos.robot.unitree.go2.blueprints.basic.unitree_go2_wholebody_coordinator:unitree_go2_wholebody_coordinator",
E                    "unitree-go2-spatial": "dimos.robot.unitree.go2.blueprints.smart.unitree_go2_spatial:unitree_go2_spatial",
E                    "unitree-go2-temporal-memory": "dimos.robot.unitree.go2.blueprints.agentic.unitree_go2_temporal_memory:unitree_go2_temporal_memory",
E                    "unitree-go2-vlm-stream-test": "dimos.robot.unitree.go2.blueprints.smart.unitree_go2_vlm_stream_test:unitree_go2_vlm_stream_test",
E                    "unitree-go2-webrtc-keyboard-teleop": "dimos.robot.unitree.go2.blueprints.basic.unitree_go2_webrtc_keyboard_teleop:unitree_go2_webrtc_keyboard_teleop",
E                    "unitree-go2-webrtc-rage-keyboard-teleop": "dimos.robot.unitree.go2.blueprints.basic.unitree_go2_webrtc_rage_keyboard_teleop:unitree_go2_webrtc_rage_keyboard_teleop",
E               +    "unitree-go2-wholebody-commander": "dimos.robot.unitree.go2.blueprints.basic.unitree_go2_wholebody_commander:unitree_go2_wholebody_commander",
E               +    "unitree-go2-wholebody-coordinator": "dimos.robot.unitree.go2.blueprints.basic.unitree_go2_wholebody_coordinator:unitree_go2_wholebody_coordinator",
E                    "unity-sim": "dimos.simulation.unity.blueprint:unity_sim",
E                    "xarm-perception": "dimos.manipulation.blueprints:xarm_perception",
E                    "xarm-perception-agent": "dimos.manipulation.blueprints:xarm_perception_agent",
E               @@ -161,8 +161,10 @@
E                    "g1-whole-body-connection": "dimos.robot.unitree.g1.wholebody_connection.G1WholeBodyConnection",
E                    "go2-connection": "dimos.robot.unitree.go2.connection.GO2Connection",
E                    "go2-fleet-connection": "dimos.robot.unitree.go2.fleet_connection.Go2FleetConnection",
E               +    "go2-joint-commander-module": "dimos.robot.unitree.go2.joint_commander_module.Go2JointCommanderModule",
E                    "go2-memory": "dimos.robot.unitree.go2.blueprints.smart.unitree_go2.Go2Memory",
E                    "go2-teleop-module": "dimos.teleop.quest.quest_extensions.Go2TeleopModule",
E               +    "go2-whole-body-connection": "dimos.robot.unitree.go2.wholebody_connection.Go2WholeBodyConnection",
E                    "google-maps-skill-container": "dimos.agents.skills.google_maps_skill_container.GoogleMapsSkillContainer",
E                    "gps-nav-skill-container": "dimos.agents.skills.gps_nav_skill.GpsNavSkillContainer",
E                    "grasping-module": "dimos.manipulation.grasping.grasping.GraspingModule",

all_blueprints = {'alfred-nav': 'dimos.robot.diy.alfred.blueprints.alfred_nav:alfred_nav', 'coordinator-basic': 'dimos.control.blueprin...sian_ik_mock', 'coordinator-cartesian-ik-piper': 'dimos.control.blueprints.teleop:coordinator_cartesian_ik_piper', ...}
all_modules = {'alfred-high-level': 'dimos.robot.diy.alfred.effector_high_level.AlfredHighLevel', 'arm-teleop-module': 'dimos.teleop..._navigation.BBoxNavigationModule', 'b1-connection-module': 'dimos.robot.unitree.b1.connection.B1ConnectionModule', ...}
common     = set()
current_content = '# Copyright 2025-2026 Dimensional Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the "License");\n# you m...ebsocket_vis_module.WebsocketVisModule",\n    "zed-camera": "dimos.hardware.sensors.camera.zed.camera.ZEDCamera",\n}\n'
diff       = <generator object unified_diff at 0xff636d804ba0>
diff_str   = '--- all_blueprints.py (current)\n+++ all_blueprints.py (generated)\n@@ -110,13 +110,13 @@\n     "unitree-go2-relocali...gps_nav_skill.GpsNavSkillContainer",\n     "grasping-module": "dimos.manipulation.grasping.grasping.GraspingModule",\n'
file_path  = PosixPath('.../dimos/robot/all_blueprints.py')
generated_content = '# Copyright 2025-2026 Dimensional Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the "License");\n# you m...ebsocket_vis_module.WebsocketVisModule",\n    "zed-camera": "dimos.hardware.sensors.camera.zed.camera.ZEDCamera",\n}\n'
root       = PosixPath('.../dimos/dimos/dimos')

dimos/robot/test_all_blueprints_generation.py:66: Failed

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@mustafab0
Copy link
Copy Markdown
Contributor

We now have a TransportWholeBodyAdapter that is generic and can be used for any robot type.

it pairs with robot specific whole body_connection file that is just a simple Robot Connection module that exposes low level control

See the PR file below:
https://github.com/dimensionalOS/dimos/pull/1954/changes#diff-41530e940ddb10e072c9eb83583f82df07876a5c33aa9e070b790a7d4a0c01ae

@mustafab0
Copy link
Copy Markdown
Contributor

Can also take a look at Pim's implementation of the groot task with whole body controller: https://github.com/dimensionalOS/dimos/pull/2300/changes#diff-65719712d2dc627eff6c71bd97a4231dabf0e1d274a0efba1f8251723462e43c

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.

2 participants