Skip to content

TeleopPanel: SE(3) gizmo + ghost hand for interactive teleop#13

Merged
siddhss5 merged 22 commits into
mainfrom
teleop
Apr 3, 2026
Merged

TeleopPanel: SE(3) gizmo + ghost hand for interactive teleop#13
siddhss5 merged 22 commits into
mainfrom
teleop

Conversation

@siddhss5

@siddhss5 siddhss5 commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • GhostHand: extracts gripper collision meshes from MuJoCo model, merges into single trimesh, renders as transparent overlay in EE frame. Generic — works for any gripper body prefix.
  • TeleopPanel(PanelBase): Viser TransformControls gizmo + GUI (activate/deactivate, snap to EE, toggle gripper, record, safety mode dropdown)
  • Gizmo on_updatecontroller.set_target_pose() (thread-safe)
  • on_sync steps the controller and updates ghost pose each frame

Depends on mj_manipulator#47.

Test plan

  • Imports successfully
  • Manual: activate teleop, drag gizmo, arm follows

siddhss5 added 22 commits April 2, 2026 10:54
- GhostHand: extracts gripper collision meshes from MuJoCo model,
  merges into single trimesh, renders as transparent overlay in the
  EE frame. Generic — works for any gripper body prefix.
- TeleopPanel(PanelBase): Viser TransformControls gizmo + GUI
  (activate/deactivate, snap to EE, toggle gripper, record, safety
  mode dropdown). Drives TeleopController.set_target_pose() from
  gizmo on_update callback.
- on_sync steps the controller and updates ghost pose each frame.
- Ghost mesh is now a child of the gizmo scene node — moves
  automatically when the gizmo is dragged, no manual pose updates
- Gizmo scale 0.15 → 0.3 for easier interaction
The gizmo callback runs in Viser's thread and can't safely touch
MuJoCo data. Now the callback only buffers the target pose, and a
background thread at ~30Hz calls controller.step() + viewer.sync().
The thread starts on activate and stops on deactivate.
@siddhss5 siddhss5 merged commit 0dd1950 into main Apr 3, 2026
0 of 3 checks passed
@siddhss5 siddhss5 deleted the teleop branch April 3, 2026 00:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant