simple_neighbored_graph.h
Go to the documentation of this file.
1 // -*- mode: c++ -*-
2 /*********************************************************************
3  * Software License Agreement (BSD License)
4  *
5  * Copyright (c) 2015, JSK Lab
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/o2r other materials provided
17  * with the distribution.
18  * * Neither the name of the JSK Lab nor the names of its
19  * contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  *********************************************************************/
35 
36 
37 #ifndef JSK_FOOTSTEP_PLANNER_SIMPLE_NEIGHBORED_GRAPH_
38 #define JSK_FOOTSTEP_PLANNER_SIMPLE_NEIGHBORED_GRAPH_
39 
40 #include <string>
42 
43 namespace jsk_footstep_planner
44 {
46  {
47  public:
49 
50  SimpleNeighboredNode(const std::string& name): name_(name)
51  {
52 
53  }
54 
56  {
57  neighbors_.push_back(node);
58  }
59 
60  virtual
61  std::vector<SimpleNeighboredNode::Ptr>
63  {
64  return neighbors_;
65  }
66 
67  virtual std::string getName() { return name_; }
69  {
70  return name_ == other.getName();
71  }
72 
73  protected:
74  std::string name_;
75  std::vector<SimpleNeighboredNode::Ptr> neighbors_;
76  private:
77 
78  };
79 
80  class SimpleNeighboredGraph: public Graph<SimpleNeighboredNode>
81  {
82  public:
84 
86  virtual std::vector<SimpleNeighboredGraph::StatePtr> successors(
87  StatePtr target_state)
88  {
89  return target_state->getNeighbors();
90  }
91 
92  virtual double pathCost(StatePtr from, StatePtr to, double prev_cost)
93  {
94  return prev_cost + 1;
95  }
96 
97  virtual bool isGoal(StatePtr state)
98  {
99  return *goal_state_ == *state;
100  }
101 
102  virtual StatePtr
103  findNode(const std::string& name)
104  {
105  for (size_t i = 0; i < nodes_.size(); i++) {
106  StatePtr s = nodes_[i];
107  if (s->getName() == name) {
108  return s;
109  }
110  }
111  return StatePtr();
112  }
113 
114  protected:
115  private:
116 
117  };
118 }
119 
120 #endif
std::vector< SimpleNeighboredNode::Ptr > neighbors_
boost::shared_ptr< SimpleNeighboredGraph > Ptr
virtual void addNeighbor(SimpleNeighboredNode::Ptr node)
virtual StatePtr findNode(const std::string &name)
virtual std::vector< SimpleNeighboredNode::Ptr > getNeighbors()
virtual double pathCost(StatePtr from, StatePtr to, double prev_cost)
bool operator==(SimpleNeighboredNode &other)
virtual std::vector< SimpleNeighboredGraph::StatePtr > successors(StatePtr target_state)
boost::shared_ptr< SimpleNeighboredNode > Ptr


jsk_footstep_planner
Author(s): Ryohei Ueda
autogenerated on Fri May 14 2021 02:51:52