Single Joystick
FREEOne-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.
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 doesn't wait for the next publish tick: release flushes a zero
Twistimmediately, defense-in-depth against a JS thread too saturated to stop the robot on time.
Configuration fields
The topic this widget publishes to. While connected, tap to pick from the topics the robot advertises.
Applied to linear.x/y/z axes. 1.0 = normalized (-1 to 1). Enter robot max m/s for REP-103 (TurtleBot3 = 0.22, Spot trot = 1.6).
Applied to angular.x/y/z axes. 1.0 = normalized (-1 to 1). Enter robot max rad/s (TurtleBot3 = 2.84, indoor = 1.0-1.5).
Remap which Twist field this axis controls (inversion + axis-off included here)
Remap which Twist field this axis controls (inversion + axis-off included here)
Pro unlocks a "Custom" robot type that reveals the per-axis editor below, so you can remap any stick direction to any Twist field.
How fast the joystick streams Twist messages.
WITH PRODefault is 10 Hz. Robots running tighter control loops (50 to 100 Hz) feel smoother at higher rates; bandwidth-constrained links can drop to 5 Hz to save throughput. Throttle here, before the bridge has to work.
Response curve for stick-to-speed mapping.
WITH PROLinear is direct (good for arcade-style driving). Quadratic and Cubic give finer control near zero, so your last 10% of stick travel does most of the work, ideal for precision teleoperation. Exponential is the opposite: tiny movements stay tiny, big movements explode.
Movements within this radius from center are sent as zero (a stop), not dropped. Past the radius, output ramps from zero and is shaped by the Velocity Curve. Shown as a ring in the preview.
0 to 0.3, step 0.01WITH PROCompensates for stick drift and prevents accidental nudges from a thumb resting on the touchscreen.
Vibration intensity on center snap.
WITH PROA subtle pulse when the stick recenters lets you feel "released" without looking at the screen. Helpful in stressful operation when your eyes are on the robot, not the phone.