0

0

0

1

# SimpleCarModels.jl

This package extends the interfaces defined in `DifferentialDynamicsModels.jl` to simple car dynamics of the form

$\inline {\begin{bmatrix} \dot x \\ \dot y \\ \dot\theta\end{bmatrix}} = \begin{bmatrix} v \cos(\theta) \\ v \sin(\theta) \\ v \kappa\end{bmatrix}.$

The state consists of position $\inline (x, y)$ and heading $\inline \theta$ in the plane. The control inputs are speed $\inline v$ and curvature $\inline \kappa$, or some derivative of each of them (e.g., curvature rate $\inline \dot\kappa$ as input ensures trajectories with continuous curvature) with the state and dynamics equation correspondingly augmented. This package exports the type `SimpleCarDynamics{Dv,Dκ} <: DifferentialDynamics` to represent these dynamics, where `Dv` and `Dκ` denote the number of integrators in the speed and curvature control inputs respectively.

In addition to providing these dynamics and a few methods for exact propagation, this package also contains pure Julia implementations of minimum arc length Dubins and Reeds-Shepp steering for a simple car with minimum turning radius `r`. These implementations aim to be non-allocating and highly performant (e.g., for use in robotic motion planning where computing millions of steering connections in a few seconds may be necessary), and may be accessed through the `SteeringBVP` interface defined in `DifferentialDynamicsModels.jl`:

• `DubinsSteering(; v=1, r=1)` returns a `DubinsSteering` instance which may be called with two `SE2State`s as input, or any pair of `StaticVector`s of length 3.
• `ReedsSheppSteering(; v=1, r=1)` returns a `ReedsSheppSteering` instance which may be called as above.

or through specialized functions:

• `dubins_length(q0, qf; r=1)` and `dubins_waypoints(q0, qf, dt_or_N; v=1, r=1)` give the length and a `Vector` of states along the optimal Dubins steering curve respectively. `dt_or_N` may be an `AbstractFloat` or an `Int`, corresponding to a desired time spacing `dt` (with car speed `v`) or a desired total number of equally spaced waypoints `N`.
• `reedsshepp_length(q0, qf; r=1)` and `reedsshepp_waypoints(q0, qf, dt_or_N; v=1, r=1)` give the length and a `Vector` of states along the optimal Reeds-Shepp steering curve respectively.

10/22/2017

#### Last Touched

almost 2 years ago

9 commits