2 This file is part of I am car.
4 I am car is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 I am car is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with I am car. If not, see <http://www.gnu.org/licenses/>.
48 std::vector<std::vector<RRTNode *>> cusp_;
49 std::vector<RRTNode *> goals_;
50 PolygonObstacle slot_;
58 /** Get slot entry point */
59 std::vector<RRTNode *> &goals();
61 std::vector<std::vector<RRTNode *>> &cusp();
63 PolygonObstacle &slot();
73 /** BFS to _Find Init Pose_. */
75 std::vector<CircleObstacle>& co,
76 std::vector<SegmentObstacle>& so
79 std::vector<CircleObstacle>& co,
80 std::vector<SegmentObstacle>& so
81 ); // perpendicular forward parking
82 /** _Find Last Not Colliding_ BicycleCar pose
88 std::vector<CircleObstacle>& co,
89 std::vector<SegmentObstacle>& so
91 /** _Find Init Pose by Reverse_ approach, see Vorobieva2015
93 @param B Last pose of vehicle when it is parked.
95 void fipr(RRTNode *n);
96 void fipr(BicycleCar *B);
97 /** _Find Last Not Colliding for Reverse_ BicycleCar pose
101 BicycleCar *flncr(BicycleCar *B);
102 RRTNode *fposecenter();
103 /** Recursive function to find out the moves */
108 std::vector<RRTNode *> &cusp
110 /** Test possible init poses */
112 /** Return start pose for fip method */
114 /** Return center of rotation for start pose for fip method */
115 BicycleCar *getEPC();
116 /** Return start pose for fipr method */
118 BicycleCar *getFPf(); // parked forward, only for perpendicular
119 /** In slot perpendicular pose getter
121 This method returns a pose of perpendicular parking slot from
122 where it is possible to get out of the slot with full steer to
123 farther corner side (i.e. right corner for the RIGHT side).
125 @param B The pose to start from.
127 BicycleCar *getISPP(BicycleCar *B);
128 BicycleCar *getISPPf(BicycleCar *B); // perp. forward parking
129 /** Return true if car is inside slot */
130 bool isInside(BicycleCar *c);
131 /** Return values to set sampling function of RRT */
132 struct SamplingInfo getSamplingInfo();