33 #ifndef EXAMPLES_ATLASSIMBICON_STATE_HPP_ 34 #define EXAMPLES_ATLASSIMBICON_STATE_HPP_ 40 #include <Eigen/Dense> 42 #include <dart/dart.hpp> 44 #define ATLAS_DEFAULT_KD 1.0 // No more than 1.0 45 #define ATLAS_DEFAULT_KP 1e+3 47 #define ATLAS_DEFAULT_SAGITAL_CD 0.1 48 #define ATLAS_DEFAULT_SAGITAL_CV 0.1 50 #define ATLAS_DEFAULT_CORONAL_CD 0.1 51 #define ATLAS_DEFAULT_CORONAL_CV 0.1 70 dart::dynamics::SkeletonPtr _skeleton,
const std::string& _name);
77 void setName(std::string& _name);
80 const std::string& getName()
const;
83 void setNextState(
State* _nextState);
89 State* getNextState()
const;
92 double getElapsedTime()
const;
96 void setDesiredJointPosition(
const std::string& _jointName,
double _val);
99 double getDesiredJointPosition(
int _idx)
const;
102 double getDesiredJointPosition(
const std::string& _jointName)
const;
105 void setDesiredSwingLegGlobalAngleOnSagital(
double _val);
108 void setDesiredSwingLegGlobalAngleOnCoronal(
double _val);
111 void setDesiredPelvisGlobalAngleOnSagital(
double _val);
114 void setDesiredPelvisGlobalAngleOnCoronal(
double _val);
117 void setProportionalGain(
int _idx,
double _val);
120 void setProportionalGain(
const std::string& _jointName,
double _val);
123 double getProportionalGain(
int _idx)
const;
126 double getProportionalGain(
const std::string& _jointName)
const;
129 void setDerivativeGain(
int _idx,
double _val);
132 void setDerivativeGain(
const std::string& _jointName,
double _val);
135 double getDerivativeGain(
int _idx)
const;
141 void setFeedbackSagitalCOMDistance(std::size_t _index,
double _val);
144 void setFeedbackSagitalCOMVelocity(std::size_t _index,
double _val);
147 void setFeedbackCoronalCOMDistance(std::size_t _index,
double _val);
150 void setFeedbackCoronalCOMVelocity(std::size_t _index,
double _val);
153 void setStanceFootToLeftFoot();
156 void setStanceFootToRightFoot();
161 virtual void begin(
double _currentTime);
164 virtual void computeControlForce(
double _timestep);
167 virtual bool isTerminalConditionSatisfied()
const;
171 virtual void end(
double _currentTime);
175 Eigen::Vector3d getCOM()
const;
178 Eigen::Vector3d getCOMVelocity()
const;
185 Eigen::Isometry3d getCOMFrame()
const;
188 double getSagitalCOMDistance();
191 double getSagitalCOMVelocity();
194 double getCoronalCOMDistance();
197 double getCoronalCOMVelocity();
200 Eigen::Vector3d getStanceAnklePosition()
const;
203 Eigen::Vector3d getLeftAnklePosition()
const;
206 Eigen::Vector3d getRightAnklePosition()
const;
210 double getSagitalPelvisAngle()
const;
214 double getCoronalPelvisAngle()
const;
217 double getSagitalLeftLegAngle()
const;
220 double getSagitalRightLegAngle()
const;
223 double getCoronalLeftLegAngle()
const;
226 double getCoronalRightLegAngle()
const;
296 double _getAngleBetweenTwoVectors(
297 const Eigen::Vector3d& _v1,
const Eigen::Vector3d& _v2)
const;
300 void _updateTorqueForStanceLeg();
321 std::size_t mCoronalLeftHip;
324 std::size_t mCoronalRightHip;
327 std::size_t mSagitalLeftHip;
330 std::size_t mSagitalRightHip;
333 Eigen::VectorXd mDesiredJointPositionsBalance;
336 #endif // EXAMPLES_ATLASSIMBICON_STATE_HPP_ Eigen::VectorXd mKp
Proportional gain for PD controller.
Definition: State.hpp:268
class TerminalCondition
Definition: TerminalCondition.hpp:47
std::map< const std::string, int > mJointMap
Joint map.
Definition: State.hpp:289
double mDesiredGlobalSwingLegAngleOnCoronal
Desired global angle of swing leg on coronal plane.
Definition: State.hpp:259
double mDesiredGlobalPelvisAngleOnCoronal
Desired global angle of pelvis on coronal plane.
Definition: State.hpp:265
double mElapsedTime
Elapsed time which is stopped time minus started time.
Definition: State.hpp:250
Eigen::VectorXd mKd
Derivative gain PD controller.
Definition: State.hpp:271
Eigen::VectorXd mSagitalCv
Feedback gain for velocity of com.
Definition: State.hpp:277
Definition: Aspect.cpp:40
std::string mName
Name.
Definition: State.hpp:229
dart::dynamics::SkeletonPtr mSkeleton
Target skeleton for control.
Definition: State.hpp:232
Eigen::VectorXd mSagitalCd
Feedback gain for com.
Definition: State.hpp:274
int mFrame
Frame number.
Definition: State.hpp:247
class State
Definition: State.hpp:65
Eigen::VectorXd mDesiredJointPositions
Desired joint positions.
Definition: State.hpp:253
Eigen::VectorXd mCoronalCd
Feedback gain for com.
Definition: State.hpp:280
BodyNode class represents a single node of the skeleton.
Definition: BodyNode.hpp:74
double mDesiredGlobalPelvisAngleOnSagital
Desired global angle of pelvis on sagital plane.
Definition: State.hpp:262
TerminalCondition * mTerminalCondition
Terminal condition.
Definition: State.hpp:238
State * mNextState
Next state. Default is myself.
Definition: State.hpp:235
double mDesiredGlobalSwingLegAngleOnSagital
Desired global angle of swing leg on sagital plane.
Definition: State.hpp:256
Eigen::VectorXd mCoronalCv
Feedback gain for velocity of com.
Definition: State.hpp:283
double mEndTime
Stopped time.
Definition: State.hpp:244
double mBeginTime
Started time.
Definition: State.hpp:241
Eigen::VectorXd mTorque
Computeed control force.
Definition: State.hpp:286