Tinca/Docs/Widgets/Joint Sliders

Joint Sliders

PRO
CONTROL · 17 FIELDS · 4×3 DEFAULT

Multi-joint arm control with live feedback

When to reach for it

Joint Sliders poses several joints together: manual posing and live streaming control against joint_trajectory_controller. For a single joint, plain Slider is lighter. For waypoint planning with progress and cancel, Action Client (Pro) against MoveIt or Nav2 is the right tool.

Worked example: SO-101 arm

Set Command Schema to JointTrajectory, Command Topic /arm_controller/joint_trajectory; Schema Name auto-fills to trajectory_msgs/msg/JointTrajectory. Tap Auto-detect from robot to pull the five arm joints (the gripper runs its own controller). Leave Publish on Release Only on, Move Duration at 1500 ms, and enable Track Robot State against /joint_states so the feedback ghost trails the thumb as the controller interpolates.

Watch out for
  • Picking JointState as the Command Schema on a real ros2_controlarm (SO-101, UR, MoveIt) is the classic “sliders move but the robot does not” trap; the Command Schema description below explains why it never reaches the controller.
  • Auto-detect from robot checks the derived controller_statetopic first, in the controller's configured order; after a 2.5-second timeout it falls back to the feedback topic, sorted alphabetically by joint_state_broadcaster. A list that lands out of order usually means the fallback fired; fix it in Joint Configuration.
  • Auto-fit Range to Feedbackoff plus an out-of-range reading pins the thumb amber at the edge. Widen the joint's min/max or turn auto-fit on.

Configuration fields

Command Schemaselect

Which command schema to publish. JointTrajectory is the ROS 2 standard, what joint_trajectory_controller listens to, with proper interpolation and controller-side limits. JointState mode publishes the state schema directly on the command topic; it bypasses the controller entirely, so it will not work against real ros2_control arms (SO-101, UR, MoveIt). Use JointState only for hobby setups that subscribe to JointState as a Unity / Arduino bridge command path.

JointTrajectory (ROS 2 standard)JointState (hobby setups only)
Command Topictopic

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

Schema Namestring

The ROS message type for this topic, e.g. sensor_msgs/msg/Image. Usually auto-filled when you choose a topic.

Number of Jointsslider
1 to 12, step 1
Joint Configurationjoint-list

Set up each joint: name, range, rest position, and unit. Tap a joint to edit it; use the reorder button to the right of this title to change their order.

Move Duration (ms)slider

time_from_start horizon per trajectory point. Larger = smoother and safer on real hardware (stays under the controller velocity caps); smaller = more responsive but rides those caps. Default 1500 ms is biased for first-touch real-arm safety. Streaming-teleop setups (with "Publish on Release Only" off) typically lower this toward ~100 ms to match the publishRate tick.

0 to 3000, step 100
Publish on Release Onlyboolean

Send one value when you release a slider, instead of streaming continuously while you drag.

Publish Rate (Hz)number

How many times per second this widget publishes while active (Hz). Higher is smoother but uses more bandwidth.

Track Robot Stateboolean

Show the robot's actual joint positions as a ghost indicator on each slider. The slider thumb stays at your commanded value, so command and feedback are visible separately. Useful for watching motion catch up when JointTrajectory plans over a horizon.

Feedback Topictopic
Recouple Timeout (ms)slider

After you release a slider, the thumb stays at your commanded value while feedback catches up. If feedback never settles within this window (slow controller, joint at a limit, no controller listening), the thumb auto-recouples to feedback anyway so it does not sit stranded.

500 to 10000, step 500
Auto-fit Range to Feedbackboolean

When the robot reports a joint position outside the configured min/max, grow the slider scale to keep the thumb on the track instead of pinning it at the edge (off by default; out-of-range pins to the edge in amber). The configured min/max still bound what you can command.

Smooth Feedbackboolean

Ease the ghost and thumb toward the robot's reported position instead of snapping to every sample. Softens a jumpy or noisy controller. Off by default; your commanded value and out-of-range detection are unaffected.

Smoothingselect

How strongly to ease the displayed feedback. Light barely softens; Heavy strongly damps a noisy controller at the cost of more lag.

LightMediumHeavy
Horizontal Layoutboolean
Show Joint Namesboolean
Show Valuesboolean