#include "bcar.h"
#include "pslot.h"
+#define FORWARD_PARKING 1
+
/*! \brief Parking Slot Planner basic class.
\param cc Current bicycle car.
BicycleCar gc_;
ParkingSlot ps_;
+ unsigned int c_ = 0; // number of cusps
+ std::vector<BicycleCar> cusps_;
+
// find entry to slot
void fe_parallel();
void fe_perpendicular();
Set the goal car guessed from the parking slot.
*/
void guess_gc();
+ /*! \brief Return last maneuver to the parking slot.
+
+ Return path from entry point towards parking slot, such
+ that ``cc`` is inside the parking slot at the end.
+ */
+ std::vector<BicycleCar> last_maneuver();
/*! \brief Has current car `cc` left?
Return `true` if the current car `cc` left the parking
\param cnt Number of inits.
\param dist Distance between inits.
*/
- std::vector<BicycleCar> possible_inits(
+ std::vector<BicycleCar> possible_goals(
unsigned int cnt,
double dist
);
- std::vector<BicycleCar> possible_inits()
+ std::vector<BicycleCar> possible_goals()
{
- return this->possible_inits(10, 1);
+ return this->possible_goals(10, 0.5);
}
+ /*! \brief Shrink parking slot to perfect length.
+
+ Based on goal car dimensions, shrink `p1` and `p2`
+ towards the `p3` and `p4`. (Because backward parallel
+ parking).
+
+ NOTE: This function works for parallel parking only.
+ */
+ void shrink_to_perfect_len();
// find entry
/*! \brief Find entry to the parking slot.
BicycleCar &gc() { return this->gc_; }
ParkingSlot &ps() { return this->ps_; }
+ unsigned int c() const { return this->c_; }
+ std::vector<BicycleCar> &cusps() { return this->cusps_; }
+
PSPlanner();
};