#include <sobec/walk-with-traj/wbc_horizon.hpp>
Public Member Functions | |
WBCHorizon () | |
WBCHorizon (const WBCHorizonSettings &settings, const RobotDesigner &design, const HorizonManager &horizon, const Eigen::VectorXd &q0, const Eigen::VectorXd &v0, const std::string &actuationCostName) | |
void | initialize (const WBCHorizonSettings &settings, const RobotDesigner &design, const HorizonManager &horizon, const Eigen::VectorXd &q0, const Eigen::VectorXd &v0, const std::string &actuationCostName) |
void | updateSupportTiming () |
const Eigen::VectorXd & | shapeState (const Eigen::VectorXd &q, const Eigen::VectorXd &v) |
void | setForceAlongHorizon () |
std::vector< Support > | generateSupportCycle () |
void | generateFullHorizon (ModelMaker &mm, const Experiment &experiment) |
bool | timeToSolveDDP (int iteration) |
void | iterate (const Eigen::VectorXd &q_current, const Eigen::VectorXd &v_current, bool is_feasible) |
void | iterate (int iteration, const Eigen::VectorXd &q_current, const Eigen::VectorXd &v_current, bool is_feasible) |
void | iterateNoThinking (const Eigen::VectorXd &q_current, const Eigen::VectorXd &v_current, bool is_feasible) |
void | iterateNoThinking (int iteration, const Eigen::VectorXd &q_current, const Eigen::VectorXd &v_current, bool is_feasible) |
void | iterateNoThinkingWithDelay (const Eigen::VectorXd &q_current, const Eigen::VectorXd &v_current, bool contact_left, bool contact_right, bool is_feasible) |
void | recedeWithCycle () |
void | goToNextDoubleSupport () |
WBCHorizonSettings & | get_settings () |
const Eigen::VectorXd & | get_x0 () const |
void | set_x0 (const Eigen::VectorXd &x0) |
HorizonManager & | get_fullHorizon () |
void | set_fullHorizon (const HorizonManager &fullHorizon) |
HorizonManager & | get_horizon () |
void | set_horizon (const HorizonManager &horizon) |
RobotDesigner & | get_designer () |
void | set_designer (const RobotDesigner &designer) |
const std::vector< int > & | get_land_LF () |
const std::vector< int > & | get_land_RF () |
const std::vector< int > & | get_takeoff_LF () |
const std::vector< int > & | get_takeoff_RF () |
const int & | get_horizon_iteration () |
const std::vector< pinocchio::SE3 > & | getPoseRef_LF () |
const pinocchio::SE3 & | getPoseRef_LF (unsigned long time) |
void | setPoseRef_LF (const std::vector< pinocchio::SE3 > &ref_LF_poses) |
void | setPoseRef_LF (const pinocchio::SE3 &ref_LF_pose, unsigned long time) |
const std::vector< pinocchio::SE3 > & | getPoseRef_RF () |
const pinocchio::SE3 & | getPoseRef_RF (unsigned long time) |
void | setPoseRef_RF (const std::vector< pinocchio::SE3 > &ref_RF_poses) |
void | setPoseRef_RF (const pinocchio::SE3 &ref_RF_pose, unsigned long time) |
const eVector3 & | getCoMRef () |
void | setCoMRef (eVector3 ref_com) |
const Eigen::Matrix3d & | getBaseRotRef () |
void | setBaseRotRef (Eigen::Matrix3d ref_base_rotation) |
const eVector3 & | getVelRef_COM () |
void | setVelRef_COM (eVector3 ref_com_vel) |
bool | horizonEnd () |
std::vector< pinocchio::SE3 > & | ref_LF_poses () |
std::vector< pinocchio::SE3 > & | ref_RF_poses () |
eVector3 & | ref_com () |
Eigen::Matrix3d & | ref_base_rot () |
eVector3 & | ref_com_vel () |
Protected Member Functions | |
void | updateStepTrackerReferences () |
void | updateStepTrackerLastReference () |
void | updateNonThinkingReferences () |
Protected Attributes | |
WBCHorizonSettings | settings_ |
RobotDesigner | designer_ |
HorizonManager | horizon_ |
HorizonManager | fullHorizon_ |
eVector3 | ref_com_vel_ |
eVector3 | ref_com_ |
eVector3 | ref_dcm_ |
Eigen::Matrix3d | ref_base_rotation_ |
Eigen::VectorXd | x0_ |
int | horizon_iteration_ |
double | yaw_left_ |
double | yaw_right_ |
std::vector< int > | takeoff_RF_ |
std::vector< int > | takeoff_LF_ |
std::vector< int > | land_RF_ |
std::vector< int > | land_LF_ |
std::vector< pinocchio::SE3 > | ref_LF_poses_ |
std::vector< pinocchio::SE3 > | ref_RF_poses_ |
bool | initialized_ = false |
std::vector< unsigned long > | controlled_joints_id_ |
Eigen::VectorXd | x_internal_ |
bool | time_to_solve_ddp_ = false |
sobec::WBCHorizon::WBCHorizon | ( | ) |
sobec::WBCHorizon::WBCHorizon | ( | const WBCHorizonSettings & | settings, |
const RobotDesigner & | design, | ||
const HorizonManager & | horizon, | ||
const Eigen::VectorXd & | q0, | ||
const Eigen::VectorXd & | v0, | ||
const std::string & | actuationCostName | ||
) |
void sobec::WBCHorizon::generateFullHorizon | ( | ModelMaker & | mm, |
const Experiment & | experiment | ||
) |
std::vector< Support > sobec::WBCHorizon::generateSupportCycle | ( | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void sobec::WBCHorizon::goToNextDoubleSupport | ( | ) |
|
inline |
void sobec::WBCHorizon::initialize | ( | const WBCHorizonSettings & | settings, |
const RobotDesigner & | design, | ||
const HorizonManager & | horizon, | ||
const Eigen::VectorXd & | q0, | ||
const Eigen::VectorXd & | v0, | ||
const std::string & | actuationCostName | ||
) |
The posture required here is the full robot posture in the order of pinicchio
void sobec::WBCHorizon::iterate | ( | const Eigen::VectorXd & | q_current, |
const Eigen::VectorXd & | v_current, | ||
bool | is_feasible | ||
) |
void sobec::WBCHorizon::iterate | ( | int | iteration, |
const Eigen::VectorXd & | q_current, | ||
const Eigen::VectorXd & | v_current, | ||
bool | is_feasible | ||
) |
void sobec::WBCHorizon::iterateNoThinking | ( | const Eigen::VectorXd & | q_current, |
const Eigen::VectorXd & | v_current, | ||
bool | is_feasible | ||
) |
void sobec::WBCHorizon::iterateNoThinking | ( | int | iteration, |
const Eigen::VectorXd & | q_current, | ||
const Eigen::VectorXd & | v_current, | ||
bool | is_feasible | ||
) |
void sobec::WBCHorizon::iterateNoThinkingWithDelay | ( | const Eigen::VectorXd & | q_current, |
const Eigen::VectorXd & | v_current, | ||
bool | contact_left, | ||
bool | contact_right, | ||
bool | is_feasible | ||
) |
void sobec::WBCHorizon::recedeWithCycle | ( | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void sobec::WBCHorizon::setForceAlongHorizon | ( | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
const Eigen::VectorXd & sobec::WBCHorizon::shapeState | ( | const Eigen::VectorXd & | q, |
const Eigen::VectorXd & | v | ||
) |
bool sobec::WBCHorizon::timeToSolveDDP | ( | int | iteration | ) |
|
protected |
|
protected |
|
protected |
void sobec::WBCHorizon::updateSupportTiming | ( | ) |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Form to use this class: 1) The function iterate produces the torques to command. 2) All cost references must be updated separtely in the control loop.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |