Go to the documentation of this file. 1 #ifndef MEMMO_FEET_TRAJECTORIES
2 #define MEMMO_FEET_TRAJECTORIES
4 #include <ndcurves/bezier_curve.h>
5 #include <ndcurves/exact_cubic.h>
6 #include <ndcurves/fwd.h>
7 #include <ndcurves/piecewise_curve.h>
8 #include <ndcurves/se3_curve.h>
9 #include <ndcurves/so3_linear.h>
11 #include <Eigen/Dense>
12 #include <Eigen/StdVector>
14 #include <pinocchio/spatial/se3.hpp>
22 typedef Eigen::Matrix<double, 6, 1>
eVector6;
32 typedef piecewise_curve<double, double,
true, matrix3_t,
point3_t,
36 typedef bezier_curve<double, double, true, point1_t>
bezier1_t;
37 typedef piecewise_curve<double, double, true, point1_t>
piecewise1_t;
38 typedef piecewise_curve<double, double, true, sobec::eVector2>
piecewise2_t;
39 typedef polynomial<double, double, true, sobec::eVector2>
polynomial2_t;
40 typedef constant_curve<double, double, true, sobec::eVector2>
constant2_t;
41 typedef constant_curve<double, double, true, point1_t>
constant1_t;
45 typedef std::vector<pointX_t, Eigen::aligned_allocator<pointX_t> >
t_pointX_t;
48 typedef ndcurves::exact_cubic<double, double, true, pointX_t>
exact_cubic_t;
63 return atan2(matrix.data()[1], matrix.data()[0]);
70 static inline double extractYaw(pinocchio::SE3
const& matrix) {
81 double cb(cos(pitch));
82 double sb(sin(pitch));
88 temp << ca * cb, ca * sb * sc - sa * cc, ca * sb * cc + sa * sc, sa * cb,
89 sa * sb * sc + ca * cc, sa * sb * cc - ca * sc, -sb, cb * sc, cb * cc;
107 temp.rotation(quat.matrix());
108 temp.translation() = trans;
118 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
129 const double swing_pose_penetration = 0.,
130 const double landing_advance = 0.);
131 void generate(
const double& t_init,
const double& t_end,
132 const pinocchio::SE3& pose_init,
const pinocchio::SE3& pose_end,
133 const bool& constant =
false);
134 void update(
const double time,
const pinocchio::SE3& pose_end);
139 pinocchio::SE3
compute(
const double& time);
140 pinocchio::SE3
start();
141 pinocchio::SE3
end();
150 pinocchio::SE3 average(
const pinocchio::SE3& a,
const pinocchio::SE3& b);
166 void build_height_trajectory(
const double& t_init,
const double& t_end,
167 const double& z_init,
const double& z_end,
168 const double& v_init = 0.,
169 const double& a_init = 0.,
170 const double& j_init = 0.);
172 void build_height_trajectory_minjerk(
173 const double& t_init,
const double& t_end,
const double& z_init,
174 const double& z_end,
const double& v_init = 0.,
const double& a_init = 0.,
175 const double& j_init = 0.);
177 void build_translation_trajectory(
const double& t_init,
const double& t_end,
180 const eVector2& v_init = eVector2::Zero(),
181 const eVector2& a_init = eVector2::Zero());
183 void build_yaw_trajectory(
const double& t_init,
const double& t_end,
184 const double& yaw_init,
const double& yaw_end,
185 const double& delta_yaw_init = 0.,
186 const double& v_init = 0.,
187 const double& a_init = 0.);
190 const double& t_init,
const double& t_end,
const double p0,
191 const double v0,
const double a0,
const double j0,
const double p1,
192 const double v1,
const double a1,
const double j1);
195 const double& t_init,
const double& t_end,
const eVector2& p_init,
199 const double& t_init,
const double& t_end,
const double& yaw_init,
200 const double& yaw_end,
const double& delta_yaw_init,
const double& v_init,
201 const double& a_init);
205 pinocchio::SE3 pose_init_, pose_end_;
211 pinocchio::SE3 previous_pose_end_;
218 double swing_leg_height_;
219 double swing_pose_penetration_;
220 double landing_advance_;
225 double lift_end_time_, land_begin_time_;
233 #endif // MEMMO_FEET_TRAJECTORIES
Eigen::Quaternion< double > eQuaternion
Definition: foot_trajectory.hpp:19
Eigen::AngleAxisd eAngleAxis
Definition: foot_trajectory.hpp:26
double num_t
Definition: foot_trajectory.hpp:47
constant_curve< double, double, true, point1_t > constant1_t
Definition: foot_trajectory.hpp:41
double time_t
Definition: foot_trajectory.hpp:46
Eigen::Vector2d eVector2
Definition: fwd.hpp:144
const double EPSILON_TIME
Definition: foot_trajectory.hpp:58
std::vector< pointX_t, Eigen::aligned_allocator< pointX_t > > t_pointX_t
Definition: foot_trajectory.hpp:45
piecewise_curve< double, double, true, sobec::eVector2 > piecewise2_t
Definition: foot_trajectory.hpp:38
static double extractYaw(pinocchio::SE3 const &matrix)
Definition: foot_trajectory.hpp:70
static eQuaternion quaternionRollPitchYaw(const double &roll, const double &pitch, const double &yaw)
Definition: foot_trajectory.hpp:97
Definition: activation-quad-ref.hpp:19
polynomial< double, double, true, point1_t > polynomial1_t
Definition: foot_trajectory.hpp:35
Definition: foot_trajectory.hpp:29
ndcurves::exact_cubic< double, double, true, pointX_t > exact_cubic_t
Definition: foot_trajectory.hpp:48
std::pair< double, pointX_t > Waypoint
Definition: foot_trajectory.hpp:52
std::vector< Waypoint > T_Waypoint
Definition: foot_trajectory.hpp:53
piecewise_curve< double, double, true, matrix3_t, point3_t, curve_rotation_t > piecewise_SO3_t
Definition: foot_trajectory.hpp:34
static eQuaternion quaternionRollPitchYaw(const eVector3 &rpy)
Definition: foot_trajectory.hpp:93
static pinocchio::SE3 createMatrix(eQuaternion const &quat, eVector3 const &trans)
Definition: foot_trajectory.hpp:103
Eigen::Vector3d point3_t
Definition: foot_trajectory.hpp:50
Eigen::Matrix< double, 6, 1 > eVector6
Definition: fwd.hpp:141
Eigen::Matrix3d eMatrixRot
Definition: flexibility_compensation.hpp:11
Definition: foot_trajectory.hpp:61
Eigen::VectorXd pointX_t
Definition: foot_trajectory.hpp:44
piecewise_curve< double, double, true, point1_t > piecewise1_t
Definition: foot_trajectory.hpp:37
polynomial< double, double, true, sobec::eVector2 > polynomial2_t
Definition: foot_trajectory.hpp:39
bezier_curve< double, double, true, point1_t > bezier1_t
Definition: foot_trajectory.hpp:36
static eMatrixRot matrixRollPitchYaw(const double &roll, const double &pitch, const double &yaw)
see http://planning.cs.uiuc.edu/node102.html
Definition: foot_trajectory.hpp:75
Eigen::Matrix< double, 1, 1 > point1_t
Definition: foot_trajectory.hpp:30
Eigen::Matrix2d eMatrixRot2d
Definition: foot_trajectory.hpp:24
std::shared_ptr< FootTrajectory > FootTrajectory_ptr
Definition: foot_trajectory.hpp:229
static double extractYaw(eQuaternion const &q)
Definition: foot_trajectory.hpp:66
constant_curve< double, double, true, sobec::eVector2 > constant2_t
Definition: foot_trajectory.hpp:40
static double extractYaw(eMatrixRot const &matrix)
Definition: foot_trajectory.hpp:62
Eigen::Vector3d eVector3
Definition: fwd.hpp:143