Repository navigation
feat(dual_openyam): leader teleop and collection on the leader teleop module - #5184
Draft
KrishnaH96 wants to merge 5 commits into
Draft
KrishnaH96 wants to merge 5 commits into
KrishnaH96 wants to merge 5 commits into
Conversation
… module The YAM leader mapping table, velocity limits and two blueprints on dimos/teleop/leader: dual-openyam-leader-teleop drives both arms joint for joint and learning-collect-leader-dual-openyam adds the recorder, the episode monitor and three D405 color streams. The coordinator accepts one trajectory task under its canonical name, so the leader port is bound to joint_trajectory until leader_task can produce it. --simulation mocks the leaders at the home pose and the CAN buses.
…e' into krishna/feat/dual-openyam-leader-on-module
leader_task now returns the coordinator's joint_trajectory task bound to the leader port, so the renamed copy goes. Gripper tasks come from the dual OpenYAM jaws with their open_at.
…e' into krishna/feat/dual-openyam-leader-on-module
…ction command The 10 ms tick and the 6 Hz filter are the two leader settings measured on the OpenArm; with a target every coordinator tick each trajectory ramp is half the size of the 50 Hz one. The recorded action is arm_position_command because the coordinator publishes no coordinator_joint_command for connection robots, so the old action stream recorded nothing.
Contributor
There was a problem hiding this comment.
go2 replay realtime (arm64)
Details
| Benchmark suite | Current: 5c15156 | Previous: 83800d9 | Ratio |
|---|---|---|---|
peak memory |
1766.285 MB |
1745.215 MB |
1.01 |
peak threads |
367 threads |
368 threads |
1.00 |
network (transport) |
2736.226 MB |
2730.954 MB |
1.00 |
disk write |
1.895 MB |
1.863 MB |
1.02 |
instructions |
138.83 G |
138.7 G |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## krishna/feat/leader-teleop-module #5184 +/- ##
=====================================================================
+ Coverage 83.77% 83.79% +0.01%
=====================================================================
Files 1884 1888 +4
Lines 183104 183317 +213
Branches 15077 15086 +9
=====================================================================
+ Hits 153400 153611 +211
- Misses 25687 25689 +2
Partials 4017 4017
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 6 files with indirect coverage changes 🚀 New features to boost your workflow:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Branch
krishna/feat/dual-openyam-leader-on-module, basekrishna/feat/leader-teleop-module@ 7969c63 (PR #5177, DIM-129 PR3), merged in, not rebased. Supersedeskrishna/feat/dual-openyam-leader-teleop-v3(DIM-617), whose module code PR1 replaced.Why
The dual OpenYAM leader teleop on v3 carried its own Feetech reader, calibration, CLI and module. PR1 made those generic: the robot is a mapping table. This PR is the dual OpenYAM table and its two blueprints, nothing else.
What
In
dimos/robot/manipulators/dual_openyam/blueprints/:leader_teleop.py:MAPPINGS, oneSideMappingper side, jointsarm/<side>_joint1..6from the planning model, limits fromdual_openyam.urdf, scale 1 and offset 0 (flips live in the calibration file),GripperMapping(joint_7, 1.5 rad). Velocity limits 3 rad/s on the arm, 4 rad/s on the wrists. Blueprintdual-openyam-leader-teleop=LeaderTeleopModule(6 Hz command filter, 10 ms tick, both measured on the OpenArm) +LeaderCoordinator(own worker process since PR1 7969c63) +DualOpenYamConnection+ManipulationModulefor Viser, wired by port name.--simulationswaps in the mock reader parked at the home pose and the mock connection.leader_collection.py:learning-collect-leader-dual-openyam= the teleop blueprint +collect(profile=...)+EpisodeMonitorModule+ three D405 color streams (overhead, left wrist, right wrist). Profile:observation.stateiscoordinator_joint_stateandactionisarm_position_command, the coordinator's command stream to the connection (it publishes nocoordinator_joint_commandfor connection robots); both 14arm/-named joints as the Quest collection names them; threeobservation.images.*at 480x640.Ports, CAN names and camera serials come from flags or the run config. No classes in blueprints, nothing under
dimos/control,dimos/teleop/leaderor the connection.On PR1 @ 7969c63
leader_task()is the coordinator's canonicaljoint_trajectorytask (priority 10) bound toleader_joint_command; it is used unmodified and is the only trajectory task, so the planner shares the lane.leader_gripper_tasks(DualOpenYamConnection.robot.grippers)givesleft_arm_gripperandright_arm_gripperwith the jaws'open_at, the same namesManipulationModulegets under the dual OpenYAM planning groupsleft_manipulatorandright_manipulator. The YAM trigger sits at servo ID 7, so the calibration records it asjoint_7and the mapping names that motor; thegrippername applies to leaders with a trigger at ID 8.Not in this PR
execute_trajectory. PR1 streams the leader'sJointStateinto the trajectory task as 1-point guarded jogs, one per 10 ms tick; smoothing beyond the 6 Hz filter belongs to cc's trajectory-task fix.HW_RUNBOOK_PR3.md).quality.modetofillin the recording'sschema.jsonbeforeprepare. Raised with cc, not worked around here.How to test
On Anvil:
FDEIssues/openyam-leader/HW_RUNBOOK_PR3.md, one step at a time (branch check, calibration copy, joint-tui per side, real leaders on the mock follower, hardware follow, one recording, inspect and prepare).Checks
Head 5c15156 (merge of PR1 @ 7969c63, then one commit).
pytest dimos/robot/manipulators/dual_openyam dimos/teleop/leaderwith the self_hosted marker included: 104 passed (URDF limit test and simulation composition test on the local model asset)pytest dimos/codebase_checks dimos/cli/hardware dimos/robot/test_all_blueprints_generation.py: 195 passed, 3 skipped (optional SDKs)pytest experimental/gateway/tests -k "annot or catalog or config": 46 passeddeptry dimos --config pyproject.toml: clean; no non-ASCIIdimos --simulation run dual-openyam-leader-teleop --leaderteleopmodule.reader mock, 60 s:LeaderCoordinator module_id=1 worker_id=0alone on its worker,TickLoop started at 100.0Hz, 5884Executing trajectory on joint_trajectory: 1 pointslines (about 100 per second), no errors, one expected warning (the pool auto-scaling for the dedicated modules)Stacked on #5177 (PR1); sibling of #5182 (PR2, OpenArm Mini). Hardware check on the OpenYAM rig pending; runbook in the branch owner's notes.