Skip to content

Add OpenArm Mini teleop module#2784

Open
TomCC7 wants to merge 35 commits into
mainfrom
cc/feat/openarm-mini
Open

Add OpenArm Mini teleop module#2784
TomCC7 wants to merge 35 commits into
mainfrom
cc/feat/openarm-mini

Conversation

@TomCC7

@TomCC7 TomCC7 commented Jul 7, 2026

Copy link
Copy Markdown
Member

Problem

OpenArm Mini leader teleoperation needs support.

Closes DIM-1091

Solution

  • Add a generic teleop runtime module and typed teleop command abstraction.
  • Add the OpenArm Mini teleop package: calibration utilities, Feetech leader adapter, joint mapping, TUI/status helpers, motor ID setup, README, and tests.
  • Add three Viser demo blueprints:
    • openarm-mini-left-teleop-viser
    • openarm-mini-right-teleop-viser
    • openarm-mini-dual-teleop-viser
  • Route OpenArm Mini commands through ControlCoordinator with forced mock follower hardware, then visualize coordinator joint state through ManipulationModule + Viser.
  • Add the openarm-mini-teleop optional extra for ftservo-python-sdk and rich, with the Feetech SDK still lazy-loaded.
  • Fix blueprint argument help for nested non-module Pydantic config models and preserve side-specific OpenArm Mini defaults when applying partial CLI overrides.

Note: the Viser demos mock follower hardware only; the OpenArm Mini leader still needs a connected serial device and calibration.

How to Test

Feature smoke/help:

uv run dimos run openarm-mini-right-teleop-viser --help
uv run dimos run openarm-mini-right-teleop-viser \
  -o openarmminiteleopmodule.openarm_mini.port_right=/dev/ttyACM0

Contributor License Agreement

  • I have read and approved the CLA.

@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

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

Files with missing lines Patch % Lines
dimos/teleop/openarm_mini/tools/setup_motor_id.py 64.07% 23 Missing and 14 partials ⚠️
dimos/teleop/openarm_mini/tools/calibrate.py 60.00% 32 Missing and 2 partials ⚠️
dimos/teleop/openarm_mini/feetech.py 71.08% 15 Missing and 9 partials ⚠️
dimos/teleop/runtime/teleop_module.py 75.00% 15 Missing and 4 partials ⚠️
dimos/teleop/openarm_mini/tools/joint_tui.py 74.24% 15 Missing and 2 partials ⚠️
dimos/teleop/openarm_mini/teleop_module.py 92.30% 6 Missing and 3 partials ⚠️
dimos/teleop/openarm_mini/calibration.py 86.66% 5 Missing and 3 partials ⚠️
dimos/teleop/openarm_mini/mapping.py 89.13% 2 Missing and 3 partials ⚠️
dimos/teleop/openarm_mini/test_feetech.py 96.07% 1 Missing and 1 partial ⚠️
dimos/teleop/runtime/test_teleop_module.py 97.77% 1 Missing and 1 partial ⚠️
@@            Coverage Diff             @@
##             main    #2784      +/-   ##
==========================================
+ Coverage   72.08%   72.39%   +0.31%     
==========================================
  Files         941      979      +38     
  Lines       84224    86547    +2323     
  Branches     7650     7914     +264     
==========================================
+ Hits        60714    62658    +1944     
- Misses      21467    21801     +334     
- Partials     2043     2088      +45     
Flag Coverage Δ
OS-ubuntu-24.04-arm 65.02% <88.05%> (+0.55%) ⬆️
OS-ubuntu-latest 67.51% <88.05%> (+0.46%) ⬆️
Py-3.10 67.50% <88.05%> (+0.48%) ⬆️
Py-3.11 67.50% <88.05%> (+0.48%) ⬆️
Py-3.12 67.49% <88.05%> (+0.46%) ⬆️
Py-3.13 67.49% <88.05%> (+0.47%) ⬆️
Py-3.14 67.50% <88.05%> (+0.47%) ⬆️
Py-3.14t 67.50% <88.05%> (+0.48%) ⬆️
SelfHosted-Large 30.36% <33.48%> (+0.16%) ⬆️
SelfHosted-Linux 37.99% <33.48%> (-0.04%) ⬇️
SelfHosted-macOS 36.34% <33.48%> (+0.01%) ⬆️

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

