sobec::WBCHorizon Class Reference

#include <sobec/walk-with-traj/wbc_horizon.hpp>

Collaboration diagram for sobec::WBCHorizon:

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< SupportgenerateSupportCycle ()
 
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 ()
 
WBCHorizonSettingsget_settings ()
 
const Eigen::VectorXd & get_x0 () const
 
void set_x0 (const Eigen::VectorXd &x0)
 
HorizonManagerget_fullHorizon ()
 
void set_fullHorizon (const HorizonManager &fullHorizon)
 
HorizonManagerget_horizon ()
 
void set_horizon (const HorizonManager &horizon)
 
RobotDesignerget_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 eVector3getCoMRef ()
 
void setCoMRef (eVector3 ref_com)
 
const Eigen::Matrix3d & getBaseRotRef ()
 
void setBaseRotRef (Eigen::Matrix3d ref_base_rotation)
 
const eVector3getVelRef_COM ()
 
void setVelRef_COM (eVector3 ref_com_vel)
 
bool horizonEnd ()
 
std::vector< pinocchio::SE3 > & ref_LF_poses ()
 
std::vector< pinocchio::SE3 > & ref_RF_poses ()
 
eVector3ref_com ()
 
Eigen::Matrix3d & ref_base_rot ()
 
eVector3ref_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
 

Constructor & Destructor Documentation

◆ WBCHorizon() [1/2]

sobec::WBCHorizon::WBCHorizon ( )

◆ WBCHorizon() [2/2]

sobec::WBCHorizon::WBCHorizon ( const WBCHorizonSettings settings,
const RobotDesigner design,
const HorizonManager horizon,
const Eigen::VectorXd &  q0,
const Eigen::VectorXd &  v0,
const std::string &  actuationCostName 
)

Member Function Documentation

◆ generateFullHorizon()

void sobec::WBCHorizon::generateFullHorizon ( ModelMaker mm,
const Experiment experiment 
)

◆ generateSupportCycle()

std::vector< Support > sobec::WBCHorizon::generateSupportCycle ( )

◆ get_designer()

RobotDesigner& sobec::WBCHorizon::get_designer ( )
inline

◆ get_fullHorizon()

HorizonManager& sobec::WBCHorizon::get_fullHorizon ( )
inline

◆ get_horizon()

HorizonManager& sobec::WBCHorizon::get_horizon ( )
inline

◆ get_horizon_iteration()

const int& sobec::WBCHorizon::get_horizon_iteration ( )
inline

◆ get_land_LF()

const std::vector<int>& sobec::WBCHorizon::get_land_LF ( )
inline

◆ get_land_RF()

const std::vector<int>& sobec::WBCHorizon::get_land_RF ( )
inline

◆ get_settings()

WBCHorizonSettings& sobec::WBCHorizon::get_settings ( )
inline

◆ get_takeoff_LF()

const std::vector<int>& sobec::WBCHorizon::get_takeoff_LF ( )
inline

◆ get_takeoff_RF()

const std::vector<int>& sobec::WBCHorizon::get_takeoff_RF ( )
inline

◆ get_x0()

const Eigen::VectorXd& sobec::WBCHorizon::get_x0 ( ) const
inline

◆ getBaseRotRef()

const Eigen::Matrix3d& sobec::WBCHorizon::getBaseRotRef ( )
inline

◆ getCoMRef()

const eVector3& sobec::WBCHorizon::getCoMRef ( )
inline

◆ getPoseRef_LF() [1/2]

const std::vector<pinocchio::SE3>& sobec::WBCHorizon::getPoseRef_LF ( )
inline

◆ getPoseRef_LF() [2/2]

const pinocchio::SE3& sobec::WBCHorizon::getPoseRef_LF ( unsigned long  time)
inline

◆ getPoseRef_RF() [1/2]

const std::vector<pinocchio::SE3>& sobec::WBCHorizon::getPoseRef_RF ( )
inline

◆ getPoseRef_RF() [2/2]

const pinocchio::SE3& sobec::WBCHorizon::getPoseRef_RF ( unsigned long  time)
inline

◆ getVelRef_COM()

const eVector3& sobec::WBCHorizon::getVelRef_COM ( )
inline

◆ goToNextDoubleSupport()

void sobec::WBCHorizon::goToNextDoubleSupport ( )

◆ horizonEnd()

bool sobec::WBCHorizon::horizonEnd ( )
inline

◆ initialize()

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

Todo:
: Remove this from the initialization and provide it as a method.

◆ iterate() [1/2]

void sobec::WBCHorizon::iterate ( const Eigen::VectorXd &  q_current,
const Eigen::VectorXd &  v_current,
bool  is_feasible 
)

◆ iterate() [2/2]

void sobec::WBCHorizon::iterate ( int  iteration,
const Eigen::VectorXd &  q_current,
const Eigen::VectorXd &  v_current,
bool  is_feasible 
)

◆ iterateNoThinking() [1/2]

void sobec::WBCHorizon::iterateNoThinking ( const Eigen::VectorXd &  q_current,
const Eigen::VectorXd &  v_current,
bool  is_feasible 
)

◆ iterateNoThinking() [2/2]

void sobec::WBCHorizon::iterateNoThinking ( int  iteration,
const Eigen::VectorXd &  q_current,
const Eigen::VectorXd &  v_current,
bool  is_feasible 
)

◆ iterateNoThinkingWithDelay()

void sobec::WBCHorizon::iterateNoThinkingWithDelay ( const Eigen::VectorXd &  q_current,
const Eigen::VectorXd &  v_current,
bool  contact_left,
bool  contact_right,
bool  is_feasible 
)

◆ recedeWithCycle()

void sobec::WBCHorizon::recedeWithCycle ( )

◆ ref_base_rot()

Eigen::Matrix3d& sobec::WBCHorizon::ref_base_rot ( )
inline

◆ ref_com()

eVector3& sobec::WBCHorizon::ref_com ( )
inline

◆ ref_com_vel()

eVector3& sobec::WBCHorizon::ref_com_vel ( )
inline

◆ ref_LF_poses()

std::vector<pinocchio::SE3>& sobec::WBCHorizon::ref_LF_poses ( )
inline

◆ ref_RF_poses()

std::vector<pinocchio::SE3>& sobec::WBCHorizon::ref_RF_poses ( )
inline

◆ set_designer()

void sobec::WBCHorizon::set_designer ( const RobotDesigner designer)
inline

◆ set_fullHorizon()

void sobec::WBCHorizon::set_fullHorizon ( const HorizonManager fullHorizon)
inline

◆ set_horizon()

void sobec::WBCHorizon::set_horizon ( const HorizonManager horizon)
inline

◆ set_x0()

void sobec::WBCHorizon::set_x0 ( const Eigen::VectorXd &  x0)
inline

◆ setBaseRotRef()

void sobec::WBCHorizon::setBaseRotRef ( Eigen::Matrix3d  ref_base_rotation)
inline

◆ setCoMRef()

void sobec::WBCHorizon::setCoMRef ( eVector3  ref_com)
inline

◆ setForceAlongHorizon()

void sobec::WBCHorizon::setForceAlongHorizon ( )

◆ setPoseRef_LF() [1/2]

void sobec::WBCHorizon::setPoseRef_LF ( const pinocchio::SE3 &  ref_LF_pose,
unsigned long  time 
)
inline

◆ setPoseRef_LF() [2/2]

void sobec::WBCHorizon::setPoseRef_LF ( const std::vector< pinocchio::SE3 > &  ref_LF_poses)
inline

◆ setPoseRef_RF() [1/2]

void sobec::WBCHorizon::setPoseRef_RF ( const pinocchio::SE3 &  ref_RF_pose,
unsigned long  time 
)
inline

◆ setPoseRef_RF() [2/2]

void sobec::WBCHorizon::setPoseRef_RF ( const std::vector< pinocchio::SE3 > &  ref_RF_poses)
inline

◆ setVelRef_COM()

void sobec::WBCHorizon::setVelRef_COM ( eVector3  ref_com_vel)
inline

◆ shapeState()

const Eigen::VectorXd & sobec::WBCHorizon::shapeState ( const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)

◆ timeToSolveDDP()

bool sobec::WBCHorizon::timeToSolveDDP ( int  iteration)

◆ updateNonThinkingReferences()

void sobec::WBCHorizon::updateNonThinkingReferences ( )
protected

◆ updateStepTrackerLastReference()

void sobec::WBCHorizon::updateStepTrackerLastReference ( )
protected

◆ updateStepTrackerReferences()

void sobec::WBCHorizon::updateStepTrackerReferences ( )
protected
Todo:
: the names must be provided by the user

◆ updateSupportTiming()

void sobec::WBCHorizon::updateSupportTiming ( )

Member Data Documentation

◆ controlled_joints_id_

std::vector<unsigned long> sobec::WBCHorizon::controlled_joints_id_
protected

◆ designer_

RobotDesigner sobec::WBCHorizon::designer_
protected

◆ fullHorizon_

HorizonManager sobec::WBCHorizon::fullHorizon_
protected

◆ horizon_

HorizonManager sobec::WBCHorizon::horizon_
protected

◆ horizon_iteration_

int sobec::WBCHorizon::horizon_iteration_
protected

◆ initialized_

bool sobec::WBCHorizon::initialized_ = false
protected

◆ land_LF_

std::vector<int> sobec::WBCHorizon::land_LF_
protected

◆ land_RF_

std::vector<int> sobec::WBCHorizon::land_RF_
protected

◆ ref_base_rotation_

Eigen::Matrix3d sobec::WBCHorizon::ref_base_rotation_
protected

◆ ref_com_

eVector3 sobec::WBCHorizon::ref_com_
protected

◆ ref_com_vel_

eVector3 sobec::WBCHorizon::ref_com_vel_
protected

◆ ref_dcm_

eVector3 sobec::WBCHorizon::ref_dcm_
protected

◆ ref_LF_poses_

std::vector<pinocchio::SE3> sobec::WBCHorizon::ref_LF_poses_
protected

◆ ref_RF_poses_

std::vector<pinocchio::SE3> sobec::WBCHorizon::ref_RF_poses_
protected

◆ settings_

WBCHorizonSettings sobec::WBCHorizon::settings_
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.

◆ takeoff_LF_

std::vector<int> sobec::WBCHorizon::takeoff_LF_
protected

◆ takeoff_RF_

std::vector<int> sobec::WBCHorizon::takeoff_RF_
protected

◆ time_to_solve_ddp_

bool sobec::WBCHorizon::time_to_solve_ddp_ = false
protected

◆ x0_

Eigen::VectorXd sobec::WBCHorizon::x0_
protected

◆ x_internal_

Eigen::VectorXd sobec::WBCHorizon::x_internal_
protected

◆ yaw_left_

double sobec::WBCHorizon::yaw_left_
protected

◆ yaw_right_

double sobec::WBCHorizon::yaw_right_
protected

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