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);
95 bool isStopRequested();
99 void learnFromCSV(
const Ice::StringSeq& fileNames = std::vector<std::string>());
101 void trainMPFromTraj(std::vector<mplib::core::SampledTrajectory>& trajs);
105 void setGoal(
const DVec& goals);
106 void setStart(
const DVec& starts);
107 std::vector<double> getStartVec();
108 void setStartAndGoal(
const DVec& starts,
const DVec& goals);
110 void removeAllViaPoint();
111 bool getStartFromPrevTarget();
124 void setWeight(
const DVecVec& weights);
125 void setTranslationWeights(
const DVecVec& weights);
126 void setRotationWeights(
const DVecVec& weights);
128 std::string serialize(
const std::string& mode =
"string");
129 DVec deserialize(
const std::string&,
const std::string& mode =
"string");
132 double getCanonicalValue();
137 resetVMPType(
const std::string& mpTypeString)
139 if (mpTypeString !=
"")
141 vmpType = mplib::representation::VMPType::_from_string_nocase(mpTypeString.c_str());
148 bool isDisturbance =
false;
152 mplib::representation::VMPType vmpType = mplib::representation::VMPType::PrincipalComponent;
157 std::atomic_bool stopRequested =
false;
158 double canonicalValue = 1.0;
159 std::atomic_bool firstRun =
true;
161 std::atomic_bool goalSetByUser{
false};
164 std::atomic_bool mpTrained{
false};