Files with missing lines Coverage Δ
dimos/robot/all_blueprints.py 100.00% <ø> (ø)
...os/robot/manipulators/openarm/blueprints/teleop.py 100.00% <100.00%> (ø)
...ors/openarm/blueprints/test_openarm_mini_teleop.py 100.00% <100.00%> (ø)
dimos/robot/test_all_blueprints_generation.py 85.03% <100.00%> (ø)
dimos/teleop/openarm_mini/test_calibration.py 100.00% <100.00%> (ø)
dimos/teleop/openarm_mini/test_mapping.py 100.00% <100.00%> (ø)
dimos/teleop/openarm_mini/test_teleop_module.py 100.00% <100.00%> (ø)
dimos/teleop/openarm_mini/tools/test_calibrate.py 100.00% <100.00%> (ø)
dimos/teleop/openarm_mini/tools/test_joint_tui.py 100.00% <100.00%> (ø)
...s/teleop/openarm_mini/tools/test_setup_motor_id.py 100.00% <100.00%> (ø)
... and 11 more

... and 46 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.

Comment thread dimos/robot/cli/dimos.py
Comment thread dimos/teleop/runtime/types.py Outdated
Comment thread dimos/teleop/openarm_mini/adapter.py Outdated
Comment thread dimos/teleop/openarm_mini/adapter.py Outdated
Comment thread dimos/teleop/openarm_mini/adapter.py Outdated
Comment thread dimos/teleop/openarm_mini/joint_tui_openarm_mini.py Outdated
Comment thread dimos/teleop/openarm_mini/mapping.py Outdated
Comment thread dimos/teleop/openarm_mini/teleop_module.py Outdated
Comment thread dimos/teleop/openarm_mini/teleop_module.py
Comment thread dimos/teleop/openarm_mini/tools/joint_tui.py
Comment thread dimos/teleop/openarm_mini/feetech.py Outdated
Comment thread dimos/teleop/openarm_mini/adapter.py Outdated
Comment thread dimos/teleop/openarm_mini/calibration.py Outdated
Comment thread dimos/teleop/openarm_mini/teleop_module.py
Comment thread dimos/core/coordination/worker_manager_python.py Outdated
Comment thread docs/capabilities/manipulation/openarm_mini_teleop.md Outdated
@TomCC7 TomCC7 marked this pull request as ready for review July 8, 2026 06:05
Comment thread dimos/teleop/openarm_mini/feetech.py
Comment thread dimos/teleop/openarm_mini/feetech.py Outdated
Comment thread dimos/teleop/openarm_mini/tools/setup_motor_id.py Outdated
Comment thread dimos/teleop/openarm_mini/config.py Outdated
Comment thread dimos/teleop/openarm_mini/config.py Outdated
Comment thread dimos/teleop/runtime/adapters.py Outdated
@TomCC7 TomCC7 marked this pull request as draft July 8, 2026 06:24
@TomCC7 TomCC7 changed the title Add OpenArm Mini teleop module WIP: Add OpenArm Mini teleop module Jul 8, 2026
@TomCC7 TomCC7 changed the title WIP: Add OpenArm Mini teleop module Add OpenArm Mini teleop module Jul 8, 2026
@TomCC7 TomCC7 marked this pull request as ready for review July 8, 2026 21:00
Comment thread dimos/teleop/openarm_mini/feetech.py
Comment thread dimos/teleop/openarm_mini/feetech.py
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Jul 8, 2026
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.

1 participant