Tinca/Docs/Widgets/Single Joystick

Single Joystick

FREE
CONTROL · 12 FIELDS · 2×2 DEFAULT

One-stick control for velocity commands

When to reach for it

Single Joystick puts one control scheme on a single stick. Differential wires stick Y to linear.x, stick X to angular.z: the standard ground-robot mapping. Throttle swaps stick Y for linear.z, altitude for a drone or lift. The stick clamps to a circle, trading turn rate for forward speed; for independent full range on both, or a drone that also needs roll and pitch, use Dual Joystick.

It publishes only while you are touching it. An idle stick sends nothing at all, so a joystick sitting on your dashboard never competes with the robot's own navigation for the topic.

Worked example: TurtleBot3 Burger

Topic /cmd_vel, Robot Type Differential, Max Linear Speed 0.22, Max Angular Speed 2.84: the Burger's top speed (m/s) and turn rate (rad/s). Every field but the two speed caps is already this widget's default, so add it and dial in just those two numbers. The RECOMMENDED strip won't hand you this pre-wired though: for a /cmd_vel topic it proposes Dual Joystick, not this widget.

Watch out for
  • Max Linear Speed and Max Angular Speed are scaling caps, not safety limits: full stick deflection asks for exactly that many m/s or rad/s. Enter the robot's true top speed and it will try to hit it, regardless of terrain.
  • Lifting your finger sends a zero Twistright away, without waiting for the next publish tick, so a busy app can't delay it.
  • On Release decides what happens after that zero, and it defaults to Send stop once: one zero Twist, then silence. Switch to Repeat stop briefly only for a base that latches the last command it was handed, and it resends the stop for Repeat For (s), which defaults to 1 second and is bounded to 5.

Configuration fields

Topictopic

The topic this widget publishes to. While connected, tap to pick one the robot advertises.

Max Linear Speednumber

Your robot's top linear speed in m/s, e.g. 0.22 for TurtleBot3. Default 1.0 sends normalized -1 to 1.

Max Angular Speednumber

Your robot's top angular speed in rad/s, e.g. 2.84 for TurtleBot3. Default 1.0 sends normalized -1 to 1.

Robot Typeselect
DifferentialThrottleCustom
Horizontal AxisPROaxis-mapping

Remap which Twist field this axis controls (inversion + axis-off included here)

Vertical AxisPROaxis-mapping

Remap which Twist field this axis controls (inversion + axis-off included here)

On Releaseselect

What to send when you let go. Pick "Repeat stop briefly" if your robot keeps moving on its last command.

Send stop onceRepeat stop briefly
Repeat For (s)slider

How long to keep sending the stop after you let go, in seconds.

0.5 to 5, step 0.5
Custom preset

Pro unlocks a Custom robot type that maps any stick direction to any Twist field.

Publish Rate (Hz)PROnumber

How fast the joystick streams Twist messages.

WITH PRODefault 10 Hz. Raise it for tight control loops, lower to 5 Hz on slow links.

Velocity CurvePROselect

Response curve for stick-to-speed mapping.

LinearQuadratic (smooth start)Cubic (precision at low speed)Exponential (fine + fast)

WITH PROFiner control near zero for precise teleop with Quadratic or Cubic. Linear stays direct.

Dead ZonePROslider

Stick moves inside this radius publish zero, not nothing. Shown as a ring in the preview.

0 to 0.3, step 0.01

WITH PROCompensates for stick drift and prevents accidental nudges from a thumb resting on the touchscreen.

Haptic FeedbackPROselect

Vibration intensity on center snap.

DefaultLightStrongNone

WITH PROFeel the stick recenter without taking your eyes off the robot.