Given a start point and an end point and some conditions, plans a path for a robot to get there.
More...
|
| RRTPlanner (int minIterations, int maxIterations) |
| Constructor taking in the max iterations the RRT planner should run.
|
|
int | maxIterations () const |
| gets the maximum number of iterations for the RRT algorithm
|
|
void | maxIterations (int value) |
| sets the maximum number of iterations for th RRT algorithm
|
|
int | minIterations () const |
|
void | minIterations (int value) |
|
MotionCommand::CommandType | commandType () const override |
| The MotionCommand type that this planner handles.
|
|
virtual std::unique_ptr< Path > | run (PlanRequest &planRequest) override |
| Returns an obstacle-free Path subject to the specified MotionContraints.
|
|
virtual bool | canHandleDynamic () |
|
|
bool | shouldReplan (const PlanRequest &planRequest, const std::vector< DynamicObstacle > dynamicObs, std::string *debugOut=nullptr) const |
| Check to see if the previous path (if any) should be discarded and replaced with a newly-planned one.
|
|
std::vector< Geometry2d::Point > | runRRT (MotionInstant start, MotionInstant goal, const MotionConstraints &motionConstraints, const Geometry2d::ShapeSet &obstacles, Context *context, unsigned shellID, const std::optional< std::vector< Geometry2d::Point >> &biasWaypoints=std::nullopt) |
| Runs a bi-directional RRT to attempt to join the start and end states.
|
|
std::unique_ptr< InterpolatedPath > | generateRRTPath (const MotionInstant &start, const MotionInstant &goal, const MotionConstraints &motionConstraints, Geometry2d::ShapeSet &origional, const std::vector< DynamicObstacle > dyObs, Context *context, unsigned shellID, const std::optional< std::vector< Geometry2d::Point >> &biasWayPoints=std::nullopt) |
|
std::vector< Geometry2d::Point > | runRRTHelper (MotionInstant start, MotionInstant goal, const MotionConstraints &motionConstraints, const Geometry2d::ShapeSet &obstacles, Context *context, unsigned shellID, const std::optional< std::vector< Geometry2d::Point >> &biasWaypoints, bool straightLine) |
| Helper method for runRRT(), which creates a vector of points representing the RRT path.
|
|
| SingleRobotPathPlanner (bool handlesDynamic) |
|
|
static std::unique_ptr< Planning::InterpolatedPath > | generateCubicBezier (const std::vector< Geometry2d::Point > &points, const Geometry2d::ShapeSet &obstacles, const MotionConstraints &motionConstraints, Geometry2d::Point vi, Geometry2d::Point vf) |
| Takes in waypoints and returns a InterpolatedPath with a generated Velocity Profile. More...
|
|
static void | optimize (std::vector< Geometry2d::Point > &path, const Geometry2d::ShapeSet &obstacles, Geometry2d::Point vi, Geometry2d::Point vf) |
| Removes unnecesary waypoints in the path.
|
|
static std::vector< CubicBezierControlPoints > | generateCubicBezierPath (const std::vector< Geometry2d::Point > &points, const MotionConstraints &motionConstraints, Geometry2d::Point vi, Geometry2d::Point vf, const std::optional< std::vector< double >> ×=std::nullopt) |
| Generates a Cubic Bezier Path based on Albert's Bezier Velocity Path Algorithm using waypoints. More...
|
|
static std::vector< InterpolatedPath::Entry > | generateVelocityPath (const std::vector< CubicBezierControlPoints > &controlPoints, const MotionConstraints &motionConstraints, Geometry2d::Point vi, Geometry2d::Point vf, int interpolations=40) |
| Generates a velocity profile from a Cubic Bezier Path under the given motion constratins. More...
|
|
static std::vector< CubicBezierControlPoints > | generateNormalCubicBezierPath (const std::vector< Geometry2d::Point > &points, const MotionConstraints &motionConstraints, Geometry2d::Point vi, Geometry2d::Point vf) |
| Generates a Cubic Bezier Path based on some attempted heuristical Control Point Placement.
|
|
static Eigen::VectorXd | cubicBezierCalc (double vi, double vf, std::vector< double > &points, std::vector< double > &ks, std::vector< double > &ks2) |
| Helper function for cubicBezier() which uses Eigen matrices to solve for the cubic bezier equations.
|
|
Given a start point and an end point and some conditions, plans a path for a robot to get there.
There are many ways to plan paths. This planner uses bidirectional RRTs. You can check out our interactive RRT applet on GitHub here: https://github.com/RoboJackets/rrt.