feat: add unified dual-arm VR teleoperation - #3392
Conversation
0a253c6 to
94a3bd4
Compare
8b7239a to
cac9e77
Compare
5812922 to
93300a9
Compare
f9b4a25 to
d30ed33
Compare
Greptile SummaryThis update unifies Cartesian, twist, and Quest teleoperation around bounded Pink IK control, adds coordinated one- and two-hand deadman handling, and introduces an OpenArm teleoperation blueprint with mock hardware by default. The current deadman implementation stops active motion after button input becomes stale even when controller poses continue arriving. Confidence Score: 5/5No blocking failure remains. The focused teleoperation checks exercised stale and refreshed deadman input for single-arm and bimanual control; stale button input halted motion and refreshed input continued the active stream.
What T-Rex did
Reviews (7): Last reviewed commit: "docs: replace Pink tuning frontmatter he..." | Re-trigger Greptile |
db170b3 to
42c367c
Compare
# Conflicts: # dimos/hardware/whole_body/damiao/adapter.py # dimos/hardware/whole_body/damiao/test_adapter.py # dimos/hardware/whole_body/openarm_damiao/adapter.py # dimos/hardware/whole_body/openarm_damiao/test_adapter.py # dimos/hardware/whole_body/openyam_damiao/adapter.py # dimos/manipulation/test_roboplan.py # dimos/robot/manipulators/openarm/blueprints/basic.py # dimos/robot/manipulators/openarm/blueprints/teleop.py # dimos/robot/manipulators/openarm/config.py # dimos/robot/manipulators/openarm/test_config.py # docs/capabilities/manipulation/openarm_integration.md
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
pls approve someone |
# Conflicts: # dimos/teleop/quest/test_quest_teleop_module.py # docs/docs.json
Contribution path
Problem
Quest arm teleoperation assumed one controller, one end-effector, and one IK task. OpenArm needs both controllers to drive one bimanual model in a single solve. The existing Cartesian, twist, and teleop paths also duplicated Pink setup and lacked a common streaming safety envelope for noisy, delayed hardware feedback.
Solution
PoseTargetIKTaskcore.CartesianIKTask,EEFTwistTask, andTeleopIKTaskremain thin input-specific leaves.TeleopIKTask, including optional gripper joints. A two-hand task captures both references together and requires both primary buttons; timeout, release, preemption, or E-stop clears the full session.PinkIKexposes the planning API,PinkPoseTargetSolverowns streaming control state, and both use the private shared Pink solver core.PinkPoseTargetSolversubclass. OpenArm tunes frame costs, posture weights, and per-arm manipulability tasks without replacing common solving or safety logic.TeleopControlCoordinatorfor teleop-only pose and button ports while leaving the generic coordinator free of Quest streams. Existing A1Z, mixed-arm, OpenYam, Piper, and XArm Quest blueprints use the unified task configuration.teleop-quest-openarmwith one bimanual IK task and one OpenArm URDF. It uses fake hardware by default; specifying both CAN interfaces selects real hardware. The blueprint also includes the manipulation planner, Viser visualization, and a higher-priority dual-arm trajectory task.How to Test
Run the complete feature with fake hardware:
To use real OpenArm hardware, specify both CAN interfaces:
Run the focused control, Pink, routing, Quest, and OpenArm tests:
Current result: 156 passed.
AI assistance
Codex with GPT-5 assisted substantially with architecture exploration, implementation, tests, documentation, and verification. The author developed and reviewed the changes interactively.
Checklist