1 #ifndef PMPL_AVAILABLE_METHODS_H_
2 #define PMPL_AVAILABLE_METHODS_H_
4 #include <boost/preprocessor/seq.hpp>
5 #define BOOST_PP_SEQ_ENUM_0
8 #define CCS_CONNECTOR_AVAILABLE 1
9 #define NEIGHBOR_CONNECTOR_AVAILABLE 1
10 #define REWIRE_CONNECTOR_AVAILABLE 1
13 #define BIN_LP_SWEPT_AVAILABLE 1
14 #define LP_SWEPT_AVAILABLE 1
15 #define EUCLIDEAN_AVAILABLE 1
16 #define SCALED_EUCLIDEAN_AVAILABLE 0
17 #define WEIGHTED_EUCLIDEAN_AVAILABLE 1
18 #define MINKOWSKI_AVAILABLE 1
19 #define MANHATTAN_AVAILABLE 1
20 #define RMSD_AVAILABLE 1
21 #define TOPOLOGICAL_DISTANCE_AVAILABLE 1
22 #define WORKSPACE_TRANSLATION_AVAILABLE 1
25 #define INTERMEDIATES_EVC_AVAILABLE 1
28 #define BASIC_EXTENDER_AVAILABLE 1
29 #define ROTATION_THEN_TRANSLATION_AVAILABLE 1
32 #define STRAIGHT_LINE_AVAILABLE 1
33 #define HIERARCHICAL_LP_AVAILABLE 1
36 #define CBS_QUERY_AVAILABLE 1
37 #define CLEARANCE_QUERY_AVAILABLE 1
38 #define COLLISION_EVAL_AVAILABLE 1
39 #define COMPOSE_EVAL_AVAILABLE 1
40 #define CONDITIONAL_EVAL_AVAILABLE 1
41 #define GROUP_QUERY_AVAILABLE 1
42 #define LAZY_QUERY_AVAILABLE 1
43 #define MIN_DIST_EVAL_AVAILABLE 1
44 #define NEGATE_EVAL_AVAILABLE 1
45 #define PATH_EVAL_AVAILABLE 1
46 #define PRINT_MAP_AVAILABLE 1
47 #define QUERY_METHOD_AVAILABLE 1
48 #define SIPP_METHOD_AVAILABLE 1
49 #define TIME_EVAL_AVAILABLE 1
52 #define NUM_NODES_AVAILABLE 1
53 #define NUM_EDGES_AVAILABLE 1
54 #define TIME_METRIC_AVAILABLE 1
57 #define ADAPTIVE_RRT_AVAILABLE 1
58 #define BASIC_PRM_AVAILABLE 1
59 #define BASIC_RRT_AVAILABLE 1
60 #define DYNAMIC_DOMAIN_RRT_AVAILABLE 1
61 #define DYNAMIC_REGION_RRT_AVAILABLE 1
62 #define DYNAMIC_REGION_PRM_AVAILABLE 1
63 #define EET_AVAILABLE 1
64 #define GROUP_DECOUPLED_STRAT_AVAILABLE 1
65 #define GROUP_PRM_AVAILABLE 1
66 #define MODIFY_PATH_AVAILABLE 1
67 #define PATH_STRATEGY_AVAILABLE 0
68 #define SYCLOP_AVAILABLE 1
69 #define TOGGLE_PRM_AVAILABLE 1
70 #define WRENCH_ACCESS_STRAT_AVAILABLE 1
73 #define BRUTE_FORCE_NF_AVAILABLE 1
74 #define KDTREE_NF_AVAILABLE 1
75 #define RADIUS_NF_AVAILABLE 1
76 #define RANDOM_NF_AVAILABLE 1
79 #define SHORTCUTTING_AVAILABLE 1
82 #define BRIDGE_TEST_AVAILABLE 1
83 #define GAUSSIAN_AVAILABLE 1
84 #define MIX_SAMPLER_AVAILABLE 1
85 #define OBSTACLE_BASED_SAMPLER_AVAILABLE 1
86 #define UNIFORM_RANDOM_AVAILABLE 1
87 #define UNIFORM_OBSTACLE_AVAILABLE 0
90 #define ALWAYS_TRUE_AVAILABLE 1
91 #define COMPOSE_CD_AVAILABLE 1
92 #define COMPOSE_VC_AVAILABLE 1
93 #define NODE_CLEARANCE_VC_AVAILABLE 1
94 #define OBSTACLE_CLEARANCE_VC_AVAILABLE 1
95 #define TERRAIN_VC_AVAILABLE 1
96 #define TOPOLOGICAL_MAP_VC_AVAILABLE 1
99 #if CCS_CONNECTOR_AVAILABLE
102 #if NEIGHBOR_CONNECTOR_AVAILABLE
105 #if REWIRE_CONNECTOR_AVAILABLE
109 #define CONNECTOR_CLASSES \
110 ((CCsConnector, CCS_CONNECTOR_AVAILABLE))( \
111 (NeighborhoodConnector, NEIGHBOR_CONNECTOR_AVAILABLE))( \
112 (RewireConnector, REWIRE_CONNECTOR_AVAILABLE))
115 #if BIN_LP_SWEPT_AVAILABLE
118 #if LP_SWEPT_AVAILABLE
121 #if MINKOWSKI_AVAILABLE
124 #if EUCLIDEAN_AVAILABLE
127 #if SCALED_EUCLIDEAN_AVAILABLE
130 #if WEIGHTED_EUCLIDEAN_AVAILABLE
133 #if MANHATTAN_AVAILABLE
139 #if TOPOLOGICAL_DISTANCE_AVAILABLE
142 #if WORKSPACE_TRANSLATION_AVAILABLE
147 ((BinaryLPSweptDistance, BIN_LP_SWEPT_AVAILABLE))( \
148 (LPSweptDistance, LP_SWEPT_AVAILABLE))( \
149 (MinkowskiDistance, MINKOWSKI_AVAILABLE))( \
150 (EuclideanDistance, EUCLIDEAN_AVAILABLE))( \
151 (ScaledEuclideanDistance, SCALED_EUCLIDEAN_AVAILABLE))( \
152 (WeightedEuclideanDistance, WEIGHTED_EUCLIDEAN_AVAILABLE))( \
153 (ManhattanDistance, MANHATTAN_AVAILABLE))( \
154 (RMSDDistance, RMSD_AVAILABLE))( \
155 (TopologicalDistance, TOPOLOGICAL_DISTANCE_AVAILABLE))( \
156 (WorkspaceTranslationDistance, WORKSPACE_TRANSLATION_AVAILABLE))
159 #if INTERMEDIATES_EVC_AVAILABLE
163 #define EVC_CLASSES \
164 ((IntermediatesEdgeValidityChecker, INTERMEDIATES_EVC_AVAILABLE))
167 #if BASIC_EXTENDER_AVAILABLE
170 #if ROTATION_THEN_TRANSLATION_AVAILABLE
174 #define EXT_CLASSES \
175 ((BasicExtender, BASIC_EXTENDER_AVAILABLE))( \
176 (RotationThenTranslation, ROTATION_THEN_TRANSLATION_AVAILABLE))
180 #if STRAIGHT_LINE_AVAILABLE
183 #if HIERARCHICAL_LP_AVAILABLE
188 ((StraightLine, STRAIGHT_LINE_AVAILABLE))( \
189 (HierarchicalLP, HIERARCHICAL_LP_AVAILABLE))
193 #if CBS_QUERY_AVAILABLE
196 #if CLEARANCE_QUERY_AVAILABLE
199 #if CONDITIONAL_EVAL_AVAILABLE
202 #if COLLISION_EVAL_AVAILABLE
205 #if COMPOSE_EVAL_AVAILABLE
208 #if GROUP_QUERY_AVAILABLE
211 #if LAZY_QUERY_AVAILABLE
214 #if MIN_DIST_EVAL_AVAILABLE
217 #if NEGATE_EVAL_AVAILABLE
220 #if PATH_EVAL_AVAILABLE
223 #if PRINT_MAP_AVAILABLE
226 #if QUERY_METHOD_AVAILABLE
229 #if SIPP_METHOD_AVAILABLE
232 #if TIME_EVAL_AVAILABLE
237 ((CBSQuery, CBS_QUERY_AVAILABLE))( \
238 (ClearanceQuery, CLEARANCE_QUERY_AVAILABLE))( \
239 (CollisionEvaluator, COLLISION_EVAL_AVAILABLE))( \
240 (ComposeEvaluator, COMPOSE_EVAL_AVAILABLE))( \
241 (ConditionalEvaluator, CONDITIONAL_EVAL_AVAILABLE))( \
242 (GroupQuery, GROUP_QUERY_AVAILABLE))((LazyQuery, LAZY_QUERY_AVAILABLE))( \
243 (MinimumDistanceEvaluator, MIN_DIST_EVAL_AVAILABLE))( \
244 (NegateEvaluator, NEGATE_EVAL_AVAILABLE))( \
245 (PathEvaluator, PATH_EVAL_AVAILABLE))( \
246 (PrintMapEvaluation, PRINT_MAP_AVAILABLE))( \
247 (QueryMethod, QUERY_METHOD_AVAILABLE))( \
248 (SIPPMethod, SIPP_METHOD_AVAILABLE))( \
249 (TimeEvaluator, TIME_EVAL_AVAILABLE))
252 #if NUM_NODES_AVAILABLE
255 #if NUM_EDGES_AVAILABLE
258 #if TIME_METRIC_AVAILABLE
262 #define METRIC_CLASSES \
263 ((NumNodesMetric, NUM_NODES_AVAILABLE))( \
264 (NumEdgesMetric, NUM_EDGES_AVAILABLE))( \
265 (TimeMetric, TIME_METRIC_AVAILABLE))
268 #if ADAPTIVE_RRT_AVAILABLE
271 #if BASIC_PRM_AVAILABLE
274 #if BASIC_RRT_AVAILABLE
277 #if DYNAMIC_DOMAIN_RRT_AVAILABLE
280 #if DYNAMIC_REGION_RRT_AVAILABLE
283 #if DYNAMIC_REGION_PRM_AVAILABLE
289 #if GROUP_DECOUPLED_STRAT_AVAILABLE
292 #if GROUP_PRM_AVAILABLE
295 #if MODIFY_PATH_AVAILABLE
298 #if PATH_STRATEGY_AVAILABLE
304 #if TOGGLE_PRM_AVAILABLE
307 #if WRENCH_ACCESS_STRAT_AVAILABLE
311 #define MPSTRATEGY_CLASSES \
312 ((AdaptiveRRT, ADAPTIVE_RRT_AVAILABLE))((BasicPRM, BASIC_PRM_AVAILABLE))( \
313 (BasicRRTStrategy, BASIC_RRT_AVAILABLE))( \
314 (DynamicDomainRRT, DYNAMIC_DOMAIN_RRT_AVAILABLE))( \
315 (DynamicRegionRRT, DYNAMIC_REGION_RRT_AVAILABLE))(( \
316 DynamicRegionsPRM, DYNAMIC_REGION_PRM_AVAILABLE))((EET, EET_AVAILABLE))( \
317 (GroupDecoupledStrategy, GROUP_DECOUPLED_STRAT_AVAILABLE))( \
318 (GroupPRM, GROUP_PRM_AVAILABLE))((ModifyPath, MODIFY_PATH_AVAILABLE))( \
319 (PathStrategy, PATH_STRATEGY_AVAILABLE))((Syclop, SYCLOP_AVAILABLE))( \
320 (TogglePRMStrategy, TOGGLE_PRM_AVAILABLE))( \
321 (WrenchAccessibilityStrategy, WRENCH_ACCESS_STRAT_AVAILABLE))
324 #if BRUTE_FORCE_NF_AVAILABLE
327 #if KDTREE_NF_AVAILABLE
330 #if RADIUS_NF_AVAILABLE
333 #if RANDOM_NF_AVAILABLE
338 ((BruteForceNF, BRUTE_FORCE_NF_AVAILABLE))((KdTreeNF, KDTREE_NF_AVAILABLE))( \
339 (RandomNF, RANDOM_NF_AVAILABLE))((RadiusNF, RADIUS_NF_AVAILABLE))
342 #if SHORTCUTTING_AVAILABLE
346 #define PM_CLASSES ((ShortcuttingPathModifier, SHORTCUTTING_AVAILABLE))
349 #if BRIDGE_TEST_AVAILABLE
352 #if GAUSSIAN_AVAILABLE
355 #if MIX_SAMPLER_AVAILABLE
358 #if OBSTACLE_BASED_SAMPLER_AVAILABLE
361 #if UNIFORM_RANDOM_AVAILABLE
364 #if UNIFORM_OBSTACLE_AVAILABLE
368 #define SAMPLER_CLASSES \
369 ((BridgeTestSampler, BRIDGE_TEST_AVAILABLE))( \
370 (GaussianSampler, GAUSSIAN_AVAILABLE))( \
371 (MixSampler, MIX_SAMPLER_AVAILABLE))( \
372 (ObstacleBasedSampler, OBSTACLE_BASED_SAMPLER_AVAILABLE))( \
373 (UniformRandomSampler, UNIFORM_RANDOM_AVAILABLE))( \
374 (UniformObstacleBasedSampler, UNIFORM_OBSTACLE_AVAILABLE))
378 #if ALWAYS_TRUE_AVAILABLE
381 #if COMPOSE_CD_AVAILABLE
384 #if COMPOSE_VC_AVAILABLE
387 #if NODE_CLEARANCE_VC_AVAILABLE
390 #if OBSTACLE_CLEARANCE_VC_AVAILABLE
393 #if TERRAIN_VC_AVAILABLE
396 #if TOPOLOGICAL_MAP_VC_AVAILABLE
401 ((CollisionDetectionValidity, 1))( \
402 (AlwaysTrueValidity, ALWAYS_TRUE_AVAILABLE))( \
403 (ComposeCollision, COMPOSE_CD_AVAILABLE))( \
404 (ComposeValidity, COMPOSE_VC_AVAILABLE))( \
405 (NodeClearanceValidity, NODE_CLEARANCE_VC_AVAILABLE))( \
406 (ObstacleClearanceValidity, OBSTACLE_CLEARANCE_VC_AVAILABLE))( \
407 (TerrainValidityChecker, TERRAIN_VC_AVAILABLE))( \
408 (TopologicalMapValidity, TOPOLOGICAL_MAP_VC_AVAILABLE))
412 #define ADD_CLASS_IF_AVAILABLE(r, data, elem) \
413 BOOST_PP_IF(BOOST_PP_TUPLE_ELEM(2, 1, elem), \
414 (BOOST_PP_TUPLE_ELEM(2, 0, elem)), BOOST_PP_EMPTY())
417 BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, CONNECTOR_CLASSES)
418 #define DM_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, DM_CLASSES)
419 #define EXT_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, EXT_CLASSES)
420 #define EVC_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, EVC_CLASSES)
421 #define LP_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, LP_CLASSES)
422 #define ME_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, ME_CLASSES)
424 BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, METRIC_CLASSES)
425 #define MPSTRATEGY_SEQ \
426 BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, MPSTRATEGY_CLASSES)
427 #define NF_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, NF_CLASSES)
428 #define PM_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, PM_CLASSES)
429 #define SAMPLER_SEQ \
430 BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, SAMPLER_CLASSES)
431 #define VC_SEQ BOOST_PP_SEQ_FOR_EACH(ADD_CLASS_IF_AVAILABLE, _, VC_CLASSES)
445 typedef boost::mpl::list<BOOST_PP_SEQ_ENUM(
NF_SEQ)>
461 typedef boost::mpl::list<BOOST_PP_SEQ_ENUM(
EVC_SEQ)>
#define LP_SEQ
Definition: Methods.h:421
#define EXT_SEQ
Definition: Methods.h:419
#define METRIC_SEQ
Definition: Methods.h:423
#define MPSTRATEGY_SEQ
Definition: Methods.h:425
#define VC_SEQ
Definition: Methods.h:431
#define EVC_SEQ
Definition: Methods.h:420
#define PM_SEQ
Definition: Methods.h:428
#define CONN_SEQ
Definition: Methods.h:416
#define SAMPLER_SEQ
Definition: Methods.h:429
#define DM_SEQ
Definition: Methods.h:418
#define NF_SEQ
Definition: Methods.h:427
#define ME_SEQ
Definition: Methods.h:422
Defines available methods in the Motion Planning Universe.
Definition: Methods.h:437
boost::mpl::list< BOOST_PP_SEQ_ENUM(ME_SEQ)> MapEvaluatorMethodList
Definition: Methods.h:471
boost::mpl::list< BOOST_PP_SEQ_ENUM(EXT_SEQ)> ExtenderMethodList
Definition: Methods.h:455
boost::mpl::list< BOOST_PP_SEQ_ENUM(PM_SEQ)> PathModifierMethodList
Definition: Methods.h:458
boost::mpl::list< BOOST_PP_SEQ_ENUM(VC_SEQ)> ValidityCheckerMethodList
Definition: Methods.h:442
boost::mpl::list< BOOST_PP_SEQ_ENUM(METRIC_SEQ)> MetricMethodList
Definition: Methods.h:468
boost::mpl::list< BOOST_PP_SEQ_ENUM(LP_SEQ)> LocalPlannerMethodList
Definition: Methods.h:452
boost::mpl::list< BOOST_PP_SEQ_ENUM(MPSTRATEGY_SEQ)> MPStrategyMethodList
Definition: Methods.h:475
boost::mpl::list< BOOST_PP_SEQ_ENUM(DM_SEQ)> DistanceMetricMethodList
Definition: Methods.h:439
boost::mpl::list< BOOST_PP_SEQ_ENUM(EVC_SEQ)> EdgeValidityCheckerMethodList
Definition: Methods.h:462
boost::mpl::list< BOOST_PP_SEQ_ENUM(CONN_SEQ)> ConnectorMethodList
Definition: Methods.h:465
boost::mpl::list< BOOST_PP_SEQ_ENUM(SAMPLER_SEQ)> SamplerMethodList
Definition: Methods.h:449
boost::mpl::list< BOOST_PP_SEQ_ENUM(NF_SEQ)> NeighborhoodFinderMethodList
Definition: Methods.h:446