SlewView

See what your algorithm actually did.

Plot your logged values against the truth, the input and the expected output. SlewView opens CSV files of any size on Windows and shows you where your filter, controller or estimator did not do what you meant.

Free edition · Windows 10 and 11, 64-bit · no account needed

SlewView: a Kalman filter's true, measured and estimated position over time with the estimation error on its own axis; in a second plot the same three on the ground, the GPS fixes the filter rejected shown faintly; below, the data grid on the row of the rejected fix that is picked
Simulated data. A position filter checked against the truth, over time and on the ground. A row filter hides the GPS fixes the filter's gate rejected, and they stay faintly on the picture; the picked one's row is in the grid, test ratio 9.6. The sensor drops out at 150 s, and the estimate coasts straight on while the truth turns.

What it should do, and what it does

Whatever you are building, the question is the same: did it follow what you asked of it? Put the command and the response on one axis and look.

The example data on this page is simulated, to show the kind of question each view answers - none of it is a measurement.

A PID step response on one plot: setpoint and motor speed on one axis, the integral term on another; the stretch where the controller output was saturated is filtered out and drawn faintly, and the overshoot follows it

Control loops

Setpoint, speed and the integral term. A row filter hides the stretch where the output sat at 100 %: the integrator winds up through it, and the overshoot after it is the price.

A simulated quadcopter log: east position, flown and planned, over time with the tracking error; in a second plot the position-mode mission route and the track flown, the rest of the flight filtered out and faint; the data grid on the picked row

Drones and robots

A four-waypoint mission in position mode: the planned route and, beside it on the ground, the track flown. A filter keeps the position-mode legs. A gust at 62 s pushes the drone 4 m off the first leg.

Three weeks of battery cycling on a date axis; in a second plot the voltage at rest against the reference state of charge and against the estimated one, charging and discharging filtered out and faint; the data grid on the picked rest point

Batteries and power

Three weeks of cycling. At rest, voltage against the reference state of charge is the open-circuit curve; against the estimate it slides off it as the error grows.

Seven laps of a circuit: speed and lateral acceleration over time; in a second plot the g-g diagram, lateral against longitudinal acceleration, the out-lap and in-lap filtered out and faint; the data grid on the picked braking point

Vehicle dynamics

Lateral against longitudinal g: the flying laps fill the friction circle, and the out-lap and the in-lap, filtered out, stay faintly inside it.

One frame at a time

Group a file by a column - a scan, a cycle, a lap - and step or play through it, with the whole recording beside it and the frame marked.

A simulated front radar log grouped by scan: vehicle speed and yaw rate over a city drive with the current scan marked; in a second plot one scan's radial velocity against azimuth, the moving targets filtered out and faint; the data grid on the picked oncoming car's row; the frame sliders below
Simulated data: a minute of city driving, one radar scan of twelve hundred, in the left bend. Stationary detections lie on a cosine of azimuth whose depth is the car's own speed, and the filter keeps them; the moving road users sit off the curve, faint. The oncoming car is picked, and its row is in the grid.

Big files, opened whole

No row limit, no downsampling by hand, no script to write first. A gigabyte-sized log opens and every row is drawn; zoom in until you see single samples.

A real lidar recording: 3.4 GB, 61 million rows, three of its 29 columns read. It opens in 7.4 seconds - the loading is shown at double speed, the counter is real time, and every one of the 61 million points is drawn. Grouping by scan and zooming onto the street are shown at double speed too, and Play then steps through the city drive one scan at a time, at true scale.

Built for checking numbers

Everything is about the question "is this value right?", not about making a pretty chart.

  • Many signals, many unitsEach curve can have its own Y axis, or share one with the curves it should match.
  • Two plots, one markerA second plot with an X of its own - a track on the ground, a curve against charge, velocity against angle - on the same rows; the marker stands on the same row in both.
  • Measure linesX1, X2, Y1, Y2 with the distance and its reciprocal: delays, periods, overshoot.
  • A row filter that knows the neighboursShow only the rows you care about: abs(err[i]) > 2, or speed[i] - speed[i-1] > 5 for a jump.
  • Group and playSplit a file by a column - a run, a cycle, a flight mode - and step or play through it.
  • Real dates and timesTimestamps in your file's own format, on the axis, in the grid and in every readout.
  • The data, row by rowA grid of the file's rows beside the plot; pick a point and find its row.
  • Export what you keptWrite the filtered rows back out as lines of the original file.
  • SessionsSave the files, columns, filters and view, and pick up exactly where you left off.

Pricing

The free edition never expires. A licence is a one-time purchase, with no subscription.

Free edition

EUR 0
  • Opens and draws every file completely
  • A faint watermark on every plot
  • Values readable for the first 1,000 rows of each file
  • Export up to 1,000 rows per file
  • Sorted by X, the second plot, the frame filter and "show hidden faintly" need a licence
Download

Commercial

EUR 249

one-time, VAT where it applies

  • Everything, no limits, no watermark
  • For use at work, invoiced to your company
  • Up to 3 machines at once
Coming soon - email us

Lost your key? Write to contact [at] slewview.com from the address you bought with.