dart
|
Implementation of Simbicon (Simple biped locomotion control) for Atlas robot. More...
#include <Controller.hpp>
Public Member Functions | |
Controller (dart::dynamics::SkeletonPtr _atlasRobot, dart::dynamics::ConstraintSolver *_collisionSolver) | |
Constructor. | |
virtual | ~Controller () |
Destructor. | |
virtual void | update () |
Called before every simulation time step in MyWindow class. More... | |
dart::dynamics::SkeletonPtr | getAtlasRobot () |
StateMachine * | getCurrentState () |
Get current state machine. | |
void | changeStateMachine (StateMachine *_stateMachine, double _currentTime) |
Change state to _stateMachine. | |
void | changeStateMachine (const std::string &_name, double _currentTime) |
Change state machine to a state machine whose names is _name. | |
void | changeStateMachine (std::size_t _idx, double _currentTime) |
Change state machine to a state machine whose index is _idx. | |
bool | isAllowingControl () const |
Get true iff this controller is currently allowing to control the Atlas robot. | |
void | keyboard (unsigned char _key, int _x, int _y, double _currentTime) |
Keyboard control. | |
void | printDebugInfo () const |
Print debug information. | |
void | harnessPelvis () |
Harness the robot. | |
void | unharnessPelvis () |
Unharness the robot. | |
void | harnessLeftFoot () |
Harness the robot. | |
void | unharnessLeftFoot () |
Harness the robot. | |
void | harnessRightFoot () |
Harness the robot. | |
void | unharnessRightFoot () |
Harness the robot. | |
void | resetRobot () |
Reset the robot. | |
void | setVerbosity (bool verbosity) |
Set the verbosity. | |
Controller (dart::dynamics::SkeletonPtr _atlasRobot, dart::dynamics::ConstraintSolver *_collisionSolver) | |
Constructor. | |
virtual | ~Controller () |
Destructor. | |
virtual void | update (double _currentTime) |
Called before every simulation time step in MyWindow class. More... | |
dart::dynamics::SkeletonPtr | getAtlasRobot () |
StateMachine * | getCurrentState () |
Get current state machine. | |
void | changeStateMachine (StateMachine *_stateMachine, double _currentTime) |
Change state to _stateMachine. | |
void | changeStateMachine (const std::string &_name, double _currentTime) |
Change state machine to a state machine whose names is _name. | |
void | changeStateMachine (std::size_t _idx, double _currentTime) |
Change state machine to a state machine whose index is _idx. | |
void | keyboard (unsigned char _key, int _x, int _y, double _currentTime) |
Keyboard control. | |
void | printDebugInfo () const |
Print debug information. | |
void | harnessPelvis () |
Harness the robot. | |
void | unharnessPelvis () |
Unharness the robot. | |
void | harnessLeftFoot () |
Harness the robot. | |
void | unharnessLeftFoot () |
Harness the robot. | |
void | harnessRightFoot () |
Harness the robot. | |
void | unharnessRightFoot () |
Harness the robot. | |
void | resetRobot () |
Reset the robot. | |
Controller (dart::dynamics::SkeletonPtr _skel, double _t) | |
Eigen::VectorXd | getTorques () |
double | getTorque (int _index) |
void | setDesiredDof (int _index, double _val) |
void | computeTorques () |
dart::dynamics::MetaSkeletonPtr | getSkel () |
Eigen::VectorXd | getDesiredDofs () |
Eigen::MatrixXd | getKp () |
Eigen::MatrixXd | getKd () |
Controller (const dart::dynamics::SkeletonPtr &_skel, dart::dynamics::ConstraintSolver *_collisionSolver, double _t) | |
Eigen::VectorXd | getTorques () |
double | getTorque (int _index) |
void | setDesiredDof (int _index, double _val) |
void | computeTorques (const Eigen::VectorXd &_dof, const Eigen::VectorXd &_dofVel) |
dart::dynamics::SkeletonPtr | getSkel () |
Eigen::VectorXd | getDesiredDofs () |
Eigen::MatrixXd | getKp () |
Eigen::MatrixXd | getKd () |
void | setConstrForces (const Eigen::VectorXd &_constrForce) |
Controller (dart::dynamics::SkeletonPtr _robot, dart::dynamics::BodyNode *_endEffector) | |
Constructor. | |
virtual | ~Controller () |
Destructor. | |
void | update (const Eigen::Vector3d &_targetPosition) |
dart::dynamics::SkeletonPtr | getRobot () const |
Get robot. | |
dart::dynamics::BodyNode * | getEndEffector () const |
Get end effector of the robot. | |
virtual void | keyboard (unsigned char _key, int _x, int _y) |
Keyboard control. | |
Controller (const SkeletonPtr &biped) | |
Constructor. | |
void | setTargetPositions (const Eigen::VectorXd &pose) |
Reset the desired dof position to the current position. | |
void | clearForces () |
Clear commanding forces. | |
void | addPDForces () |
Add commanding forces from PD controllers. | |
void | addSPDForces () |
Add commanind forces from Stable-PD controllers. | |
void | addAnkleStrategyForces () |
add commanding forces from ankle strategy | |
void | setWheelCommands () |
void | changeWheelSpeed (double increment) |
Controller (const SkeletonPtr &biped) | |
Constructor. | |
void | setTargetPositions (const Eigen::VectorXd &pose) |
Reset the desired dof position to the current position. | |
void | clearForces () |
Clear commanding forces. | |
void | addPDForces () |
Add commanding forces from PD controllers (Lesson 2 Answer) | |
void | addSPDForces () |
Add commanind forces from Stable-PD controllers (Lesson 3 Answer) | |
void | addAnkleStrategyForces () |
add commanding forces from ankle strategy (Lesson 4 Answer) | |
void | setWheelCommands () |
void | changeWheelSpeed (double increment) |
Controller (const SkeletonPtr &manipulator, const SkeletonPtr &) | |
void | setPDForces () |
Compute a stable PD controller that also compensates for gravity and Coriolis forces. | |
void | setOperationalSpaceForces () |
Compute an operational space controller to push on the first domino. | |
Controller (const SkeletonPtr &manipulator, const SkeletonPtr &domino) | |
void | setPDForces () |
Compute a stable PD controller that also compensates for gravity and Coriolis forces. | |
void | setOperationalSpaceForces () |
Compute an operational space controller to push on the first domino. | |
Protected Member Functions | |
bool | computeCoP (dart::dynamics::BodyNode *_node, Eigen::Vector3d *_cop) |
Eigen::Vector3d | evalLinMomentum (const Eigen::VectorXd &_dofVel) |
Eigen::Vector3d | evalAngMomentum (const Eigen::VectorXd &_dofVel) |
Eigen::VectorXd | adjustAngMomentum (Eigen::VectorXd _deltaMomentum, Eigen::VectorXd _controlledAxis) |
Protected Attributes | |
dart::dynamics::SkeletonPtr | mAtlasRobot |
Atlas robot skeleton. | |
dart::dynamics::ConstraintSolver * | mConstratinSolver |
Conllision detector. | |
std::vector< StateMachine * > | mStateMachines |
List of state machines. | |
StateMachine * | mCurrentStateMachine |
Current state machine. | |
bool | mPelvisHarnessOn |
Flag for pelvis harnessing. | |
bool | mLeftFootHarnessOn |
Flag for left foot harnessing. | |
bool | mRightFootHarnessOn |
Flag for right foot harnessing. | |
std::size_t | mCoronalLeftHip |
Index for coronal left hip. | |
std::size_t | mCoronalRightHip |
Index for coronal right hip. | |
std::size_t | mSagitalLeftHip |
Index for sagital left hip. | |
std::size_t | mSagitalRightHip |
Index for sagital right hip. | |
double | mMinPelvisHeight |
Lower bound for emergency stop. | |
double | mMaxPelvisHeight |
Upper bound for emergency stop. | |
dart::dynamics::MetaSkeletonPtr | mSkel |
dart::dynamics::BodyNodePtr | mLeftHeel |
Eigen::VectorXd | mTorques |
Eigen::VectorXd | mDesiredDofs |
Eigen::MatrixXd | mKp |
Control gains for the proportional error terms in the PD controller. | |
Eigen::MatrixXd | mKd |
Control gains for the derivative error terms in the PD controller. | |
std::size_t | mLeftFoot [2] |
std::size_t | mRightFoot [2] |
int | mFrame |
double | mTimestep |
double | mPreOffset |
For ankle strategy: Error in the previous timestep. | |
dart::dynamics::SkeletonPtr | mSkel |
dart::dynamics::ConstraintSolver * | mCollisionHandle |
Eigen::VectorXd | mConstrForces |
SkeletonPtr | mBiped |
The biped Skeleton that we will be controlling. | |
Eigen::VectorXd | mTargetPositions |
Target positions for the PD controllers. | |
double | mSpeed |
For velocity actuator: Current speed of the skateboard. | |
SkeletonPtr | mManipulator |
The manipulator Skeleton that we will be controlling. | |
SimpleFramePtr | mTarget |
The target pose for the controller. | |
BodyNodePtr | mEndEffector |
End effector for the manipulator. | |
Eigen::VectorXd | mQDesired |
Desired joint positions when not applying the operational space controller. | |
Eigen::Vector3d | mOffset |
The offset of the end effector from the body origin of the last BodyNode in the manipulator. | |
double | mKpPD |
Control gains for the proportional error terms in the PD controller. | |
double | mKdPD |
Control gains for the derivative error terms in the PD controller. | |
double | mKpOS |
Control gains for the proportional error terms in the operational space controller. | |
double | mKdOS |
Control gains for the derivative error terms in the operational space controller. | |
Implementation of Simbicon (Simple biped locomotion control) for Atlas robot.
Operational space controller for 6-dof manipulator.
SIMBICON for Atlas robot.
Reference: http://dl.acm.org/citation.cfm?id=1276509
|
virtual |
Called before every simulation time step in MyWindow class.
Compute control force and apply it to Atlas robot
|
virtual |
Called before every simulation time step in MyWindow class.
Compute control force and apply it to Atlas robot