GCC Code Coverage Report


Directory: ./
File: include/hpp/core/path-planner/search-in-roadmap.hh
Date: 2024-12-13 16:14:03
Exec Total Coverage
Lines: 5 8 62.5%
Branches: 1 6 16.7%

Line Branch Exec Source
1 //
2 // Copyright (c) 2024 CNRS
3 // Authors: Florent Lamiraux
4 //
5
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are
8 // met:
9 //
10 // 1. Redistributions of source code must retain the above copyright
11 // notice, this list of conditions and the following disclaimer.
12 //
13 // 2. Redistributions in binary form must reproduce the above copyright
14 // notice, this list of conditions and the following disclaimer in the
15 // documentation and/or other materials provided with the distribution.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
28 // DAMAGE.
29
30 #ifndef HPP_CORE_PATH_PLANNER_SEARCH_IN_ROADMAP_HH
31 #define HPP_CORE_PATH_PLANNER_SEARCH_IN_ROADMAP_HH
32
33 #include <hpp/core/path-planner.hh>
34 #include <hpp/core/path-planning-failed.hh>
35
36 namespace hpp {
37 namespace core {
38 namespace pathPlanner {
39 HPP_PREDEF_CLASS(SearchInRoadmap);
40 typedef shared_ptr<SearchInRoadmap> SearchInRoadmapPtr_t;
41 /// \addtogroup path_planning
42 /// \{
43
44 /// Search in the roadmap without modifying it and without trying a direct
45 /// connection priorly
46 ///
47 /// This planner is especially useful in some applications where the roadmap is
48 /// constructed externally like in coverage planning. This planner will return a
49 /// path if one exists in the roadmap or throw otherwise.
50 ///
51 /// \note One shortcoming of this planner (as all other planners), if the
52 /// initial configuration is the same as a goal configuration, the planner will
53 /// return a path of length 0. This is not desirable in coverage planning
54 /// applications.
55 class SearchInRoadmap : public PathPlanner {
56 public:
57 1 static SearchInRoadmapPtr_t createWithRoadmap(
58 const ProblemConstPtr_t& problem, const RoadmapPtr_t& roadmap) {
59
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 return SearchInRoadmapPtr_t(new SearchInRoadmap(problem, roadmap));
60 }
61 /// This methods does nothing
62 1 virtual void tryConnectInitAndGoals() {}
63 /// This methods does nothing
64 virtual void oneStep() {
65 throw path_planning_failed(
66 "SearchInRoadmap: no goal configuration in the connected component"
67 "of initial configuration.");
68 }
69
70 protected:
71 SearchInRoadmap(const ProblemConstPtr_t& problem)
72 : core::PathPlanner(problem) {}
73 1 SearchInRoadmap(const ProblemConstPtr_t& problem, const RoadmapPtr_t& roadmap)
74 1 : PathPlanner(problem, roadmap) {}
75 }; /// class SearchInRoadmap
76
77 /// \}
78
79 } // namespace pathPlanner
80 } // namespace core
81 } // namespace hpp
82
83 #endif // HPP_CORE_PATH_PLANNER_SEARCH_IN_ROADMAP_HH
84