- Bidirectional T3 planner based on two T2 planners.
- RRT\*-Connect algorithm based on [Klemm2015] paper.
- Optimization procedure based on *Remove Redundant Points* from [Lan2015].
+- Variable steer step size to `st3` procedure.
### Changed
- Make `sample` procedure part of RRTBase.
{
return st3(init, goal);
}
+
+std::vector<RRTNode *> RRTBase::steer(RRTNode *init, RRTNode *goal, float step)
+{
+ return st3(init, goal, step);
+}
RRTNode *nn(RRTNode *rs);
std::vector<RRTNode *> nv(RRTNode *node, float dist);
std::vector<RRTNode *> steer(RRTNode *init, RRTNode *goal);
+ std::vector<RRTNode *> steer(
+ RRTNode *init,
+ RRTNode *goal,
+ float step);
// virtuals - implemented by child classes
virtual bool next() = 0;
std::vector<RRTNode *> st1(RRTNode *init, RRTNode *goal);
std::vector<RRTNode *> st2(RRTNode *init, RRTNode *goal);
std::vector<RRTNode *> st3(RRTNode *init, RRTNode *goal);
+std::vector<RRTNode *> st3(RRTNode *init, RRTNode *goal, float step);
std::vector<RRTNode *> st4(RRTNode *init, RRTNode *goal);
#endif
}
std::vector<RRTNode *> st3(RRTNode *init, RRTNode *goal)
+{
+ return st3(init, goal, ST3STEP);
+}
+
+std::vector<RRTNode *> st3(RRTNode *init, RRTNode *goal, float step)
{
std::vector<RRTNode *> nodes;
double q0[] = {init->x(), init->y(), init->h()};
double q1[] = {goal->x(), goal->y(), goal->h()};
ReedsSheppStateSpace rsss(ST3TURNINGRADIUS);
- rsss.sample(q0, q1, ST3STEP, cb_st3, &nodes);
+ rsss.sample(q0, q1, step, cb_st3, &nodes);
return nodes;
}