feat: WebUI gamepad teleop panel (Issue #598) #603
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-webui/issue-598-gamepad-teleop"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue #598 — WebUI Gamepad Teleoperation Panel
Standalone
ui/gamepad_panel.{html,js,css}— no build step required.Features
Web Gamepad API
Virtual Dual Joystick
Keyboard Input
Speed Controls
E-stop
ROS
geometry_msgs/Twistto/cmd_velat 20 HzInput Priority
gamepad > keyboard > virtual sticks
Responsive
- Standalone ui/gamepad_panel.{html,js,css} — no build step - Web Gamepad API integration: L-stick=linear, R-stick=angular - LT trigger scales speed down (fine control) - B/Circle button toggles E-stop; Start button resumes - Live raw axis bars and button state in sidebar - Virtual dual joystick (left=drive, right=steer) via Pointer Capture API - Deadzone ring drawn on canvas; configurable 0–40% - Touch and mouse support - WASD/Arrow keyboard input (W/S=forward/reverse, A/D=turn, Space=E-stop) - Speed limiter sliders: linear (0–1.0 m/s), angular (0–2.0 rad/s) - Configurable deadzone slider (0–40%) - E-stop: latches zero-velocity command, blinking overlay, resume button - Publishes geometry_msgs/Twist to /cmd_vel at 20 Hz via rosbridge WebSocket - Input priority: gamepad > keyboard > virtual sticks - Live command display (m/s, rad/s) with color feedback - Pub rate display (Hz) in sidebar - localStorage WS URL persistence, auto-reconnect on load - Mobile-responsive: sidebar hidden ≤800px, right stick hidden ≤560px Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>