29 #ifndef HPP_PINOCCHIO_LIEGROUP_SPECIAL_EUCLIDEAN_OPERATION_HH
30 #define HPP_PINOCCHIO_LIEGROUP_SPECIAL_EUCLIDEAN_OPERATION_HH
32 #include <pinocchio/multibody/liegroup/special-euclidean.hpp>
39 :
public ::pinocchio::SpecialEuclideanOperationTpl<N, value_type> {
40 typedef ::pinocchio::SpecialEuclideanOperationTpl<N, value_type>
Base;
43 template <
class ConfigL_t,
class ConfigR_t>
45 const Eigen::MatrixBase<ConfigR_t>& q1) {
46 return Base::squaredDistance(q0, q1);
65 template <
class ConfigIn_t,
class ConfigOut_t>
66 static void setBound(
const Eigen::MatrixBase<ConfigIn_t>& bound,
67 const Eigen::MatrixBase<ConfigOut_t>& out) {
68 if (bound.size() == Base::NQ || bound.size() ==
BoundSize) {
69 const_cast<Eigen::MatrixBase<ConfigOut_t>&
>(out).head(bound.size()) =
72 HPP_THROW(std::invalid_argument,
"Expected vector of size "
74 <<
", got size " << bound.size());
78 template <
class JacobianIn_t,
class JacobianOut_t>
80 const Eigen::MatrixBase<JacobianIn_t>& Jin,
81 const Eigen::MatrixBase<JacobianOut_t>& Jout) {
82 const_cast<Eigen::MatrixBase<JacobianOut_t>&
>(Jout) =
83 Jin.template bottomLeftCorner<3, 3>();
Utility functions.
Definition: body.hh:39
Definition: collision-object.hh:40
Definition: special-euclidean.hh:39
static void getRotationSubJacobian(const Eigen::MatrixBase< JacobianIn_t > &Jin, const Eigen::MatrixBase< JacobianOut_t > &Jout)
Definition: special-euclidean.hh:79
::pinocchio::SpecialEuclideanOperationTpl< N, value_type > Base
Definition: special-euclidean.hh:40
static void setBound(const Eigen::MatrixBase< ConfigIn_t > &bound, const Eigen::MatrixBase< ConfigOut_t > &out)
Definition: special-euclidean.hh:66
double squaredDistance(const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1)
Definition: special-euclidean.hh:44
@ BoundSize
Definition: special-euclidean.hh:41
@ NT
Definition: special-euclidean.hh:41
@ NR
Definition: special-euclidean.hh:41