24 #include <SimoxUtility/json.h>
28 #include <ArmarXCore/interface/core/BasicTypes.h>
29 #include <ArmarXCore/interface/serialization/Eigen.h>
31 #include <armarx/control/common/mp/aron/MPConfig.aron.generated.h>
33 #include <mplib/factories/AbstractMPFactory.h>
34 #include <mplib/factories/MPFactoryCreator.h>
35 #include <mplib/factories/VMPFactory.h>
36 #include <mplib/representation/vmp/PrincipalComponentVMP.h>
37 #include <mplib/representation/vmp/TaskSpacePrincipalComponentVMP.h>
38 #include <mplib/representation/vmp/VMP.h>
42 using namespace arondto;
43 using VMPPtr = std::shared_ptr<mplib::representation::vmp::PrincipalComponentVMP>;
47 using DVec = Ice::DoubleSeq;
71 MP(
const MPConfig&
c);
72 virtual ~
MP() =
default;
74 const std::string& getMPName()
const;
75 const std::string& getClassName()
const;
76 const std::string& getNodeSetName()
const;
77 const std::string& getRole()
const;
81 void start(
const DVec& goals);
84 void start(
const DVec& goals,
const DVec& starts);
97 void learnFromCSV(
const Ice::StringSeq& fileNames = std::vector<std::string>());
99 void trainMPFromTraj(std::vector<mplib::core::SampledTrajectory>& trajs);
103 void setGoal(
const DVec& goals);
104 void setStart(
const DVec& starts);
105 std::vector<double> getStartVec();
106 void setStartAndGoal(
const DVec& starts,
const DVec& goals);
108 void removeAllViaPoint();
109 bool getStartFromPrevTarget();
122 void setWeight(
const DVecVec& weights);
123 void setTranslationWeights(
const DVecVec& weights);
124 void setRotationWeights(
const DVecVec& weights);
126 std::string serialize(
const std::string& mode =
"string");
127 DVec deserialize(
const std::string&,
const std::string& mode =
"string");
130 double getCanonicalValue();
135 resetVMPType(
const std::string& mpTypeString)
137 if (mpTypeString !=
"")
139 vmpType = mplib::representation::VMPType::_from_string_nocase(mpTypeString.c_str());
146 bool isDisturbance =
false;
150 mplib::representation::VMPType vmpType = mplib::representation::VMPType::PrincipalComponent;
155 double canonicalValue = 1.0;
156 std::atomic_bool firstRun =
true;
158 std::atomic_bool goalSetByUser{
false};
161 std::atomic_bool mpTrained{
false};