M-File Help: Unicycle View code for Unicycle

Unicycle

vehicle class

This concrete class models the kinematics of a differential steer vehicle (unicycle model) on a plane. For given steering and velocity inputs it updates the true vehicle state and returns noise-corrupted odometry readings.

Methods

init initialize vehicle state
f predict next state based on odometry
step move one time step and return noisy odometry
control generate the control inputs for the vehicle
update update the vehicle state
run run for multiple time steps
Fx Jacobian of f wrt x
Fv Jacobian of f wrt odometry noise
gstep like step() but displays vehicle
plot plot/animate vehicle on current figure
plot_xy plot the true path of the vehicle
add_driver attach a driver object to this vehicle
display display state/parameters in human readable form
char convert to string

Class methods

plotv plot/animate a pose on current figure

Properties (read/write)

x true vehicle state: x, y, theta (3x1)
V odometry covariance (2x2)
odometry distance moved in the last interval (2x1)
rdim dimension of the robot (for drawing)
L length of the vehicle (wheelbase)
alphalim steering wheel limit
maxspeed maximum vehicle speed
T sample interval
verbose verbosity
x_hist history of true vehicle state (Nx3)
driver reference to the driver object
x0 initial state, restored on init()

Examples

Odometry covariance (per timstep) is

V = diag([0.02, 0.5*pi/180].^2);

Create a vehicle with this noisy odometry

v = Unicycle( 'covar', diag([0.1 0.01].^2 );

and display its initial state

v

now apply a speed (0.2m/s) and steer angle (0.1rad) for 1 time step

odo = v.step(0.2, 0.1)

where odo is the noisy odometry estimate, and the new true vehicle state

v

We can add a driver object

v.add_driver( RandomPath(10) )

which will move the vehicle within the region -10<x<10, -10<y<10 which we can see by

v.run(1000)

which shows an animation of the vehicle moving for 1000 time steps between randomly selected wayoints.

Notes

Reference

Robotics, Vision & Control, Chap 6 Peter Corke, Springer 2011

See also

RandomPath, EKF


Unicycle.Unicycle

Unicycle object constructor

v = Unicycle(va, options) creates a Unicycle object with actual odometry covariance va (2x2) matrix corresponding to the odometry vector [dx dtheta].

Options

'W', W Wheel separation [m] (default 1)
'vmax', S Maximum speed (default 5m/s)
'x0', x0 Initial state (default (0,0,0) )
'dt', T Time interval
'rdim', R Robot size as fraction of plot window (default 0.2)
'verbose' Be verbose

Notes


Unicycle.char

Convert to a string

s = V.char() is a string showing vehicle parameters and state in a compact human readable format.

See also

Unicycle.display


Unicycle.deriv

be called from a continuous time integrator such as ode45 or Simulink


Unicycle.f

Predict next state based on odometry

xn = V.f(x, odo) is the predicted next state xn (1x3) based on current state x (1x3) and odometry odo (1x2) = [distance, heading_change].

xn = V.f(x, odo, w) as above but with odometry noise w.

Notes


Unicycle.Fv

Jacobian df/dv

J = V.Fv(x, odo) is the Jacobian df/dv (3x2) at the state x, for odometry input odo (1x2) = [distance, heading_change].

See also

Unicycle.F, Vehicle.Fx


Unicycle.Fx

Jacobian df/dx

J = V.Fx(x, odo) is the Jacobian df/dx (3x3) at the state x, for odometry input odo (1x2) = [distance, heading_change].

See also

Unicycle.f, Vehicle.Fv


Unicycle.update

Update the vehicle state

odo = V.update(u) is the true odometry value for motion with u=[speed,steer].

Notes


 

© 1990-2014 Peter Corke.