Go to the documentation of this file.
32 #ifndef _ZMPREVIEWCONTROLWITHMULTIBODYZMP_H_
33 #define _ZMPREVIEWCONTROLWITHMULTIBODYZMP_H_
35 #include <MotionGeneration/ComAndFootRealization.hh>
37 #include <SimplePlugin.hh>
41 using namespace ::std;
73 Eigen::Vector3d m_StaticToTheLeftHip;
75 Eigen::Vector3d m_StaticToTheRightHip;
77 Eigen::Vector3d m_TranslationToTheLeftHip;
79 Eigen::Vector3d m_TranslationToTheRightHip;
85 double m_PreviewControlTime;
93 Eigen::MatrixXd Finalql;
95 Eigen::MatrixXd Finalqr;
99 deque<ZMPPosition> m_FIFOZMPRefPositions;
102 deque<ZMPPosition> m_FIFODeltaZMPPositions;
105 deque<COMState> m_FIFOCOMStates;
108 deque<FootAbsolutePosition> m_FIFOLeftFootPosition;
111 deque<FootAbsolutePosition> m_FIFORightFootPosition;
114 double m_sxzmp, m_syzmp;
117 double m_sxDeltazmp, m_syDeltazmp;
120 Eigen::MatrixXd m_PC1x;
121 Eigen::MatrixXd m_PC1y;
124 Eigen::MatrixXd m_Deltax;
125 Eigen::MatrixXd m_Deltay;
128 bool m_StartingNewSequence;
131 deque<ZMPPosition> m_FIFOTmpZMPPosition;
134 std::vector<COMState> m_ExtraCOMBuffer;
139 Eigen::Vector3d m_DiffBetweenComAndWaist;
142 Eigen::Vector3d m_StartingCOMState;
145 Eigen::Matrix4d m_FinalDesiredCOMPose;
148 double m_AnkleSoilDistance;
151 ComAndFootRealization *m_ComAndFootRealization;
157 unsigned long int m_NumberOfIterations;
166 double m_SamplingPeriod;
169 void RegisterMethods();
172 void SetSamplingPeriod(
double lSamplingPeriod);
175 void SetPreviewControlTime(
double lPreviewControlTime);
260 Eigen::VectorXd &CurrentConfiguration,
261 Eigen::VectorXd &CurrentVelocity,
262 Eigen::VectorXd &CurrentAcceleration);
321 Eigen::Vector3d &aStartingCOMState,
322 Eigen::Vector3d &aStartingZMPPosition,
323 Eigen::Matrix<double, 6, 1> &aStartingWaistPose,
341 Eigen::Vector3d &aStartingCOMState,
342 Eigen::VectorXd &aWaistPose,
363 int Setup(deque<ZMPPosition> &ZMPRefPositions, deque<COMState> &COMStates,
364 deque<FootAbsolutePosition> &LeftFootPositions,
365 deque<FootAbsolutePosition> &RightFootPositions);
381 deque<COMState> &COMStates,
382 deque<FootAbsolutePosition> &LeftFootPositions,
383 deque<FootAbsolutePosition> &RightFootPositions);
410 deque<COMState> &COMStates,
411 deque<FootAbsolutePosition> &LeftFootPositions,
412 deque<FootAbsolutePosition> &RightFootPositions,
413 Eigen::VectorXd &CurrentConfiguration,
414 Eigen::VectorXd &CurrentVelocity,
415 Eigen::VectorXd &CurrentAcceleration,
int localindex);
427 deque<ZMPPosition> &ExtraZMPBuffer,
428 deque<ZMPPosition> &ExtraZMPRefBuffer);
439 Eigen::Vector3d &aStartingCOMState,
440 Eigen::Matrix<double, 6, 1> &aStartingWaistPosition,
467 m_ComAndFootRealization = aCFR;
471 return m_ComAndFootRealization;
497 Eigen::VectorXd &CurrentVelocity, Eigen::VectorXd &CurrentAcceleration,
498 unsigned long int IterationNumber,
int StageOfTheAlgorithm);
507 m_PinocchioRobot = aPinocchioRobot;
522 void CallMethod(std::string &Method, std::istringstream &astrm);
int GetStrategyForPCStages()
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:709
int EvaluateStartingState(Eigen::VectorXd &BodyAngles, Eigen::Vector3d &aStartingCOMState, Eigen::Vector3d &aStartingZMPPosition, Eigen::Matrix< double, 6, 1 > &aStartingWaistPose, FootAbsolutePosition &InitLeftFootPosition, FootAbsolutePosition &InitRightFootPosition)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:674
void GetDifferenceBetweenComAndWaist(double lComAndWaist[3])
PinocchioRobot * getPinocchioRobot() const
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:513
Class to implement the preview control.
Definition: PreviewControl.hh:48
static const int ZMPCOM_TRAJECTORY_FIRST_STAGE_ONLY
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:189
int FirstStageOfControl(FootAbsolutePosition &LeftFootPosition, FootAbsolutePosition &RightFootPosition, COMState &afCOMState)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:328
~ZMPPreviewControlWithMultiBodyZMP()
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:92
bool setComAndFootRealization(ComAndFootRealization *aCFR)
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:466
int OneGlobalStepOfControl(FootAbsolutePosition &LeftFootPosition, FootAbsolutePosition &RightFootPosition, ZMPPosition &NewZMPRefPos, COMState &finalCOMState, Eigen::VectorXd &CurrentConfiguration, Eigen::VectorXd &CurrentVelocity, Eigen::VectorXd &CurrentAcceleration)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:179
int Setup(deque< ZMPPosition > &ZMPRefPositions, deque< COMState > &COMStates, deque< FootAbsolutePosition > &LeftFootPositions, deque< FootAbsolutePosition > &RightFootPositions)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:416
ZMPPreviewControlWithMultiBodyZMP(SimplePluginManager *lSPM)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:43
Definition: pgtypes.hh:118
void CallToComAndFootRealization(COMState &acomp, FootAbsolutePosition &aLeftFAP, FootAbsolutePosition &aRightFAP, Eigen::VectorXd &CurrentConfiguration, Eigen::VectorXd &CurrentVelocity, Eigen::VectorXd &CurrentAcceleration, unsigned long int IterationNumber, int StageOfTheAlgorithm)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:101
void SetStrategyForStageActivation(int anAlgo)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:635
static const int ZMPCOM_TRAJECTORY_SECOND_STAGE_ONLY
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:186
static const int ZMPCOM_TRAJECTORY_FULL
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:183
int GetStrategyForStageActivation()
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:653
int SecondStageOfControl(COMState &refandfinal)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:276
Eigen::Matrix4d GetCurrentPositionofWaistInCOMFrame()
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:659
int SetupFirstPhase(deque< ZMPPosition > &ZMPRefPositions, deque< COMState > &COMStates, deque< FootAbsolutePosition > &LeftFootPositions, deque< FootAbsolutePosition > &RightFootPositions)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:439
int EvaluateMultiBodyZMP(int StartingIteration)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:379
void CreateExtraCOMBuffer(deque< COMState > &ExtraCOMBuffer, deque< ZMPPosition > &ExtraZMPBuffer, deque< ZMPPosition > &ExtraZMPRefBuffer)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:559
COMState GetLastCOMFromFirstStage()
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:270
void UpdateTheZMPRefQueue(ZMPPosition NewZMPRefPos)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:630
void SetPreviewControl(PreviewControl *aPC)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:94
bool setPinocchioRobot(PinocchioRobot *aPinocchioRobot)
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:506
void SetStrategyForPCStages(int Strategy)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:705
ComAndFootRealization * getComAndFootRealization()
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:470
void CallMethod(std::string &Method, std::istringstream &astrm)
Overloading method of SimplePlugin.
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:744
int SetupIterativePhase(deque< ZMPPosition > &ZMPRefPositions, deque< COMState > &COMStates, deque< FootAbsolutePosition > &LeftFootPositions, deque< FootAbsolutePosition > &RightFootPositions, Eigen::VectorXd &CurrentConfiguration, Eigen::VectorXd &CurrentVelocity, Eigen::VectorXd &CurrentAcceleration, int localindex)
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:514
Definition: pinocchiorobot.hh:60
\doc Simulate a rigid body
Definition: patterngeneratorinterface.hh:41
Eigen::Matrix4d GetFinalDesiredCOMPose()
Definition: ZMPPreviewControlWithMultiBodyZMP.cpp:670
Structure to store the COM state computed by the preview control.
Definition: pgtypes.hh:75
int EvaluateStartingCoM(Eigen::MatrixXd BodyAngles, Eigen::Vector3d &aStartingCOMState, Eigen::VectorXd &aWaistPose, FootAbsolutePosition &InitLeftFootPosition, FootAbsolutePosition &InitRightFootPosition)
Definition: ZMPPreviewControlWithMultiBodyZMP.hh:68