Commit fa57d90f by Justin Carpentier

### python: rework a bit the skew exposure and add skewSquare

parent bf4aaf02
 // // Copyright (c) 2015-2019 CNRS INRIA // Copyright (c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France. // Copyright (c) 2015-2020 CNRS INRIA // Copyright (c) 2020 Wandercraft // #include "pinocchio/bindings/python/fwd.hpp" #include #include "pinocchio/bindings/python/fwd.hpp" #include "pinocchio/spatial/se3.hpp" #include "pinocchio/spatial/skew.hpp" namespace pinocchio ... ... @@ -13,29 +15,40 @@ namespace pinocchio { namespace bp = boost::python; Eigen::Matrix3d skew_proxy(const Eigen::Vector3d & v) { return pinocchio::skew(v); } Eigen::Vector3d unSkew_proxy(const Eigen::Matrix3d & M) // We need to resort to another call, because it seems that Boost.Python is not aligning the Eigen::MatrixBase. TODO: fix it! template Eigen::Matrix unSkew(const Matrix3 & mat) { return pinocchio::unSkew(M); return pinocchio::unSkew(mat); } void exposeSkew() { bp::def("skew",&skew_proxy, bp::arg("Angular velocity (vector of size 3)"), "Computes the skew representation of a given 3D vector, " "i.e. the antisymmetric matrix representation of the cross product operator."); bp::def("unSkew",&unSkew_proxy, bp::arg("M: a 3x3 matrix."), "Inverse of skew operator. From a given skew-symmetric matrix M " "of dimension 3x3, it extracts the supporting vector, i.e. the entries of M." "Mathematically speacking, it computes v such that M x = cross(x, v)."); typedef SE3::Matrix3 Matrix3; typedef SE3::Vector3 Vector3; bp::def("skew",&skew, bp::arg("u"), "Computes the skew representation of a given 3d vector, " "i.e. the antisymmetric matrix representation of the cross product operator, aka U = [u]x.\n" "Parameters:\n" "\tu: the input vector of dimension 3"); bp::def("skewSquare",&skewSquare, bp::args("u","v"), "Computes the skew square representation of two given 3d vectors, " "i.e. the antisymmetric matrix representation of the chained cross product operator, u x (v x w), where w is another 3d vector.\n" "Parameters:\n" "\tu: the first input vector of dimension 3\n" "\tv: the second input vector of dimension 3"); bp::def("unSkew",&unSkew, bp::arg("U"), "Inverse of skew operator. From a given skew symmetric matrix U (i.e U = -U.T)" "of dimension 3x3, it extracts the supporting vector, i.e. the entries of U.\n" "Mathematically speacking, it computes v such that U.dot(x) = cross(u, x).\n" "Parameters:\n" "\tU: the input skew symmetric matrix of dimension 3x3."); } } // namespace python ... ...
 ... ... @@ -185,7 +185,7 @@ namespace pinocchio /// \param[in] u A 3 dimensional vector. /// \param[in] v A 3 dimensional vector. /// /// \return The square cross product matrix C. /// \return The square cross product matrix skew[u] * skew[v]. /// template inline Eigen::Matrix ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!