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/>.
27 class LaValle1998: public RRTBase {
29 //using RRTBase::RRTBase;
30 LaValle1998(RRTNode *init, RRTNode *goal);
35 std::vector<RRTNode *> (&nodes)[IYSIZE],
37 std::vector<RRTNode *> &nodes,
40 float (*cost)(RRTNode *, RRTNode *));
42 std::vector<RRTNode *> (*steer)(
45 float (*cost)(RRTNode *init, RRTNode *goal);
49 class Kuwata2008: public RRTBase {
51 Kuwata2008(RRTNode *init, RRTNode *goal);
56 std::vector<RRTNode *> (&nodes)[IYSIZE],
58 std::vector<RRTNode *> &nodes,
61 float (*cost)(RRTNode *, RRTNode *));
63 std::vector<RRTNode *> (*steer)(
66 float (*cost)(RRTNode *init, RRTNode *goal);
70 class Karaman2011: public RRTBase {
75 std::vector<RRTNode *> nvs);
76 bool rewire(std::vector<RRTNode *> nvs, RRTNode *ns);
78 Karaman2011(RRTNode *init, RRTNode *goal);
83 std::vector<RRTNode *> (&nodes)[IYSIZE],
85 std::vector<RRTNode *> &nodes,
88 float (*cost)(RRTNode *, RRTNode *));
89 std::vector<RRTNode *> (*nv)(
91 std::vector<RRTNode *> (&nodes)[IYSIZE],
96 float (*cost)(RRTNode *, RRTNode *),
99 std::vector<RRTNode *> (*steer)(
102 float (*cost)(RRTNode *init, RRTNode *goal);
106 class T1: public RRTBase {
108 T1(RRTNode *init, RRTNode *goal);
113 std::vector<RRTNode *> (&nodes)[IYSIZE],
115 std::vector<RRTNode *> &nodes,
118 float (*cost)(RRTNode *, RRTNode *));
119 std::vector<RRTNode *> (*nv)(
121 std::vector<RRTNode *> (&nodes)[IYSIZE],
126 float (*cost)(RRTNode *, RRTNode *),
128 RRTNode *(*sample)();
129 std::vector<RRTNode *> (*steer)(
132 float (*cost)(RRTNode *init, RRTNode *goal);
136 class T2: public Karaman2011 {
138 using Karaman2011::Karaman2011;
143 bool opt_part(RRTNode *init, RRTNode *goal);