dimensionalOS / dimensionalOS/dimos

Add ControlCoordinator extension sideloading for external robot packages

Open
#2,548 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

control enhancement
Dominant language
Python
Stars
4.5k
Forks
808
Avg merge
3d 5h
Merged PRs (30d)
233

Description

Problem

External robot packages need a supported way to register ControlCoordinator hardware adapter names and control task types without placing files inside the DimOS source tree. Without this, an outside package can define a blueprint but still cannot use HardwareComponent(adapter_type=...) or TaskConfig(type=...) for custom hardware/control unless DimOS itself is modified.

Solution

Add a public dimos.control.extensions facade for explicit extension registration:

  • register_hardware_adapter(HardwareType, adapter_type, factory) dispatches to the existing manipulator, base, or whole-body adapter registry.
  • register_control_task(task_type, factory_path) registers lazy control task factories without importing the target module at registration time.
  • Hardware and task registries reject conflicting duplicate registrations while keeping exact same mapping re-registration idempotent.
  • Add docs and a runnable no-hardware external package example that logs registration, adapter construction, task creation, task ticks, and adapter writes.

This keeps blueprint usage unchanged: external packages register before coordinator construction, then use normal HardwareComponent and TaskConfig names.

PR

dimensionalOS/dimos#2547

Manual QA

uv run python examples/external_control_extension/demo_external_control.py

Expected output includes [external_test_robot] logs for registering the adapter/task, constructing and connecting the adapter, creating/ticking the task, and writing velocities through the external adapter.


Synced from DIM-1031 by che

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with examples/external_control_extension/demo_external_control.py and run the documented uv command. Check that the external example demonstrates registration, adapter construction and connection, task creation and ticks, and adapter writes, with the expected [external_test_robot] logs. Done means the public extension flow works without modifying the DimOS source tree.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.