Data schema
ssl_vista receives simulation data by calling ssl_simulator.load_sim(csv_path).
The returned sim_data dictionary must contain keys and array shapes expected by each active plotter.
Lookup is by exact key. ssl_simulator logs flat component names (p, theta, R) with no
robot./ctrl. prefix, and the plotter defaults below match that. Any label can be overridden per
plotter in the layout's args.
Common key
time: array with time values of shape(T,)
Plotter-specific requirements
Plotter2DCanvas
Default labels:
- position key (
label_pos):p - heading key (
label_heading):theta
Expected shapes:
p:(T, N, 2)theta:(T, N)
Notes:
- Position must always exist.
- The heading is only required for directional robot types (e.g.
unicycle). Symmetric types such assingle_integratorare drawn from position alone and ignore it.
Plotter3DCanvas
Default labels:
- position key (
label_pos):p - rotation key (
label_rot):R
Expected shapes:
p:(T, N, 3)R:(T, N, 3, 3)
Notes:
- Position must always exist.
- As in 2D, the rotation is only required for directional robot types.
Plotter3DAttitude
Default label:
- rotation key (
label_rot):R
Expected shape:
R:(T, N, 3, 3)
This plotter rotates a local axis triad for the selected robot index.
Overriding the labels
If your run logs different names, point the plotter at them in the layout args:
{
"type": "Plotter3DCanvas",
"position": [0, 0],
"args": {"label_pos": "p_est", "label_rot": "R_body"}
}
Examples
Bundled samples:
src/ssl_vista/data/samples/data_uny_test.csvsrc/ssl_vista/data/samples/data_3d_test.csv
Use CLI names:
uv run sslvista --layout 2d_canvas --data-path data_uny_test
uv run sslvista --layout 3d_canvas --data-path data_3d_test
Diagnosing schema mismatches
If you see shape/key errors:
- Verify the chosen layout plotter types.
- Check plotter label overrides in layout
args. - Validate arrays emitted by
ssl_simulator.load_sim- printlist(sim_data)to see the exact keys your run produced. - Compare against bundled sample files and this page.