3 #include "hebi_kinematics.h" 12 namespace kinematics {
14 typedef std::vector<Matrix4f, Eigen::aligned_allocator<Eigen::Matrix4f> >
Matrix4fVector;
15 typedef std::vector<MatrixXf, Eigen::aligned_allocator<Eigen::MatrixXf> >
MatrixXfVector;
27 HebiBodyPtr internal_;
33 bool manage_pointer_lifetime_ =
true;
38 HebiBodyPtr getInternal()
const {
return internal_; }
44 void consume() { manage_pointer_lifetime_ =
false; }
47 #ifndef DOXYGEN_OMIT_INTERNAL 53 #endif // DOXYGEN_OMIT_INTERNAL 62 if (manage_pointer_lifetime_)
63 hebiBodyRelease(internal_);
69 static std::shared_ptr<KinematicBody> createX5();
83 static std::shared_ptr<KinematicBody> createX5Link(
float length,
float twist);
94 static std::shared_ptr<KinematicBody> createGenericLink(
const Eigen::Vector3f& com,
const Eigen::Matrix4f& output);
109 const HebiKinematicsPtr internal_;
135 void setBaseFrame(
const Eigen::Matrix4f& base_frame);
141 Eigen::Matrix4f getBaseFrame()
const;
152 size_t getFrameCount(HebiFrameType frame_type)
const;
158 size_t getDoFCount()
const;
170 bool addBody(std::shared_ptr<KinematicBody> new_body);
177 void getForwardKinematics(HebiFrameType,
const Eigen::VectorXd& positions, Matrix4fVector& frames)
const;
203 void getFK(HebiFrameType,
const Eigen::VectorXd& positions, Matrix4fVector& frames)
const;
225 void getEndEffector(HebiFrameType,
const Eigen::VectorXd& positions, Eigen::Matrix4f& transform)
const;
233 void solveInverseKinematics(
const Eigen::Vector3f& target_xyz,
const Eigen::VectorXd& positions, Eigen::VectorXd& result)
const;
250 void solveIK(
const Eigen::Vector3f& target_xyz,
const Eigen::VectorXd& initial_positions, Eigen::VectorXd& result)
const;
257 void getJacobians(HebiFrameType,
const Eigen::VectorXd& positions, MatrixXfVector& jacobians)
const;
271 void getJ(HebiFrameType,
const Eigen::VectorXd& positions, MatrixXfVector& jacobians)
const;
278 void getJacobianEndEffector(HebiFrameType,
const Eigen::VectorXd& positions, Eigen::MatrixXf& jacobian)
const;
300 void getJEndEffector(HebiFrameType,
const Eigen::VectorXd& positions, Eigen::MatrixXf& jacobian)
const;
std::vector< Matrix4f, Eigen::aligned_allocator< Eigen::Matrix4f > > Matrix4fVector
Definition: kinematics.hpp:14
#define HEBI_DISABLE_COPY_MOVE(Class)
Definition: util.hpp:7
std::vector< MatrixXf, Eigen::aligned_allocator< Eigen::MatrixXf > > MatrixXfVector
Definition: kinematics.hpp:15
Represents a kinematic chain or tree of bodies (links and joints and modules).
Definition: kinematics.hpp:103
Definition: kinematics.hpp:19
virtual ~KinematicBody() noexcept
Destructor cleans up body (and any child pointers that are still owned).
Definition: kinematics.hpp:60