33 #include <Eigen/Geometry> 37 typedef Eigen::Matrix<double, 7, 6, Eigen::ColMajor>
Matrix7x6d;
39 typedef Eigen::Matrix<double, 6, 1, Eigen::ColMajor>
Vector6d;
41 typedef Eigen::Matrix<double, 6, 6, Eigen::ColMajor>
Matrix6d;
49 *
this << 0., 0., 0., 1., 0., 0.;
76 Vector3D _d= cart.tail<3>() * 1./cart.tail<3>().norm();
78 _p -= _d*(_d.dot(_p));
79 l.
setW(_p.cross(_p+_d));
85 double n = 1./
d().norm();
90 return Line3D((Vector6d)(*
this)*(1./
d().norm()));
99 return (Vector6d)(*this)-line;
G2O_TYPES_SLAM3D_ADDONS_API Vector3D w() const
G2O_TYPES_SLAM3D_ADDONS_API Vector6d ominus(const Line3D &line)
some general case utility functions
Eigen::Matrix< double, 6, 6, Eigen::ColMajor > Matrix6d
Eigen::Matrix< double, 3, 1, Eigen::ColMajor > Vector3D
G2O_TYPES_SLAM3D_ADDONS_API Vector3D d() const
static G2O_TYPES_SLAM3D_ADDONS_API void jacobian(Matrix7x6d &Jp, Matrix7x6d &Jl, const Isometry3D &x, const Line3D &l)
Vector6d transformCartesianLine(const Isometry3D &t, const Vector6d &line)
G2O_TYPES_SLAM3D_ADDONS_API void oplus(const Vector6d &v)
G2O_TYPES_SLAM3D_ADDONS_API Line3D(const Vector6d &v)
G2O_TYPES_SLAM3D_ADDONS_API Line3D normalized() const
Eigen::Matrix< double, 7, 6, Eigen::ColMajor > Matrix7x6d
G2O_TYPES_SLAM3D_ADDONS_API void normalize()
Eigen::Transform< double, 3, Eigen::Isometry, Eigen::ColMajor > Isometry3D
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
G2O_TYPES_SLAM3D_ADDONS_API Vector6d toCartesian() const
static G2O_TYPES_SLAM3D_ADDONS_API Line3D fromCartesian(const Vector6d &cart)
#define G2O_TYPES_SLAM3D_ADDONS_API
G2O_TYPES_SLAM3D_ADDONS_API void setD(const Vector3D &d_)
G2O_TYPES_SLAM3D_ADDONS_API friend Line3D operator*(const Isometry3D &t, const Line3D &line)
G2O_TYPES_SLAM3D_ADDONS_API void setW(const Vector3D &w_)
Vector6d normalizeCartesianLine(const Vector6d &line)
Matrix< double, 6, 1, Eigen::ColMajor > Vector6d