**Dynamics for a simple ("unicycle") vehicle in two dimensions:**

The way to think about this is that your vehicle has some *state* that evolves according to some *dynamics* -- this captures the physics of the vehicle -- and it also has some *control inputs *that describe what the driver is commanding the vehicle to do (e.g., accelerate, brake, turn). To organize our thoughts, we'll separate these different things.

The vehicle's *state* *x* = (*p*, *R*, *s*) consists of

*p* in **R**^{2} (position),

*R* in SO(2) (orientation: First column is forward vector; second column is left vector), and

*s* in **R** (speed).

The *control input* is *u* = (*a*, *w*), with

*a* in **R** (acceleration: positive for going faster; negative for braking), and

*w* in **R** (turning rate).

Finally, the *dynamics* (or time-evolution of the state) are given by the following differential equations:

d*p*/d*t* = *s* *R* *e*_{1} (where e_{i} is the ith column of the 2x2 identity matrix)

d*R*/d*t* = *w* *R* *J* (where J is the 90-degree rotation matrix)

d*s*/d*t* = *a*

This fully describes the vehicle. By evolving everything according to these dynamics, you will get consistent behavior, without side-slip.

One question remains, and that is how to choose your control inputs. This depends on what you are trying to achieve -- e.g., going to a specific point, following a road, etc -- and is typically done by designing a *controller* (aka *behavior*), which is a function that takes the state *x* and returns a control input *u*.

You seem concerned with achieving a specified turn radius. To do that, for a radius *r*, you need to choose your control input* **w* so that

*s* = *w* *r*.