]> rtime.felk.cvut.cz Git - hubacji1/rrts.git/blob - incl/rrtsp.hh
Add extension with dubins paths
[hubacji1/rrts.git] / incl / rrtsp.hh
1 /*
2  * SPDX-FileCopyrightText: 2021 Jiri Vlasak <jiri.vlasak.2@cvut.cz>
3  *
4  * SPDX-License-Identifier: GPL-3.0-only
5  */
6
7 /*! \brief RRT* planners.
8  *
9  * This file contains _to be used_ RRT* planners consisting of the RRT*
10  * extensions.
11  *
12  * RRT* planners have no implementation.
13  *
14  * \file
15  * \defgroup planners RRTS Planners
16  */
17 #ifndef RRTS_RRTSP_H
18 #define RRTS_RRTSP_H
19
20 #include "rrtext.hh"
21
22 namespace rrts {
23
24 /*! \brief Planner for F1/10.
25  *
26  * TODO: change RRTExt2 to cost grid
27  *
28  * \ingroup planners
29  */
30 class P40 : public RRTExt2, public RRTExt8, public RRTExt10, public RRTExt14,
31                 public RRTExt15, public RRTExt19, public RRTExt17,
32                 public RRTExt13 {
33 public:
34         Json::Value json() const
35         {
36                 auto jvo = RRTExt13::json();
37                 auto json15 = RRTExt15::json();
38                 jvo["log_path_cost"] = json15["log_path_cost"];
39                 return jvo;
40         }
41         void json(Json::Value jvi)
42         {
43                 RRTExt2::json(jvi);
44         }
45         void reset()
46         {
47                 RRTExt8::reset();
48                 RRTExt14::reset();
49                 RRTExt13::reset();
50         }
51 };
52
53 /*! \brief Planner with optimization and reset.
54  *
55  * \ingroup planners
56  */
57 class P39 : public RRTExt2, public RRTExt8, public RRTExt10, public RRTExt14,
58                 public RRTExt15, public RRTExt16, public RRTExt17,
59                 public RRTExt13 {
60 public:
61         Json::Value json() const
62         {
63                 auto jvo = RRTExt13::json();
64                 auto json15 = RRTExt15::json();
65                 jvo["log_path_cost"] = json15["log_path_cost"];
66                 return jvo;
67         }
68         void json(Json::Value jvi)
69         {
70                 RRTExt2::json(jvi);
71         }
72         void reset()
73         {
74                 RRTExt8::reset();
75                 RRTExt14::reset();
76                 RRTExt13::reset();
77         }
78 };
79
80 class P38 : public RRTExt2, public RRTExt8, public RRTExt10, public RRTExt14,
81                 public RRTExt15, public RRTExt16, public RRTExt18,
82                 public RRTExt13 {
83 public:
84         Json::Value json() const
85         {
86                 auto jvo = RRTExt13::json();
87                 auto json15 = RRTExt15::json();
88                 jvo["log_path_cost"] = json15["log_path_cost"];
89                 return jvo;
90         }
91         void json(Json::Value jvi)
92         {
93                 RRTExt2::json(jvi);
94         }
95         void reset()
96         {
97                 RRTExt8::reset();
98                 RRTExt14::reset();
99                 RRTExt13::reset();
100         }
101 };
102
103 class P37 : public RRTExt2, public RRTExt8, public RRTExt10, public RRTExt14,
104                 public RRTExt15, public RRTExt16, public RRTExt18 {
105 public:
106         Json::Value json() const
107         {
108                 return RRTExt15::json();
109         }
110         void json(Json::Value jvi)
111         {
112                 RRTExt2::json(jvi);
113         }
114         void reset()
115         {
116                 RRTExt8::reset();
117                 RRTExt14::reset();
118         }
119 };
120
121 class P36 : public RRTExt2, public RRTExt8, public RRTExt10, public RRTExt14,
122                 public RRTExt15, public RRTExt16, public RRTExt17 {
123 public:
124         Json::Value json() const
125         {
126                 return RRTExt15::json();
127         }
128         void json(Json::Value jvi)
129         {
130                 RRTExt2::json(jvi);
131         }
132         void reset()
133         {
134                 RRTExt8::reset();
135                 RRTExt14::reset();
136         }
137 };
138
139 } // namespace rrts
140 #endif /* RRTS_RRTSP_H */