double _c = 0.0;
double _cc = 0.0;
RRTNode* _p = nullptr;
- unsigned int _cusp = 0;
+ unsigned int _cusp_cnt = 0;
int _segment_type = 0; // 0 ~ straight, 1 ~ left, -1 right
+ bool _p_is_cusp = false;
public:
/*! Get cost to parent. */
double c() const;
void p(RRTNode& p);
/*! Get number of backward-forward direction changes. */
- unsigned int cusp() const;
+ unsigned int cusp_cnt() const;
/*! Set number of backward-forward direction changes. */
- void cusp(RRTNode const& p);
+ void cusp_cnt(RRTNode const& p);
/*! \brief Get Reeds & Shepp segment type.
*
/*! Set Reeds & Shepp segment type. */
void st(int st);
+ /*! Return true if the parent is cusp node and false otherwise. */
+ bool p_is_cusp(void) const;
+
+ /*! Set if the parent node is cusp (direction changed from parent). */
+ void p_is_cusp(bool isit);
+
bool operator==(RRTNode const& n);
};
virtual void find_nv(RRTNode const& t);
virtual void compute_path();
protected:
+ /*! \brief Return nodes from f to t inclusive.
+ *
+ * The "inclusive" means that f is at the same pose (x, y, h) as
+ * this->_steered.front() and t is at the same pose (x, y, h) as
+ * this->_steered.back().
+ */
virtual void steer(RRTNode const& f, RRTNode const& t) = 0;
virtual bool collide_steered() = 0;
virtual RRTNode sample() = 0;
/*! Set pose of the bicycle car used in the planner. */
void set_bc_pose_to(Pose const& p);
+ /*! Set bicycle car dimensions. */
+ void set_bc_to_become(std::string what);
+
/*! Get goal. */
RRTGoal const& goal(void) const;
/*! Return elapsed time. */
double scnt() const;
- /*! Set start. */
- void start(double x, double y, double h);
+ /*! Set init pose. */
+ void set_init_pose_to(Pose const& p);
/*! Get path. */
std::vector<Pose> path() const;
/*! Set eta. */
void eta(double e);
-
+public:
/*! Generate JSON output. */
- Json::Value json() const;
+ virtual Json::Value json(void) const;
/*! Load JSON input. */
- void json(Json::Value jvi);
-public:
+ virtual void json(Json::Value jvi);
+
/*! Run next RRT* iteration. Return True if should continue. */
virtual bool next();