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>;
53 using DVec = Ice::DoubleSeq;
77 MP(
const MPConfig&
c);
78 virtual ~MP() =
default;
83 const std::string&
getRole()
const;
85 const arondto::MPGroup&
getGroup()
const;
91 void start(
const DVec& goals, Ice::Double timeDuration);
92 void start(
const DVec& goals,
const DVec& starts, Ice::Double timeDuration);
108 void learnFromCSV(
const Ice::StringSeq& fileNames = std::vector<std::string>());
110 void trainMPFromTraj(std::vector<mplib::core::SampledTrajectory>& trajs);
137 std::string
serialize(
const std::string& mode =
"string");
138 DVec deserialize(
const std::string&,
const std::string& mode =
"string");
150 resetVMPType(
const std::string& mpTypeString)
152 if (mpTypeString !=
"")
154 vmpType = mplib::representation::VMPType::_from_string_nocase(mpTypeString.c_str());
165 mplib::representation::VMPType
vmpType = mplib::representation::VMPType::PrincipalComponent;
std::vector< double > getStartVec()
std::atomic_bool stopRequested
double getCanonicalValue()
std::string getGroupName() const
void setDurationSec(Ice::Double timeDuration)
const std::string & getClassName() const
void setTranslationWeights(const DVecVec &weights)
virtual void run(MPInputPtr, MPOutputPtr, const PhaseStopResult &phaseStop)=0
void setStartAndGoal(const DVec &starts, const DVec &goals)
std::atomic_bool finished
const std::string & getNodeSetName() const
void setViaPoint(Ice::Double u, const DVec &viapoint)
virtual DVec validateViaPoint(const DVec &viapoint)
bool getStartFromPrevTarget()
std::vector< std::pair< double, DVec > > userDefinedViaPoints
void setWeight(const DVecVec &weights)
serialze
armarx::DateTime mpStartTimeSec
virtual void computePhaseStop(const MPInputPtr input, const MPOutputPtr output, PhaseStopResult &phaseStop)
bool isTaskSpaceMP() const
std::atomic_bool goalSetByUser
void setRotationWeights(const DVecVec &weights)
DVec deserialize(const std::string &, const std::string &mode="string")
std::string serialize(const std::string &mode="string")
std::vector< mplib::representation::MPState > currentState
const arondto::MPGroup & getGroup() const
std::atomic_bool mpTrained
Note: if mp is not trained, the dimension is not initialized, thus mp->getDim() is undefined,...
virtual void validateInitialState(const DVec &starts)
void trainMPFromTraj(std::vector< mplib::core::SampledTrajectory > &trajs)
void learnFromCSV(const Ice::StringSeq &fileNames=std::vector< std::string >())
setting
std::atomic_bool firstRun
const std::string & getMPName() const
void setStart(const DVec &starts)
const std::string & getRole() const
mplib::representation::VMPType vmpType
void setGoal(const DVec &goals)
void learnFromTraj(const MPTrajs &trajs=MPTrajs())
Represents a point in time.
This file is part of ArmarX.
std::vector< MPTraj > MPTrajs
std::lock_guard< std::recursive_mutex > LockGuardType
std::shared_ptr< MPInput > MPInputPtr
std::shared_ptr< mplib::representation::vmp::PrincipalComponentVMP > VMPPtr
std::shared_ptr< MPOutput > MPOutputPtr
std::recursive_mutex MutexType
std::shared_ptr< MP > MPPtr