1 #ifndef CALICO_TYPEDEFS_H_
2 #define CALICO_TYPEDEFS_H_
11 using Vector2 = Matrix<T, 2, 1>;
14 using Vector3 = Matrix<T, 3, 1>;
17 using Vector4 = Matrix<T, 4, 1>;
20 using VectorX = Matrix<T, Dynamic, 1>;
23 using MatrixX = Matrix<T, Dynamic, Dynamic>;
26 using Matrix3 = Matrix<T, 3, 3>;
28 template <
typename T,
int N>
29 using Vector = Matrix<T, N, 1>;
45 Pose3(
const Eigen::Quaternion<T>& q,
const Eigen::Vector3<T>& t)
49 Eigen::Quaternion<T>&
rotation() {
return q_; }
50 const Eigen::Quaternion<T>&
rotation()
const {
return q_; }
54 const Eigen::Vector3<T>&
translation()
const {
return t_; }
59 const Eigen::Vector4<T> qn = q.normalized();
69 return Eigen::Vector4<T>(q_.w(), q_.x(), q_.y(), q_.z());
86 const Eigen::Quaternion<T>& q_c_b = this->
rotation();
87 const Eigen::Quaternion<T>& q_b_a = T_b_a.
rotation();
88 const Eigen::Vector3<T>& t_c_b = this->
translation();
89 const Eigen::Vector3<T>& t_b_a = T_b_a.
translation();
90 const Eigen::Quaternion<T> q_c_a = q_c_b * q_b_a;
91 const Eigen::Vector3<T> t_c_a = q_c_b * t_b_a + t_c_b;
92 return Pose3(q_c_a, t_c_a);
101 Eigen::Vector3<T>
operator*(
const Eigen::Vector3<T>& p)
const {
111 const Eigen::Quaternion<T> q_inv = this->
rotation().conjugate();
112 const Eigen::Vector3<T> t_inv = -(q_inv * this->
translation());
113 return Pose3(q_inv, t_inv);
135 Eigen::Quaternion<T> q_;
136 Eigen::Vector3<T> t_;
139 using Pose3d = Pose3<double>;
Definition: typedefs.h:38
Eigen::Vector3< T > operator*(const Eigen::Vector3< T > &p) const
Definition: typedefs.h:101
Eigen::Vector3< T > GetTranslation() const
Translation getter for python bindings.
Definition: typedefs.h:76
Eigen::Vector3< T > & translation()
Translation accessor.
Definition: typedefs.h:53
Pose3< T > inverse() const
Definition: typedefs.h:110
Pose3 operator*(const Pose3< T > &T_b_a) const
Definition: typedefs.h:84
bool isApprox(const Pose3< T > &pose) const
Convenience method for checking if two poses are close in value.
Definition: typedefs.h:117
Eigen::Quaternion< T > & rotation()
Rotation accessor.
Definition: typedefs.h:49
friend std::ostream & operator<<(std::ostream &os, const Pose3< T > &pose)
Definition: typedefs.h:127
void SetTranslation(const Eigen::Vector3< T > &t)
Translation setter for python bindings.
Definition: typedefs.h:73
void SetRotation(const Eigen::Vector4< T > &q)
Definition: typedefs.h:58
Eigen::Vector4< T > GetRotation() const
Definition: typedefs.h:68
Primary calico namespace.
Definition: __init__.py:1