Skip to content

Tool and CLI Reference

Every interactive tool lives in tools/ and is launched as uv run python tools/<tool>.py <config.toml> [flags]. This page is the compact catalogue; each tool's workflow has its own guide.

The tools

Tool Purpose Guide
kinematics_inspector.py Pose a robot with sliders (FK) or by dragging the tip (IK). Kinematics and Posing
dynamics_simulator.py Free dynamics under drag forces and viscous friction. Simulate Dynamics
reaching_simulator.py Reaching scenario GUI / headless batch runs. Run Controlled Scenarios
multi_target_simulator.py Reaching with several switchable targets. Run Controlled Scenarios
periodic_curve_simulator.py Trace a closed task-space curve. Run Controlled Scenarios
trajectory_tracking_simulator.py Track a recorded tip / per-joint reference. Teach and Track Trajectories
trajectory_recorder.py Teach a trajectory by dragging the tip. Teach and Track Trajectories
player.py Replay, plot, and export a saved log; several logs open a playlist. Record, Replay, and Re-simulate
export_config.py Write a log's embedded scenario config to TOML. Record, Replay, and Re-simulate

Shared flags

Flag Tools Meaning
--pose 20,45,… all simulators, inspector, recorder Start joint angles in degrees (one per joint).
--initial FILE same Start pose/velocity from a TOML [initial] table.
--show-com inspector, dynamics, recorder, player Draw the link centers of mass.
--run all simulators Start simulating immediately (windows open paused by default).
--no-joint-limits dynamics, scenario tools, recorder (dynamics mode) Drop the dynamics hard stop; limits stay on the kinematics. Scenario tools record the resolved choice in the log's run metadata; the dynamics simulator and recorder apply it without embedding it.
--task FILE / --controller FILE scenario tools Override the named section from a separate file. The recorder and the inspector also take --task FILE, only to draw it.
--save PATH scenario tools Headless run (no GUI); write the log directly.
--duration S scenario tools (with --save), recorder Override the task's simulated duration / cap the recording length (recorder: a reached cap stops and saves the take but keeps the window open; 0 or negative records until you save).
--show-tip-trail / --show-past-trails recorder Draw the current take's logged tip path / the faint tip paths of the takes saved in this session (also checkboxes in the panel).
--past-trail-history {all,last} recorder Which saved takes the faint overlay draws: every take saved in this session (all, default) or only the most recently saved one (last); saved files and the history are unchanged.
--multi-take / --start-on-grab recorder Number the outputs from the --output base / start recording on the first grab instead of Space.
--output PATH recorder, export_config.py (-o) Output file path (teach.sklog.npz / the log path with .toml by default).
--stiffness N dynamics, scenario tools, recorder Spring constant (N/m) of the mouse drag force.
--friction C dynamics, recorder Viscous joint damping (N·m·s/rad).
--method NAME inspector, recorder (ik mode) Numerical IK method.
--speed / --fps / --export PATH player Playback speed, export frame rate, headless video/GIF export.
--panel player Composite a simulator-style side panel (time, sliders, parameter readouts) into the --export frames.
--sample-rate HZ recorder Requested teaching logger sampling rate (best effort; the achieved rate is reported on save).
--plot dynamics, recorder Plot the tip trajectory / recorded motion when the window closes (off by default).

Keyboard shortcuts

Every transport-bar window (all simulators and the player — the trajectory recorder has no transport bar; its own keys are listed below):

Key Action
Space Play / pause
→ / F Single step (simulators) / next frame (player), while paused
R Reset the simulation (pauses and zeroes the clock); in the inspector: reset the pose
Q Close the window

Tool-specific:

Key Tool Action
← / B player Previous frame, while paused
Home / End player Jump to the first / last frame (R also returns to start)
N / P player (playlist) Load the next / previous log of the playlist
Space recorder Start a take from the reset posture (--start-on-grab starts on the first grab instead)
S / Shift+S recorder Save the take and keep it visible / save and prepare the next take
R recorder Reset; discards only an unsaved take
Q recorder Close, warning first when unsaved samples exist
1 … 9 multi-target simulator Switch the active target live

Timing

The interactive simulators integrate at the scenario's [simulator].dt (default 5 ms standalone): each ~20 ms render tick runs as many physics substeps of dt as fill it, and a dt above the frame period slows the render timer to match, so wall clock tracks simulated time. A paused single step advances one render tick (substeps × dt).