Technical Documentation: Teleoperation Screen
Architecture


The Teleop Screen is a high-frequency control interface that interacts directly with the RosProvider's command publishing capabilities. It emphasizes low-latency input processing.
Technical Details
- File Path: lib/screens/teleop_screen.dart
- ROS Integration:
- Topic: /cmd_vel (Type: geometry_msgs/Twist)
- Rate: 10Hz to 20Hz during active joystick movement.
- Video Stream: Integrated via the LiveVideoPlayer widget, consuming an RTSP or WebRTC stream provided by the Go Backend bridge.
Control Logic
- Joystick Mapping:
- Vertical Axis (Y) → linear.x (velocity)
- Horizontal Axis (X) → angular.z (rotation)
- Deadzone Handling: Implements a 5% deadzone at the joystick origin to prevent "ghost movement" due to sensor jitter or accidental touches.
- Safety Interlock: The _processAndPublish method checks rosProvider.isArmed before sending any non-zero velocity commands. If the robot is disarmed, it forces a "Hard Stop" (0,0,0) command.
Speed Scaling
Velocity is calculated as: TargetValue = RawInput * SpeedMultiplier. The SpeedMultiplier is dynamically updated based on the "Speed Level" selected in the UI (Low: 0.2m/s, Med: 0.5m/s, High: 1.0m/s).