ReedsSheppPath path = reedsShepp(q0, q1);
double dist = rho_ * path.length();
+ unsigned int i = 0;
+ while (i < 5
+ && (path.type_[i] == RS_NOP
+ || std::abs(path.length_[i]) < 0.1*step_size/rho_)) {
+ i++;
+ }
for (double seg=0.0; seg<=dist; seg+=step_size){
+ double done = 0.0;
+ for (unsigned int j = 0; j < i; j++) {
+ done += std::abs(path.length_[j]);
+ }
+ // 1e-3 is used when asserting parent != this in RRTNode::p method.
+ if (i < 5 && seg/rho_ >= (done + std::abs(path.length_[i])) - 1e-3*rho_) {
+ seg = (done + std::abs(path.length_[i])) * rho_;
+ i++;
+ while (i < 5
+ && (path.type_[i] == RS_NOP
+ || std::abs(path.length_[i]) < 0.1*step_size/rho_)) {
+ i++;
+ }
+ }
double qnew[5] = {};
interpolate(q0, path, seg/rho_, qnew);
cb( qnew, user_data);