Aikido
World.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_PLANNER_WORLD_HPP_
2 #define AIKIDO_PLANNER_WORLD_HPP_
3 
4 #include <string>
5 #include <unordered_map>
6 
7 #include <dart/dart.hpp>
8 
10 
11 namespace aikido {
12 namespace planner {
13 
15 
16 class World
19 {
20 public:
21  // Encapsulates the state of the World.
22  struct State
23  {
24  std::unordered_map<std::string, dart::dynamics::Skeleton::Configuration>
26 
31  bool operator==(const State& other) const;
32 
36  bool operator!=(const State& other) const;
37  };
38 
41  explicit World(const std::string& name = "");
42 
43  virtual ~World();
44 
47  static std::unique_ptr<World> create(const std::string& name = "");
48 
51  std::unique_ptr<World> clone(const std::string& newName = "") const;
52 
55  std::string setName(const std::string& newName);
56 
58  const std::string& getName() const;
59 
62  dart::dynamics::SkeletonPtr getSkeleton(std::size_t i) const;
63 
66  dart::dynamics::SkeletonPtr getSkeleton(const std::string& name) const;
67 
71  bool hasSkeleton(const dart::dynamics::SkeletonPtr& skel) const;
72 
74  std::size_t getNumSkeletons() const;
75 
78  std::string addSkeleton(const dart::dynamics::SkeletonPtr& skeleton);
79 
82  void removeSkeleton(const dart::dynamics::SkeletonPtr& skeleton);
83 
84  // TODO: Add methods for registering callbacks?
85 
87  std::mutex& getMutex() const;
88 
91  World::State getState() const;
92 
96  World::State getState(const std::vector<std::string>& names) const;
97 
101  void setState(const World::State& state);
102 
107  void setState(
108  const World::State& state, const std::vector<std::string>& names);
109 
110 protected:
112  std::string mName;
113 
115  std::vector<dart::dynamics::SkeletonPtr> mSkeletons;
116 
118  mutable std::mutex mMutex;
119 
121  static dart::common::NameManager<World*> mWorldNameManager;
122 
124  dart::common::NameManager<dart::dynamics::SkeletonPtr> mSkeletonNameManager;
125 };
126 
127 } // namespace planner
128 } // namespace aikido
129 
130 #endif // AIKIDO_PLANNER_WORLD_HPP_
aikido::planner::World::removeSkeleton
void removeSkeleton(const dart::dynamics::SkeletonPtr &skeleton)
Remove a Skeleton from this World.
aikido::planner::World::State::operator==
bool operator==(const State &other) const
Returns true if two world states have the same skeletons with same configurations.
aikido::planner::World::mSkeletonNameManager
dart::common::NameManager< dart::dynamics::SkeletonPtr > mSkeletonNameManager
NameManager for keeping track of Skeletons.
Definition: World.hpp:124
aikido::planner::World::State::configurations
std::unordered_map< std::string, dart::dynamics::Skeleton::Configuration > configurations
Definition: World.hpp:25
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::planner::World::getState
World::State getState() const
Returns the state of this World.
aikido::planner::World::getMutex
std::mutex & getMutex() const
Get the mutex that protects the state of this World.
aikido::planner::World::State::operator!=
bool operator!=(const State &other) const
Returns true if two world states are not the same.
aikido::planner::World::setState
void setState(const World::State &state)
Sets the state of this World to match State.
aikido::planner::World::clone
std::unique_ptr< World > clone(const std::string &newName="") const
Create a clone of this World.
aikido::planner::World::mName
std::string mName
Name of this World.
Definition: World.hpp:112
aikido::planner::World::hasSkeleton
bool hasSkeleton(const dart::dynamics::SkeletonPtr &skel) const
Returns true if the Skeleton is in this World.
aikido::planner::World
A Kinematic world that contains a set of skeletons.
Definition: World.hpp:18
aikido::planner::World::getName
const std::string & getName() const
Get the name of this World.
aikido::planner::World::World
World(const std::string &name="")
Construct a kinematic World.
aikido::planner::World::mWorldNameManager
static dart::common::NameManager< World * > mWorldNameManager
NameManager for keeping track of Worlds.
Definition: World.hpp:121
aikido::planner::World::getNumSkeletons
std::size_t getNumSkeletons() const
Get the number of Skeletons.
aikido::planner::World::mMutex
std::mutex mMutex
Mutex to protect this World.
Definition: World.hpp:118
pointers.hpp
aikido::planner::World::addSkeleton
std::string addSkeleton(const dart::dynamics::SkeletonPtr &skeleton)
Add a Skeleton to this World.
aikido::planner::World::setName
std::string setName(const std::string &newName)
Set the name of this World.
aikido::planner::World::getSkeleton
dart::dynamics::SkeletonPtr getSkeleton(std::size_t i) const
Find a Skeleton by index.
aikido::planner::World::~World
virtual ~World()
aikido::planner::World::mSkeletons
std::vector< dart::dynamics::SkeletonPtr > mSkeletons
Skeletons in this World.
Definition: World.hpp:115
AIKIDO_DECLARE_POINTERS
#define AIKIDO_DECLARE_POINTERS(X)
Definition: pointers.hpp:21
aikido::planner::World::State
Definition: World.hpp:22
aikido::planner::World::create
static std::unique_ptr< World > create(const std::string &name="")
Create a new World ptr.