dummy-link

Readme

SimpleCarModels.jl

Build Status Build status codecov.io

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

simple car dynamics

The state consists of position (x,y) and heading θ in the plane. The control inputs are speed v and curvature κ, or some derivative of each of them (e.g., curvature rate κ̇ 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 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 SE2States as input, or any pair of StaticVectors 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.

First Commit

10/22/2017

Last Touched

about 2 years ago

Commits

9 commits

Used By: