31 static const double MMtoM = 0.001;
32 static const double MStoS = 0.001;
219 double l_foot_x,
double l_foot_y,
double l_foot_z,
double l_foot_roll,
double l_foot_pitch,
double l_foot_yaw,
220 double center_of_body_x,
double center_of_body_y,
double center_of_body_z,
221 double center_of_body_roll,
double center_of_body_pitch,
double center_of_body_yaw)
313 std::string balance_offset_path =
ros::package::getPath(
"thormang3_walking_module") +
"/config/balance_offset.yaml";
360 for(
int angle_idx = 0; angle_idx < 6; angle_idx++)
368 for(
int feed_forward_idx = 0; feed_forward_idx < 12; feed_forward_idx++)
422 A_.resize(3,3);
b_.resize(3,1);
c_.resize(1,3);
432 k_s_ = 608.900142915471;
436 k_x_ << 35904.1790662895, 8609.63092261379, 112.710622775482;
441 f_ << 608.9001429, 760.1988656, 921.629618, 1034.769891, 1089.313783, 1096.765451, 1074.295061, 1036.842257, 994.5569472, 953.0295724,
442 914.5708045, 879.5752596, 847.5633512, 817.8237132, 789.7293917, 762.8419074, 736.9038288, 711.7889296, 687.4484508, 663.8698037,
443 641.050971, 618.987811, 597.6697941, 577.0801943, 557.1979969, 537.9999833, 519.4623366, 501.5616312, 484.2753137, 467.581849,
444 451.4606896, 435.8921765, 420.8574331, 406.3382777, 392.3171623, 378.7771307, 365.7017923, 353.0753019, 340.8823445, 329.1081203,
445 317.7383294, 306.759157, 296.1572572, 285.919738, 276.0341458, 266.4884502, 257.2710302, 248.3706597, 239.7764944, 231.4780587,
446 223.4652335, 215.7282439, 208.2576474, 201.0443231, 194.0794606, 187.3545495, 180.8613691, 174.5919788, 168.5387087, 162.6941501,
447 157.0511468, 151.6027868, 146.3423936, 141.2635185, 136.3599326, 131.62562, 127.0547695, 122.6417688, 118.3811969, 114.2678179,
448 110.2965751, 106.462584, 102.7611275, 99.18764938, 95.73774938, 92.40717757, 89.19182939, 86.08774068, 83.0910829, 80.19815849,
449 77.40539648, 74.70934812, 72.10668274, 69.59418373, 67.16874468, 64.82736558, 62.56714924, 60.38529775, 58.27910913, 56.24597404,
450 54.28337262, 52.38887145, 50.5601206, 48.79485075, 47.09087052, 45.44606371, 43.8583868, 42.32586646, 40.84659712, 39.4187387,
451 38.04051434, 36.71020825, 35.42616363, 34.18678064, 32.99051448, 31.83587345, 30.72141721, 29.64575495, 28.60754377, 27.60548695,
452 26.63833247, 25.70487138, 24.80393641, 23.93440049, 23.09517539, 22.28521038, 21.50349096, 20.74903761, 20.0209046, 19.3181788,
453 18.63997859, 17.98545279, 17.35377958, 16.74416551, 16.15584454, 15.58807707, 15.04014906, 14.51137112, 14.00107771, 13.50862627,
454 13.03339646, 12.57478939, 12.13222688, 11.70515076, 11.29302214, 10.89532081, 10.51154456, 10.14120854, 9.783844714, 9.439001248,
455 9.106241955, 8.78514576, 8.475306179, 8.176330819, 7.887840885, 7.609470721, 7.340867346, 7.081690027, 6.83160985, 6.590309314,
456 6.357481938, 6.132831881, 5.916073573, 5.706931359, 5.505139163, 5.310440149, 5.122586408, 4.941338646, 4.766465888, 4.597745188,
457 4.434961356, 4.277906685, 4.126380694, 3.980189879, 3.839147471, 3.703073201, 3.571793078, 3.445139169, 3.322949391, 3.205067309,
458 3.091341936, 2.981627549, 2.875783507, 2.773674068, 2.675168228, 2.58013955, 2.488466009, 2.400029838, 2.314717381, 2.232418947,
459 2.153028678, 2.076444411, 2.002567552, 1.931302952, 1.862558786, 1.796246438, 1.732280393, 1.670578121, 1.611059983, 1.553649123,
460 1.498271374, 1.444855165, 1.393331431, 1.343633522, 1.295697125, 1.249460178, 1.204862791, 1.161847176, 1.120357568, 1.080340156;
556 for(
int angle_idx = 0; angle_idx < 6; angle_idx++)
642 int remain_step_num = 0;
651 return remain_step_num;
683 unsigned int step_idx = 0, previous_step_idx = 0;
718 for(step_idx = previous_step_idx; step_idx < step_data_size; step_idx++)
724 previous_step_idx = step_idx;
738 for(step_idx = previous_step_idx; step_idx < step_data_size; step_idx++)
744 previous_step_idx = step_idx;
795 for(ref_zmp_idx = 0; ref_zmp_idx <
preview_size_; ref_zmp_idx++)
915 Eigen::MatrixXd x_feed_forward_term2;
916 Eigen::MatrixXd y_feed_forward_term2;
918 x_feed_forward_term2.resize(1,1);
919 x_feed_forward_term2.fill(0.0);
920 y_feed_forward_term2.resize(1,1);
921 y_feed_forward_term2.fill(0.0);
975 double hip_roll_swap = 0;
979 double period_time, dsp_ratio, ssp_ratio, foot_move_period_time, ssp_time_start, ssp_time_end;
982 ssp_ratio = 1 - dsp_ratio;
983 foot_move_period_time = ssp_ratio*period_time;
988 double start_time_delay_ratio_x =
added_step_data_[0].time_data.start_time_delay_ratio_x;
989 double start_time_delay_ratio_y =
added_step_data_[0].time_data.start_time_delay_ratio_y;
990 double start_time_delay_ratio_z =
added_step_data_[0].time_data.start_time_delay_ratio_z;
991 double start_time_delay_ratio_roll =
added_step_data_[0].time_data.start_time_delay_ratio_roll;
992 double start_time_delay_ratio_pitch =
added_step_data_[0].time_data.start_time_delay_ratio_pitch;
993 double start_time_delay_ratio_yaw =
added_step_data_[0].time_data.start_time_delay_ratio_yaw;
994 double finish_time_advance_ratio_x =
added_step_data_[0].time_data.finish_time_advance_ratio_x;
995 double finish_time_advance_ratio_y =
added_step_data_[0].time_data.finish_time_advance_ratio_y;
996 double finish_time_advance_ratio_z =
added_step_data_[0].time_data.finish_time_advance_ratio_z;
997 double finish_time_advance_ratio_roll =
added_step_data_[0].time_data.finish_time_advance_ratio_roll;
998 double finish_time_advance_ratio_pitch =
added_step_data_[0].time_data.finish_time_advance_ratio_pitch;
999 double finish_time_advance_ratio_yaw =
added_step_data_[0].time_data.finish_time_advance_ratio_yaw;
1001 double hip_roll_swap_dir = 1.0;
1016 if(bc_move_amp >= M_PI)
1017 bc_move_amp -= 2.0*M_PI;
1018 else if(bc_move_amp <= -M_PI)
1019 bc_move_amp += 2.0*M_PI;
1033 ssp_time_end - finish_time_advance_ratio_x*foot_move_period_time,
1037 ssp_time_end - finish_time_advance_ratio_y*foot_move_period_time,
1041 ssp_time_end - finish_time_advance_ratio_z*foot_move_period_time,
1045 ssp_time_end - finish_time_advance_ratio_roll*foot_move_period_time,
1049 ssp_time_end - finish_time_advance_ratio_pitch*foot_move_period_time,
1053 if(c_move_amp >= M_PI)
1054 c_move_amp -= 2.0*M_PI;
1055 else if(c_move_amp <= -M_PI)
1056 c_move_amp += 2.0*M_PI;
1060 ssp_time_end - finish_time_advance_ratio_yaw*foot_move_period_time,
1064 0.5*(ssp_time_start + ssp_time_end),
added_step_data_[0].position_data.foot_z_swap, 0, 0);
1073 ssp_time_end - finish_time_advance_ratio_x*foot_move_period_time,
1077 ssp_time_end - finish_time_advance_ratio_y*foot_move_period_time,
1081 ssp_time_end - finish_time_advance_ratio_z*foot_move_period_time,
1085 ssp_time_end - finish_time_advance_ratio_roll*foot_move_period_time,
1089 ssp_time_end - finish_time_advance_ratio_pitch*foot_move_period_time,
1093 if(c_move_amp >= M_PI)
1094 c_move_amp -= 2.0*M_PI;
1095 else if(c_move_amp <= -M_PI)
1096 c_move_amp += 2.0*M_PI;
1100 ssp_time_end - finish_time_advance_ratio_yaw*foot_move_period_time,
1104 0.5*(ssp_time_start + ssp_time_end),
added_step_data_[0].position_data.foot_z_swap, 0, 0);
1109 hip_roll_swap_dir = 1.0;
1114 ssp_time_end, 0, 0, 0);
1117 ssp_time_end, 0, 0, 0);
1119 hip_roll_swap_dir = 0.0;
1137 double x_move, y_move, z_move, a_move, b_move, c_move, z_vibe;
1178 ssp_time_end, 0, 0, 0);
1182 ssp_time_end, 0, 0, 0);
1238 hip_roll_swap_dir = -1.0;
1251 hip_roll_swap_dir = 1.0;
1258 hip_roll_swap_dir = 0.0;
1261 hip_roll_swap = hip_roll_swap_dir * hip_roll_swap;
1379 double target_fz_N = 0;
1395 Eigen::MatrixXd mat_right_force, mat_right_torque;
1396 mat_right_force.resize(4,1); mat_right_force.fill(0);
1397 mat_right_torque.resize(4,1); mat_right_torque.fill(0);
1398 mat_right_force(0,0) = right_leg_fx_N;
1399 mat_right_force(1,0) = right_leg_fy_N;
1400 mat_right_force(2,0) = right_leg_fz_N;
1401 mat_right_torque(0,0) = right_leg_Tx_Nm;
1402 mat_right_torque(1,0) = right_leg_Ty_Nm;
1403 mat_right_torque(2,0) = right_leg_Tz_Nm;
1405 Eigen::MatrixXd mat_left_force, mat_left_torque;
1406 mat_left_force.resize(4,1); mat_left_force.fill(0);
1407 mat_left_torque.resize(4,1); mat_left_torque.fill(0);
1408 mat_left_force(0,0) = left_leg_fx_N;
1409 mat_left_force(1,0) = left_leg_fy_N;
1410 mat_left_force(2,0) = left_leg_fz_N;
1411 mat_left_torque(0,0) = left_leg_Tx_Nm;
1412 mat_left_torque(1,0) = left_leg_Ty_Nm;
1413 mat_left_torque(2,0) = left_leg_Tz_Nm;
1432 mat_right_torque.coeff(0,0), mat_right_torque.coeff(1,0), mat_right_torque.coeff(2,0),
1433 mat_left_force.coeff(0,0), mat_left_force.coeff(1,0), mat_left_force.coeff(2,0),
1434 mat_left_torque.coeff(0,0), mat_left_torque.coeff(1,0), mat_left_torque.coeff(2,0));
1437 double r_target_fx_N = 0;
1438 double l_target_fx_N = 0;
1439 double r_target_fy_N = 0;
1440 double l_target_fy_N = 0;
1444 Eigen::MatrixXd mat_g_to_acc, mat_robot_to_acc;
1445 mat_g_to_acc.resize(4, 1);
1446 mat_g_to_acc.fill(0);
1447 mat_g_to_acc.coeffRef(0,0) =
x_lipm_.coeff(2,0);
1448 mat_g_to_acc.coeffRef(1,0) =
y_lipm_.coeff(2,0);
1599 l_target_fx_N*1.0, l_target_fy_N*1.0, l_target_fz_N, 0, 0, 0);
1654 for(
int angle_idx = 0; angle_idx < 6; angle_idx++)
1669 return mag *
sin(2 * M_PI / period * time - period_shift) + mag_shift;
1674 double value = mag_shift, Amplitude = 0.0, sigmoid_distor_gain = 1.0, t = 0.0;
1675 if ((sigmoid_ratio >= 1.0) && (sigmoid_ratio < 2.0))
1677 if( time >= time_shift+period*(2-sigmoid_ratio)) {
1678 value = mag_shift + mag;
1682 t = 2.0*M_PI*(time - time_shift)/(period*(2-sigmoid_ratio));
1683 sigmoid_distor_gain = distortion_ratio + (1-distortion_ratio)*(time-(time_shift+period*(1-sigmoid_ratio)))/(period*(2-sigmoid_ratio));
1684 Amplitude = mag/(2.0*M_PI);
1685 value = mag_shift + Amplitude*(t - sigmoid_distor_gain*
sin(t));
1688 else if( (sigmoid_ratio >= 0.0) && (sigmoid_ratio < 1.0))
1690 if( time <= time_shift+period*(1-sigmoid_ratio))
1693 t = 2.0*M_PI*(time - time_shift-period*(1-sigmoid_ratio))/(period*sigmoid_ratio);
1694 sigmoid_distor_gain = distortion_ratio + (1-distortion_ratio)*(time-(time_shift+period*(1-sigmoid_ratio)))/(period*sigmoid_ratio);
1695 Amplitude = mag/(2.0*M_PI);
1696 value = mag_shift + Amplitude*(t - sigmoid_distor_gain*
sin(t));
1699 else if(( sigmoid_ratio >= 2.0) && ( sigmoid_ratio < 3.0))
1701 double nsigmoid_ratio = sigmoid_ratio - 2.0;
1702 if(time <= time_shift + period*(1.0-nsigmoid_ratio)*0.5)
1704 else if(time >= time_shift + period*(1.0+nsigmoid_ratio)*0.5)
1705 value = mag + mag_shift;
1707 t = 2.0*M_PI*(time - (time_shift+period*(1.0-nsigmoid_ratio)*0.5))/(period*nsigmoid_ratio);
1708 sigmoid_distor_gain = distortion_ratio + (1.0-distortion_ratio)*(time-(time_shift+period*(1.0-nsigmoid_ratio)*0.5))/(period*nsigmoid_ratio);
1709 Amplitude = mag/(2.0*M_PI);
1710 value = mag_shift + Amplitude*(t - sigmoid_distor_gain*
sin(t));
1725 doc = YAML::LoadFile(path.c_str());
1727 catch (
const std::exception& e)
1740 ROS_INFO(
"l_leg_to_body_roll_gain_ : %f", l_leg_to_body_roll_gain_);
1741 ROS_INFO(
"r_leg_to_body_pitch_gain_ : %f", r_leg_to_body_pitch_gain_);
1742 ROS_INFO(
"l_leg_to_body_pitch_gain_ : %f", l_leg_to_body_pitch_gain_);
1758 std::vector<double_t> zero_vector;
1759 zero_vector.resize(1,0.0);
1761 std::vector<double_t> via_pos;
1762 via_pos.resize(3, 0.0);
1765 double init_time = 0.0;
1766 double fin_time = period_time;
1767 double via_time = 0.5 * (init_time + fin_time);
1771 zero_vector, zero_vector, zero_vector,
1772 zero_vector, zero_vector, zero_vector,
1773 via_pos, zero_vector, zero_vector);
1787 bool is_DSP =
false;
1788 bool is_l_balancing, is_r_balancing;
1797 is_l_balancing =
false;
1798 is_r_balancing =
false;
1805 is_l_balancing =
true;
1806 is_r_balancing =
false;
1811 is_l_balancing =
false;
1812 is_r_balancing =
true;
1822 if (is_DSP ==
false)
robotis_framework::Pose3D present_left_foot_pose_
Eigen::Matrix3d getRotationZ(double angle)
robotis_framework::Pose3D rhip_to_rfoot_pose_
double r_leg_to_body_pitch_gain_
static const int BalancingPhase5
double current_right_tz_Nm_
void setInitialLeftShoulderAngle(double shoulder_angle_rad)
double l_shoulder_out_angle_rad_
static const int STANDING
void setGyroBalanceEnable(bool enable)
robotis_framework::Pose3D initial_left_foot_pose_
robotis_framework::Pose3D present_body_pose_
void setForceTorqueBalanceEnable(bool enable)
void setDesiredCOBOrientation(double cob_orientation_roll, double cob_orientation_pitch)
double l_leg_to_body_roll_gain_
void getReferenceStepDatafotAddition(robotis_framework::StepData *ref_step_data_for_addition)
Eigen::Matrix4d getTranslation4D(double position_x, double position_y, double position_z)
double current_left_tx_Nm_
double left_fz_trajectory_start_time_
static const int IN_WALKING_STARTING
Eigen::MatrixXd mat_robot_to_rf_modified_
double r_elbow_out_angle_rad_
Eigen::MatrixXd mat_g_to_cob_
double left_fz_trajectory_shift_
robotis_framework::FifthOrderPolynomialTrajectory foot_x_tra_
double start_time_delay_ratio_y
double l_init_shoulder_angle_rad_
double l_leg_to_body_pitch_gain_
Eigen::MatrixXd mat_cob_to_robot_
static const int RIGHT_FOOT_SWING
robotis_framework::Pose3D initial_body_pose_
int current_start_idx_for_ref_zmp_
double leg_side_offset_m_
robotis_framework::FifthOrderPolynomialTrajectory foot_z_tra_
static const double MStoS
Eigen::Matrix3d getRotationX(double angle)
void setInitialRightElbowAngle(double elbow_angle_rad)
Eigen::MatrixXd mat_rfoot_to_rft_
double current_right_ty_Nm_
robotis_framework::FifthOrderPolynomialTrajectory body_z_tra_
void setDesiredPose(const Eigen::MatrixXd &robot_to_cob, const Eigen::MatrixXd &robot_to_right_foot, const Eigen::MatrixXd &robot_to_left_foot)
double current_right_fz_N_
double present_waist_yaw_angle_rad_
static const int StepDataStatus2
double current_left_fx_N_
static const int BalancingPhase2
double out_angle_rad_[16]
void initialize(const int control_cycle_msec)
Eigen::MatrixXd mat_cob_to_lhip_
double current_left_fy_N_
static const int BalancingPhase6
double shouler_swing_gain_
Eigen::MatrixXd rot_x_pi_3d_
Eigen::MatrixXd mat_g_to_rfoot_
double curr_angle_rad_[12]
double hip_roll_feedforward_angle_rad_
static const int StepDataStatus3
double current_right_fy_N_
Eigen::Matrix4d getInverseTransformation(const Eigen::MatrixXd &transform)
void parseBalanceOffsetData(const std::string &path)
double current_left_tz_Nm_
double left_fz_trajectory_end_time_
static const int IN_WALKING
static const int StepDataStatus1
double ref_zmp_x_at_this_time_
robotis_framework::Pose3D lhip_to_lfoot_pose_
#define GRAVITY_ACCELERATION
static const int BalancingPhase4
robotis_framework::StepData reference_step_data_for_addition_
thormang3::BalanceControlUsingPDController balance_ctrl_
StepPositionData position_data
double finish_time_advance_ratio_pitch
static const double TIME_UNIT
double start_time_delay_ratio_x
Eigen::MatrixXd mat_robot_to_cob_modified_
boost::mutex imu_data_mutex_lock_
Eigen::MatrixXd mat_lfoot_to_lft_
robotis_framework::MinimumJerkViaPoint * feed_forward_tra_
double r_shoulder_out_angle_rad_
Eigen::Matrix4d getTransformationXYZRPY(double position_x, double position_y, double position_z, double roll, double pitch, double yaw)
Eigen::MatrixXd reference_zmp_x_
robotis_framework::Pose3D present_right_foot_pose_
Eigen::MatrixXd mat_robot_to_lfoot_
bool init_balance_offset_
Eigen::MatrixXd rot_z_pi_3d_
double current_left_ty_Nm_
bool setInitialPose(double r_foot_x, double r_foot_y, double r_foot_z, double r_foot_roll, double r_foot_pitch, double r_foot_yaw, double l_foot_x, double l_foot_y, double l_foot_z, double l_foot_roll, double l_foot_pitch, double l_foot_yaw, double center_of_body_x, double center_of_body_y, double center_of_body_z, double center_of_body_roll, double center_of_body_pitch, double center_of_body_yaw)
robotis_framework::FifthOrderPolynomialTrajectory foot_z_swap_tra_
Eigen::MatrixXd mat_robot_to_g_
robotis_framework::Pose3D previous_step_body_pose_
double start_time_delay_ratio_z
robotis_framework::FifthOrderPolynomialTrajectory waist_yaw_tra_
void setInitialRightShoulderAngle(double shoulder_angle_rad)
robotis_framework::Pose3D previous_step_left_foot_pose_
std::vector< robotis_framework::StepData > added_step_data_
robotis_framework::FifthOrderPolynomialTrajectory foot_roll_tra_
boost::mutex step_data_mutex_lock_
int getNumofRemainingUnreservedStepData()
static const double MMtoM
double getPosition(double time)
void setCurrentIMUSensorOutput(double gyro_x, double gyro_y, double quat_x, double quat_y, double quat_z, double quat_w)
double current_right_tx_Nm_
static const int BalancingPhase8
double r_init_elbow_angle_rad_
void setCurrentGyroSensorOutput(double gyro_roll, double gyro_pitch)
robotis_framework::FifthOrderPolynomialTrajectory body_pitch_tra_
void setInitalWaistYawAngle(double waist_yaw_angle_rad)
Eigen::MatrixXd mat_robot_to_lf_modified_
double wsin(double time, double period, double period_shift, double mag, double mag_shift)
LinkData * thormang3_link_data_[ALL_JOINT_ID+1]
double getFeedBack(double present_sensor_output)
double current_right_fx_N_
Eigen::MatrixXd des_balance_offset_
int current_step_data_status_
Eigen::MatrixXd mat_cob_to_rhip_
Eigen::MatrixXd mat_rhip_to_cob_
static const int IN_WALKING_ENDING
static const int BalancingPhase0
double finish_time_advance_ratio_z
double finish_time_advance_ratio_x
robotis_framework::FifthOrderPolynomialTrajectory body_yaw_tra_
double current_imu_pitch_rad_
virtual ~THORMANG3OnlineWalking()
Eigen::MatrixXd mat_lhip_to_cob_
double finish_time_advance_ratio_yaw
Eigen::MatrixXd joint_axis_
Eigen::MatrixXd mat_robot_to_rfoot_
INLINE Rall1d< T, V, S > sqrt(const Rall1d< T, V, S > &arg)
Eigen::MatrixXd mat_cob_to_robot_modified_
double finish_time_advance_ratio_y
ROSLIB_DECL std::string getPath(const std::string &package_name)
double r_init_shoulder_angle_rad_
bool addStepData(robotis_framework::StepData step_data)
Pose3D getPose3DfromTransformMatrix(const Eigen::Matrix4d &transform)
double finish_time_advance_ratio_roll
void process(int *balance_error, Eigen::MatrixXd *robot_to_cob_modified, Eigen::MatrixXd *robot_to_right_foot_modified, Eigen::MatrixXd *robot_to_left_foot_modified)
std::vector< double_t > getPosition(double time)
double start_time_delay_ratio_pitch
robotis_framework::FifthOrderPolynomialTrajectory hip_roll_swap_tra_
double previous_step_waist_yaw_angle_rad_
double goal_waist_yaw_angle_rad_
bool calcInverseKinematicsForRightLeg(double *out, double x, double y, double z, double roll, double pitch, double yaw)
Eigen::MatrixXd mat_g_to_robot_
KinematicsDynamics * thormang3_kd_
void setDesiredCOBGyro(double gyro_roll, double gyro_pitch)
robotis_framework::Pose3D previous_step_right_foot_pose_
robotis_framework::FifthOrderPolynomialTrajectory body_roll_tra_
Eigen::MatrixXd reference_zmp_y_
double start_time_delay_ratio_roll
double powDI(double a, int b)
double ref_zmp_y_at_this_time_
robotis_framework::FifthOrderPolynomialTrajectory foot_pitch_tra_
static const int LEFT_FOOT_SWING
double calcTotalMass(int joint_id)
robotis_framework::Pose3D initial_right_foot_pose_
double l_leg_out_angle_rad_[6]
double r_leg_out_angle_rad_[6]
double current_imu_roll_rad_
thormang3::BalancePDController leg_angle_feed_back_[12]
Eigen::Quaterniond quat_current_imu_
double l_elbow_out_angle_rad_
INLINE Rall1d< T, V, S > atan2(const Rall1d< T, V, S > &y, const Rall1d< T, V, S > &x)
bool calcInverseKinematicsForLeftLeg(double *out, double x, double y, double z, double roll, double pitch, double yaw)
Eigen::Matrix4d getRotation4d(double roll, double pitch, double yaw)
double total_mass_of_robot_
Eigen::MatrixXd relative_position_
Eigen::VectorXi step_idx_data_
double current_gyro_roll_rad_per_sec_
double left_fz_trajectory_target_
static const int BalancingPhase3
double wsigmoid(double time, double period, double time_shift, double mag, double mag_shift, double sigmoid_ratio, double distortion_ratio)
INLINE Rall1d< T, V, S > cos(const Rall1d< T, V, S > &arg)
void setInitialLeftElbowAngle(double elbow_angle_rad)
void setCurrentFootForceTorqueSensorOutput(double r_force_x_N, double r_force_y_N, double r_force_z_N, double r_torque_roll_Nm, double r_torque_pitch_Nm, double r_torque_yaw_Nm, double l_force_x_N, double l_force_y_N, double l_force_z_N, double l_torque_roll_Nm, double l_torque_pitch_Nm, double l_torque_yaw_Nm)
bool changeTrajectory(double final_pos, double final_vel, double final_acc)
void setDesiredFootForceTorque(double r_force_x_N, double r_force_y_N, double r_force_z_N, double r_torque_roll_Nm, double r_torque_pitch_Nm, double r_torque_yaw_Nm, double l_force_x_N, double l_force_y_N, double l_force_z_N, double l_torque_roll_Nm, double l_torque_pitch_Nm, double l_torque_yaw_Nm)
Eigen::MatrixXd mat_cob_to_g_
static const int BalancingPhase1
Eigen::MatrixXd mat_g_to_lfoot_
Eigen::MatrixXd mat_robot_to_cob_
robotis_framework::FifthOrderPolynomialTrajectory foot_yaw_tra_
void setCurrentOrientationSensorOutput(double cob_orientation_roll, double cob_orientation_pitch)
double shoulder_swing_gain
static const int BalancingPhase7
INLINE Rall1d< T, V, S > sin(const Rall1d< T, V, S > &arg)
robotis_framework::FifthOrderPolynomialTrajectory body_z_swap_tra_
static const int StepDataStatus4
void setOrientationBalanceEnable(bool enable)
static const int NO_STEP_IDX
double start_time_delay_ratio_yaw
Eigen::MatrixXd mat_current_imu_
double r_leg_to_body_roll_gain_
double current_left_fz_N_
robotis_framework::FifthOrderPolynomialTrajectory foot_y_tra_
double current_gyro_pitch_rad_per_sec_
static const int BalancingPhase9
double l_init_elbow_angle_rad_