11typedef Matrix<double, 6, 1> Vector6d;
12typedef Matrix<double, 6, 6> Matrix6d;
22inline Eigen::Vector6d
screwAxis(
const Eigen::Vector3d &q,
23 const Eigen::Vector3d &s,
24 const double h = 0.0) {
25 return (Eigen::Vector6d() << s, q.cross(s) + h * s).finished();
37 const Eigen::Matrix<double, 3, n> &q,
const Eigen::Matrix<double, 3, n> &s,
38 const Eigen::Vector<double, n> &h = Eigen::Vector<double, n>::Zero()) {
39 assert(q.cols() == s.cols());
40 Eigen::Matrix<double, 6, n> Slist =
41 Eigen::Matrix<double, 6, n>::Zero(6, q.cols());
42 for (
unsigned i = 0; i < q.cols(); i++)
43 Slist.col(i) =
screwAxis(q.row(i), s.row(i), h(i));
57 const Eigen::Vector3d &p2) {
58 return screwAxis(p1, (p2 - p1).normalized());
68inline Eigen::Matrix6d
makeG(
const Eigen::Matrix3d &I,
const double &m) {
70 G.topLeftCorner<3, 3>() = I;
71 G.bottomRightCorner<3, 3>().diagonal().setConstant(m);
83 const double timeratio = t / dt;
84 return 3 * std::pow(timeratio, 2) - 2 * std::pow(timeratio, 3);
95 const double timeratio = t / dt;
96 return 10 * std::pow(timeratio, 3) - 15 * std::pow(timeratio, 4) +
97 6 * std::pow(timeratio, 5);
Eigen::Vector6d screwAxis(const Eigen::Vector3d &q, const Eigen::Vector3d &s, const double h=0.0)
Create screw axis.
Definition spatial.hpp:22
Eigen::Matrix6d makeG(const Eigen::Matrix3d &I, const double &m)
Create spatial inertia matrix.
Definition spatial.hpp:68
Eigen::Vector6d pointsToScrew(const Eigen::Vector3d &p1, const Eigen::Vector3d &p2)
Create screw axis from points.
Definition spatial.hpp:56
double quinticTimeScaling(const double t, const double dt)
Apply quintic time scaling.
Definition spatial.hpp:94
double cubicTimeScaling(const double t, const double dt)
Apply cubic time scaling.
Definition spatial.hpp:82