dart
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Controller Class Reference

Implementation of Simbicon (Simple biped locomotion control) for Atlas robot. More...

#include <Controller.hpp>

Collaboration diagram for Controller:
Collaboration graph
[legend]

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 ()
 
StateMachinegetCurrentState ()
 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 ()
 
StateMachinegetCurrentState ()
 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::BodyNodegetEndEffector () 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::ConstraintSolvermConstratinSolver
 Conllision detector.
 
std::vector< StateMachine * > mStateMachines
 List of state machines.
 
StateMachinemCurrentStateMachine
 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::ConstraintSolvermCollisionHandle
 
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.
 

Detailed Description

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

Member Function Documentation

◆ update() [1/2]

void Controller::update ( double  _currentTime)
virtual

Called before every simulation time step in MyWindow class.

Compute control force and apply it to Atlas robot

◆ update() [2/2]

void Controller::update ( )
virtual

Called before every simulation time step in MyWindow class.

Compute control force and apply it to Atlas robot


The documentation for this class was generated from the following files: