60 #ifndef __REEDS_SHEPP_STATE_SPACE_HPP_ 61 #define __REEDS_SHEPP_STATE_SPACE_HPP_ 107 double t = std::numeric_limits<double>::max(),
double u = 0.,
double v = 0.,
double w = 0.,
131 assert(kappa > 0.0 && discretization > 0.0);
153 const State &state2)
const;
156 std::vector<State>
integrate(
const State &state,
const std::vector<Control> &controls)
const;
160 const std::vector<Control> &controls)
const;
std::vector< State > get_path(const State &state1, const State &state2) const
Returns shortest path from state1 to state2 with curvature = kappa_.
std::vector< State > integrate(const State &state, const std::vector< Control > &controls) const
Returns integrated states given a start state and controls with curvature = kappa_.
Reeds_Shepp_State_Space(double kappa, double discretization=0.1)
Constructor of the Reeds_Shepp_State_Space.
const Reeds_Shepp_Path_Segment_Type * type_
State interpolate(const State &state, const std::vector< Control > &controls, double t) const
Returns interpolated state at distance t in [0,1] (percent of total path length with curvature = kapp...
std::vector< State_With_Covariance > get_path_with_covariance(const State_With_Covariance &state1, const State &state2) const
Returns shortest path including covariances from state1 to state2 with curvature = kappa_...
void set_filter_parameters(const Motion_Noise &motion_noise, const Measurement_Noise &measurement_noise, const Controller &controller)
Sets the parameters required by the filter.
Complete description of a ReedsShepp path.
geometry_msgs::TransformStamped t
static const Reeds_Shepp_Path_Segment_Type reeds_shepp_path_type[18][5]
Reeds-Shepp path types.
Reeds_Shepp_Path(const Reeds_Shepp_Path_Segment_Type *type=reeds_shepp_path_type[0], double t=std::numeric_limits< double >::max(), double u=0., double v=0., double w=0., double x=0.)
Constructor of the Reeds_Shepp_Path.
double discretization_
Discretization of path.
An SE(2) state space where distance is measured by the length of Reeds-Shepp curves. The notation and solutions are taken from: J.A. Reeds and L.A. Shepp, “Optimal paths for a car that goes both forwards and backwards,” Pacific Journal of Mathematics, 145(2):367–393, 1990. This implementation explicitly computes all 48 Reeds-Shepp curves and returns the shortest valid solution. This can be improved by using the configuration space partition described in: P. Souères and J.-P. Laumond, “Shortest paths synthesis for a car-like robot,” IEEE Trans. on Automatic Control, 41(5):672–688, May 1996.
Parameters of the motion noise model according to the book: Probabilistic Robotics, S. Thrun and others, MIT Press, 2006, p. 127-128 and p.204-206.
Description of a path segment with its corresponding control inputs.
std::vector< Control > get_controls(const State &state1, const State &state2) const
Returns controls of the shortest path from state1 to state2 with curvature = kappa_.
Reeds_Shepp_Path_Segment_Type
The Reeds-Shepp path segment types.
Description of a kinematic car's state with covariance.
Parameters of the measurement noise.
Parameters of the feedback controller.
EKF ekf_
Extended Kalman Filter for uncertainty propagation.
Description of a kinematic car's state.
State integrate_ODE(const State &state, const Control &control, double integration_step) const
Returns integrated state given a start state, a control, and an integration step. ...
double kappa_inv_
Inverse of curvature.
Reeds_Shepp_Path reeds_shepp(const State &state1, const State &state2) const
Returns type and length of segments of path from state1 to state2 with curvature = 1...
std::vector< State_With_Covariance > integrate_with_covariance(const State_With_Covariance &state, const std::vector< Control > &controls) const
Returns integrated states including covariance given a start state and controls with curvature = kapp...
double get_distance(const State &state1, const State &state2) const
Returns shortest path length from state1 to state2 with curvature = kappa_.