Robot Planning and its Applications Project
dubins_local.h
Go to the documentation of this file.
1 
7 #ifndef DUBINS_HPP_
8 #define DUBINS_HPP_
9 
10 #include <vector>
11 #include "utils.hpp" // Path struct
12 
13 double sinc(double t);
14 
15 double mod2pi(double ang);
16 
17 double rangeSymm(double const& ang);
18 
19 bool check(double const& s1, double const& k0, double const& s2, double const& k1, double const& s3, double const& k2, double const& th0, double const& thf);
20 
21 void scaleToStandard(double x0, double y0, double th0, double xf, double yf, double thf, double kmax, double& sc_th0, double& sc_thf, double& sc_kmax, double& lambda);
22 
23 void scaleFromStandard(double lambda, double sc_s1, double sc_s2, double sc_s3, double& s1, double& s2, double& s3);
24 
25 
36 void LSL(double sc_th0, double sc_thf, double sc_kmax, bool& ok, double& sc_s1, double& sc_s2, double& sc_s3);
37 
48 void RSR(double sc_th0, double sc_thf, double sc_kmax, bool& ok, double& sc_s1, double& sc_s2, double& sc_s3);
49 
60 void LSR(double sc_th0, double sc_thf, double sc_kmax, bool& ok, double& sc_s1, double& sc_s2, double& sc_s3);
61 
72 void RSL(double sc_th0, double sc_thf, double sc_kmax, bool& ok, double& sc_s1, double& sc_s2, double& sc_s3);
73 
84 void RLR(double sc_th0, double sc_thf, double sc_kmax, bool& ok, double& sc_s1, double& sc_s2, double& sc_s3);
95 void LRL(double sc_th0, double sc_thf, double sc_kmax, bool& ok, double& sc_s1, double& sc_s2, double& sc_s3);
96 
98 struct dubinsArc {
99  double x0, y0, th0, k, s, xf, yf, thf;
100 };
101 
103 struct dubinsCurve {
104  dubinsArc arc_1, arc_2, arc_3;
105  double L;
106 };
107 
108 void set_dubinsArc(dubinsArc& ptr, double x0, double y0, double th0, double k, double s);
109 
110 void set_dubinsCurve(dubinsCurve& curve_ptr, double x0, double y0, double th0, double s1, double s2, double s3, double k0, double k1, double k2);
111 
123 void dubins_shortest_path(dubinsCurve& curve, double const& x0, double const& y0, double const& th0, double const& xf, double const& yf, double const& thf, double const& kmax);
124 
131 Path getPath(dubinsCurve curve,int npts);
132 #endif
double s
Definition: dubins_local.h:99
void scaleFromStandard(double lambda, double sc_s1, double sc_s2, double sc_s3, double &s1, double &s2, double &s3)
Definition: dubins_local.cpp:87
void LRL(double sc_th0, double sc_thf, double sc_kmax, bool &ok, double &sc_s1, double &sc_s2, double &sc_s3)
Compute the arcs for LRL configuration.
Definition: dubins_local.cpp:200
void set_dubinsArc(dubinsArc &ptr, double x0, double y0, double th0, double k, double s)
Definition: dubins_local.cpp:220
void scaleToStandard(double x0, double y0, double th0, double xf, double yf, double thf, double kmax, double &sc_th0, double &sc_thf, double &sc_kmax, double &lambda)
Definition: dubins_local.cpp:72
double sinc(double t)
Definition: dubins_local.cpp:18
void LSR(double sc_th0, double sc_thf, double sc_kmax, bool &ok, double &sc_s1, double &sc_s2, double &sc_s3)
Compute the arcs for LSR configuration.
Definition: dubins_local.cpp:136
double k
Definition: dubins_local.h:99
dubinsArc arc_3
Definition: dubins_local.h:104
Structure for a Dubins arc.
Definition: dubins_local.h:98
void RSR(double sc_th0, double sc_thf, double sc_kmax, bool &ok, double &sc_s1, double &sc_s2, double &sc_s3)
Compute the arcs for RSR configuration.
Definition: dubins_local.cpp:116
bool check(double const &s1, double const &k0, double const &s2, double const &k1, double const &s3, double const &k2, double const &th0, double const &thf)
Definition: dubins_local.cpp:55
void LSL(double sc_th0, double sc_thf, double sc_kmax, bool &ok, double &sc_s1, double &sc_s2, double &sc_s3)
Compute the arcs for LSL configuration.
Definition: dubins_local.cpp:96
double L
Definition: dubins_local.h:105
void RLR(double sc_th0, double sc_thf, double sc_kmax, bool &ok, double &sc_s1, double &sc_s2, double &sc_s3)
Compute the arcs for RLR configuration.
Definition: dubins_local.cpp:180
double x0
Definition: dubins_local.h:99
Path getPath(dubinsCurve curve, int npts)
Discretize the dubins curve to points.
Definition: dubins_local.cpp:296
double mod2pi(double ang)
Definition: dubins_local.cpp:31
double thf
Definition: dubins_local.h:99
double th0
Definition: dubins_local.h:99
Structure for a Dubins curve.
Definition: dubins_local.h:103
void set_dubinsCurve(dubinsCurve &curve_ptr, double x0, double y0, double th0, double s1, double s2, double s3, double k0, double k1, double k2)
Definition: dubins_local.cpp:234
double y0
Definition: dubins_local.h:99
double yf
Definition: dubins_local.h:99
double xf
Definition: dubins_local.h:99
void RSL(double sc_th0, double sc_thf, double sc_kmax, bool &ok, double &sc_s1, double &sc_s2, double &sc_s3)
Compute the arcs for RSL configuration.
Definition: dubins_local.cpp:159
double rangeSymm(double const &ang)
Definition: dubins_local.cpp:44
A sequence of sampled robot configurations composing a (discretization of the) path.
Definition: utils.hpp:27
void dubins_shortest_path(dubinsCurve &curve, double const &x0, double const &y0, double const &th0, double const &xf, double const &yf, double const &thf, double const &kmax)
Compute shortest path using dunins confiuration.
Definition: dubins_local.cpp:245