trajectory_follower
SubTrajectory.hpp
Go to the documentation of this file.
1 #ifndef TRAJECTORY_FOLLOWER_SUBTRAJECTORY
2 #define TRAJECTORY_FOLLOWER_SUBTRAJECTORY
3 
4 #include <base/Pose.hpp>
5 #include <base/geometry/Spline.hpp>
6 #include <vector>
7 #include <base/Trajectory.hpp>
8 #include <stdexcept>
9 #include "Motion2D.hpp"
10 
11 namespace trajectory_follower {
12 
14 {
15 public:
16  base::Pose2D startPose;
17  base::Pose2D goalPose;
18  double speed;
19  base::geometry::Spline<3> posSpline;
20  base::geometry::Spline<1> orientationSpline;
22 
23  SubTrajectory();
24 
25  SubTrajectory(const base::Trajectory &trajectory);
26 
27  static double angleLimit(double angle);
28 
29  base::Trajectory toBaseTrajectory();
30 
35  void interpolate(base::Pose2D start, const std::vector<base::Angle> &angles);
36 
43  void interpolate(const std::vector<base::Pose2D> &poses);
44 
51  void interpolate(const std::vector< base::Pose2D >& poses, const std::vector< double >& orientationDiff);
52 
58  base::Pose2D getIntermediatePoint(double d);
59 
66  double getClosestPoint(const base::Pose2D &pose, double guess) const;
67 
72  double getClosestPoint(const base::Pose2D &pose) const;
73 
78  base::Pose2D getIntermediatePointNormalized(double d);
79 
84  double getDist(double startParam, double endParam) const;
85 
86  double getClosestPoint(const base::Pose2D &pose, double guess, double start, double end);
87  void setGeometricResolution(double geometricResolution);
88  double getDistToGoal(double startParam) const;
89  std::pair<double, double> error(const Eigen::Vector2d &pos, double currentHeading, double curveParam, double forwardDist);
90  double advance(double curveParam, double length);
91  double getCurvature(double param);
92  double getCurvatureMax();
93  double getVariationOfCurvature(double param);
94  const base::Pose2D &getStartPose() const;
95  const base::Pose2D &getGoalPose() const;
96  const double &getSpeed() const;
97  double getStartParam() const;
98  double getEndParam() const;
99  double getGeometricResolution() const;
100  bool driveForward() const;
101  void setSpeed(double speed);
102  double splineHeading(double param);
103 };
104 
105 class Lateral : public SubTrajectory {
106 public:
107  Lateral();
108  Lateral(const base::Pose2D &currentPose, const base::Position2D &end, double speed);
109  Lateral(const base::Pose2D &currentPose, double angle, double length, double speed);
110 };
111 
112 }
113 
114 #endif
void setGeometricResolution(double geometricResolution)
Definition: SubTrajectory.cpp:342
const base::Pose2D & getStartPose() const
Definition: SubTrajectory.cpp:332
Definition: SubTrajectory.hpp:105
base::geometry::Spline< 3 > posSpline
Definition: SubTrajectory.hpp:19
double getGeometricResolution() const
Definition: SubTrajectory.cpp:348
double getCurvatureMax()
Definition: SubTrajectory.cpp:256
double getCurvature(double param)
Definition: SubTrajectory.cpp:251
Lateral()
Definition: SubTrajectory.cpp:389
double getStartParam() const
Definition: SubTrajectory.cpp:327
void setSpeed(double speed)
Definition: SubTrajectory.cpp:356
Definition: SubTrajectory.hpp:13
base::Trajectory toBaseTrajectory()
Definition: SubTrajectory.cpp:26
base::Pose2D goalPose
Definition: SubTrajectory.hpp:17
bool driveForward() const
Definition: SubTrajectory.cpp:352
base::Pose2D startPose
Definition: SubTrajectory.hpp:16
double getClosestPoint(const base::Pose2D &pose, double guess) const
Definition: SubTrajectory.cpp:214
const base::Pose2D & getGoalPose() const
Definition: SubTrajectory.cpp:285
const double & getSpeed() const
Definition: SubTrajectory.cpp:322
base::Pose2D getIntermediatePoint(double d)
Definition: SubTrajectory.cpp:290
double splineHeading(double param)
Definition: SubTrajectory.cpp:360
void interpolate(base::Pose2D start, const std::vector< base::Angle > &angles)
Definition: SubTrajectory.cpp:153
base::Pose2D getIntermediatePointNormalized(double d)
Definition: SubTrajectory.cpp:315
DriveMode driveMode
Definition: SubTrajectory.hpp:21
base::geometry::Spline< 1 > orientationSpline
Definition: SubTrajectory.hpp:20
double getDist(double startParam, double endParam) const
Definition: SubTrajectory.cpp:261
static double angleLimit(double angle)
Definition: SubTrajectory.cpp:10
std::pair< double, double > error(const Eigen::Vector2d &pos, double currentHeading, double curveParam, double forwardDist)
Definition: SubTrajectory.cpp:191
SubTrajectory()
Definition: SubTrajectory.cpp:20
DriveMode
Definition: Motion2D.hpp:10
double speed
Definition: SubTrajectory.hpp:18
double getVariationOfCurvature(double param)
Definition: SubTrajectory.cpp:337
double getEndParam() const
Definition: SubTrajectory.cpp:280
double advance(double curveParam, double length)
Definition: SubTrajectory.cpp:178
double getDistToGoal(double startParam) const
Definition: SubTrajectory.cpp:266