void cusp(RRTNode const& p);
bool operator==(RRTNode const& n);
+
+ int segment_type = 0;
};
class RRTGoal : public virtual RRTNode, public virtual PoseRange {
double dist = rho_ * path.length();
for (double seg=0.0; seg<=dist; seg+=step_size){
- double qnew[4] = {};
+ double qnew[5] = {};
interpolate(q0, path, seg/rho_, qnew);
cb( qnew, user_data);
}
return;
}
-void ReedsSheppStateSpace::interpolate(double q0[3], ReedsSheppPath &path, double seg, double s[4])
+void ReedsSheppStateSpace::interpolate(double q0[3], ReedsSheppPath &path, double seg, double s[5])
{
if (seg < 0.0) seg = 0.0;
s[0] += ( sin(phi+v) - sin(phi));
s[1] += (-cos(phi+v) + cos(phi));
s[2] = phi + v;
+ s[4] = 1;
break;
case RS_RIGHT:
s[0] += (-sin(phi-v) + sin(phi));
s[1] += ( cos(phi-v) - cos(phi));
s[2] = phi - v;
+ s[4] = -1;
break;
case RS_STRAIGHT:
s[0] += (v * cos(phi));
s[1] += (v * sin(phi));
+ s[4] = 0;
break;
case RS_NOP:
break;
jvo["opath"][i][0] = n->x();
jvo["opath"][i][1] = n->y();
jvo["opath"][i][2] = n->h();
+ jvo["opath"][i][3] = n->sp();
i++;
}
jvo["ogoal_cc"] = this->ogoal_cc_;
jvo["path"][i][0] = n->x();
jvo["path"][i][1] = n->y();
jvo["path"][i][2] = n->h();
+ jvo["path"][i][3] = n->sp();
+ jvo["path"][i][4] = n->segment_type;
i++;
}
jvo["goal_cc"] = this->goal_.cc();