- Added an optional 'duration' parameter to the planning requests. Passing 0 will compute a minimum time trajectory, as before. Any other value will compute a trajectory in the specified time (unless the given duration is smaller than the minimum time, in which case the plan will abort).
- Fixed the starting point of trajectories after an abort of a previous plan.
- Fixed the behaviour of goto() that now correctly starts from the current state (and not the last state of a previous plan).
- Added a replay() function that plays back a log file or a trajectory file. The input file must have the same format as log files, but can be sampled at any frequency (samples are interpolated with the planner if the frequency is smaller than the component's one).
- Use aio(7) to write to log files, and drop log entries if the filesystem is too slow.