00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef OMPL_TOOLS_SPACES_STATE_SPACE_COLLECTION_
00038 #define OMPL_TOOLS_SPACES_STATE_SPACE_COLLECTION_
00039
00040 #include "ompl/base/StateSpace.h"
00041 #include "ompl/util/Console.h"
00042 #include <vector>
00043 #include <string>
00044
00045 namespace ompl
00046 {
00047
00053 class StateSpaceCollection
00054 {
00055 public:
00056
00057 StateSpaceCollection(void)
00058 {
00059 setAutomaticNames("+", "", "");
00060 }
00061
00062 ~StateSpaceCollection(void)
00063 {
00064 }
00065
00067 const std::string& getName(void) const;
00068
00070 void setName(const std::string &name);
00071
00073 void collect(const base::StateSpacePtr &space);
00074
00076 void collect(const std::vector<base::StateSpacePtr> &spaces);
00077
00079 const base::StateSpacePtr& getSpace(const std::string &name) const;
00080
00082 bool haveSpace(const std::string &name) const;
00083
00085 bool haveSpace(const base::StateSpacePtr &space) const;
00086
00093 const base::StateSpacePtr& combine(const std::vector<base::StateSpacePtr> &components);
00094
00104 const base::StateSpacePtr& combine(const std::vector<base::StateSpacePtr> &components,
00105 const std::vector<bool> &mask);
00106
00116 const base::StateSpacePtr& combine(const std::vector<base::StateSpacePtr> &components,
00117 const std::vector<bool> &mask, const std::vector<double> &weights);
00118
00125 const base::StateSpacePtr& combine(const std::vector<base::StateSpacePtr> &components,
00126 const std::vector<double> &weights);
00127
00132 std::vector<base::StateSpacePtr> allCombinations(const std::vector<base::StateSpacePtr> &components);
00133
00138 std::vector<base::StateSpacePtr> allCombinations(const std::vector<base::StateSpacePtr> &components, const std::vector<double> &weights);
00139
00146 void setAutomaticNames(const std::string &join, const std::string &prefix, const std::string &suffix);
00147
00148 private:
00149
00150 std::string name_;
00151 std::vector<base::StateSpacePtr> spaces_;
00152 std::string join_;
00153 std::string prefix_;
00154 std::string suffix_;
00155
00156 msg::Interface msg_;
00157 };
00158 }
00159
00160 #endif