Conversation
Greptile OverviewGreptile SummaryThis PR adds a complete Meta Quest 3 teleoperation stack spanning:
The change fits into the codebase by registering new module entrypoints and blueprints ( Main issues to address before merge:
Confidence Score: 2/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Quest as Quest Browser (WebXR)
participant Deno as Deno teleop_server.ts
participant LCM as LCM bus (UDP)
participant Py as QuestTeleopModule (Python)
Quest->>Deno: wss:// connect
loop ~80Hz
Quest->>Deno: WS binary (LCM packet)<br/>/vr_left_pose, /vr_right_pose
Quest->>Deno: WS binary (LCM packet)<br/>/vr_left_joy, /vr_right_joy
Deno->>LCM: publishPacket(packet)
LCM-->>Py: PoseStamped / Joy
Py->>Py: _on_pose/_on_joy
end
loop 50Hz control loop
Py->>Py: _handle_engage
Py->>Py: _get_output_pose (delta)
Py->>LCM: publish PoseStamped (/teleop/*)
Py->>LCM: publish QuestButtons (/teleop/buttons)
end
LCM-->>Deno: subscribePacket(raw)
Deno-->>Quest: WS binary (LCM packet)
|
Additional Comments (5)
The
|
|
All Greptile feedback addressed in latest commits |
.gitignore
Outdated
| *mobileclip* | ||
| /results | ||
|
|
||
| dimos/assets/teleop_certs/ |
There was a problem hiding this comment.
dimos/ is only for code. Should this have been assets/teleop_certs/?
There was a problem hiding this comment.
Good catch, fixed this
server path + .gitignore are updated to /assets/teleop_certs/
dimos/teleop/quest/web/README.md
Outdated
| ## Running | ||
|
|
||
| ```bash | ||
| deno run --allow-net --allow-read --allow-run --allow-write --unstable-net dimos/teleop/quest/web/teleop_server.ts |
There was a problem hiding this comment.
Since you have the #!/usr/bin/env -S deno run --allow-net --allow-read --allow-run --allow-write --unstable-net she-bang there, couldn't this be just:
./dimos/teleop/quest/web/teleop_server.tsThere was a problem hiding this comment.
Yep, updated the README and added the execute bit.
Git tracks the file mode, so it'll be executable for all after this commit.
Summary
QuestTeleopModulebase with upgradable/overridable hooks (_handle_engage,_should_publish,_get_output_pose,_publish_msg,_publish_button_state) for subclassing different teleop behaviorsQuestButtons(UInt32)bitmask with readable attribute accessors (buttons.left_x,buttons.right_grip)QuestControllerStatepreserves full analog fidelity from Joy messages (trigger/grip as floats, thumbstick axes)webxr_to_robot)ArmTeleopModule(toggle engage),TwistTeleopModule(twist output),VisualizingTeleopModule(Rerun debug)arm_teleop,arm_teleop_visualizing)TeleopProtocolstructural interface for future device categoriesRLock, monitor-style locking in control loopFiles
dimos/teleop/— full subsystem (protocol, quest module, types, extensions, transforms, visualization, blueprints)dimos/msgs/std_msgs/UInt32.py— base type forQuestButtonsdimos/teleop/quest/web/— Deno bridge + WebXR clientRefer for Detailed Spec
#1113 (Latest Spec at the end)
Linear Stuff
closes DIM-420
closes DIM-394