Loading...
Searching...
No Matches
Path.h
1/*********************************************************************
2* Software License Agreement (BSD License)
3*
4* Copyright (c) 2008, Willow Garage, Inc.
5* All rights reserved.
6*
7* Redistribution and use in source and binary forms, with or without
8* modification, are permitted provided that the following conditions
9* are met:
10*
11* * Redistributions of source code must retain the above copyright
12* notice, this list of conditions and the following disclaimer.
13* * Redistributions in binary form must reproduce the above
14* copyright notice, this list of conditions and the following
15* disclaimer in the documentation and/or other materials provided
16* with the distribution.
17* * Neither the name of the Willow Garage nor the names of its
18* contributors may be used to endorse or promote products derived
19* from this software without specific prior written permission.
20*
21* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32* POSSIBILITY OF SUCH DAMAGE.
33*********************************************************************/
34
35/* Author: Ioan Sucan */
36
37#ifndef OMPL_BASE_PATH_
38#define OMPL_BASE_PATH_
39
40#include "ompl/util/ClassForward.h"
41#include "ompl/base/Cost.h"
42#include <iostream>
43#include <boost/concept_check.hpp>
44#include <utility>
45
46namespace ompl
47{
48 namespace base
49 {
51 OMPL_CLASS_FORWARD(SpaceInformation);
53
55 OMPL_CLASS_FORWARD(OptimizationObjective);
57
59
60 OMPL_CLASS_FORWARD(Path);
62
65
67 class Path
68 {
69 public:
70 // non-copyable
71 Path(const Path &) = delete;
72 Path &operator=(const Path &) = delete;
73
76 {
77 }
78
80 virtual ~Path() = default;
81
84 {
85 return si_;
86 }
87
89 template <class T>
90 const T *as() const
91 {
93 BOOST_CONCEPT_ASSERT((boost::Convertible<T *, Path *>));
94
95 return static_cast<const T *>(this);
96 }
97
99 template <class T>
100 T *as()
101 {
103 BOOST_CONCEPT_ASSERT((boost::Convertible<T *, Path *>));
104
105 return static_cast<T *>(this);
106 }
107
109 virtual double length() const = 0;
110
113 virtual Cost cost(const OptimizationObjectivePtr &obj) const = 0;
114
116 virtual bool check() const = 0;
117
119 virtual void print(std::ostream &out) const = 0;
120
121 protected:
124 };
125 }
126}
127
128#endif
Definition of a cost value. Can represent the cost of a motion or the cost of a state.
Definition Cost.h:48
A shared pointer wrapper for ompl::base::OptimizationObjective.
Abstract definition of optimization objectives.
Abstract definition of a path.
Definition Path.h:68
T * as()
Cast this instance to a desired type.
Definition Path.h:100
virtual void print(std::ostream &out) const =0
Print the path to a stream.
Path(SpaceInformationPtr si)
Constructor. A path must always know the space information it is part of.
Definition Path.h:75
virtual bool check() const =0
Check if the path is valid.
const T * as() const
Cast this instance to a desired type.
Definition Path.h:90
SpaceInformationPtr si_
The space information this path is part of.
Definition Path.h:123
virtual Cost cost(const OptimizationObjectivePtr &obj) const =0
Return the cost of the path with respect to a specified optimization objective.
virtual ~Path()=default
Destructor.
const SpaceInformationPtr & getSpaceInformation() const
Get the space information associated to this class.
Definition Path.h:83
virtual double length() const =0
Return the length of a path.
A shared pointer wrapper for ompl::base::SpaceInformation.
The base class for space information. This contains all the information about the space planning is d...
This namespace contains sampling based planning routines shared by both planning under geometric cons...
Main namespace. Contains everything in this library.
STL namespace.