g2o
|
Namespaces | |
g2o | |
Functions | |
int | computeUpperTriangleIndex (int i, int j) |
template<typename MatrixType > | |
void | axpy (const MatrixType &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff) |
template<int t> | |
void | axpy (const Eigen::Matrix< double, Eigen::Dynamic, t > &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff) |
template<> | |
void | axpy< Eigen::MatrixXd > (const Eigen::MatrixXd &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff) |
template<typename MatrixType > | |
void | atxpy (const MatrixType &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff) |
template<int t> | |
void | atxpy (const Eigen::Matrix< double, Eigen::Dynamic, t > &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff) |
template<> | |
void | atxpy< Eigen::MatrixXd > (const Eigen::MatrixXd &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff) |
template<typename MatrixType > | |
void | pcg_axy (const MatrixType &A, const VectorXD &x, int xoff, VectorXD &y, int yoff) |
template<> | |
void | pcg_axy (const MatrixXD &A, const VectorXD &x, int xoff, VectorXD &y, int yoff) |
template<typename MatrixType > | |
void | pcg_axpy (const MatrixType &A, const VectorXD &x, int xoff, VectorXD &y, int yoff) |
template<> | |
void | pcg_axpy (const MatrixXD &A, const VectorXD &x, int xoff, VectorXD &y, int yoff) |
template<typename MatrixType > | |
void | pcg_atxpy (const MatrixType &A, const VectorXD &x, int xoff, VectorXD &y, int yoff) |
template<> | |
void | pcg_atxpy (const MatrixXD &A, const VectorXD &x, int xoff, VectorXD &y, int yoff) |
void | compute_dq_dR_w (Eigen::Matrix< double, 3, 9 > &dq_dR_w, const double &qw, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22) |
void | compute_dq_dR_x (Eigen::Matrix< double, 3, 9 > &dq_dR_x, const double &qx, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22) |
void | compute_dq_dR_y (Eigen::Matrix< double, 3, 9 > &dq_dR_y, const double &qy, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22) |
void | compute_dq_dR_z (Eigen::Matrix< double, 3, 9 > &dq_dR_z, const double &qz, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22) |
void | compute_dR_dq (Eigen::Matrix< double, 9, 3 > &dR_dq, const double &qx, const double &qy, const double &qz, const double &qw) |
int | _q2m (double &S, double &qw, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22) |
void | compute_dq_dR (Eigen::Matrix< double, 3, 9, Eigen::ColMajor > &dq_dR, const double &r11, const double &r21, const double &r31, const double &r12, const double &r22, const double &r32, const double &r13, const double &r23, const double &r33) |
void G2O_TYPES_SLAM3D_API | compute_dR_dq (Eigen::Matrix< double, 9, 3, Eigen::ColMajor > &dR_dq, const double &qx, const double &qy, const double &qz, const double &qw) |
template<typename Derived , typename DerivedOther > | |
void | skew (Eigen::MatrixBase< Derived > &s, const Eigen::MatrixBase< DerivedOther > &v) |
template<typename Derived , typename DerivedOther > | |
void | skewT (Eigen::MatrixBase< Derived > &s, const Eigen::MatrixBase< DerivedOther > &v) |
template<typename Derived , typename DerivedOther > | |
void | skew (Eigen::MatrixBase< Derived > &Sx, Eigen::MatrixBase< Derived > &Sy, Eigen::MatrixBase< Derived > &Sz, const Eigen::MatrixBase< DerivedOther > &R) |
template<typename Derived , typename DerivedOther > | |
void | skewT (Eigen::MatrixBase< Derived > &Sx, Eigen::MatrixBase< Derived > &Sy, Eigen::MatrixBase< Derived > &Sz, const Eigen::MatrixBase< DerivedOther > &R) |
template<typename Derived > | |
void | computeEdgeSE3Gradient (Isometry3D &E, Eigen::MatrixBase< Derived > const &JiConstRef, Eigen::MatrixBase< Derived > const &JjConstRef, const Isometry3D &Z, const Isometry3D &Xi, const Isometry3D &Xj, const Isometry3D &Pi, const Isometry3D &Pj) |
template<typename Derived > | |
void | computeEdgeSE3Gradient (Isometry3D &E, Eigen::MatrixBase< Derived > const &JiConstRef, Eigen::MatrixBase< Derived > const &JjConstRef, const Isometry3D &Z, const Isometry3D &Xi, const Isometry3D &Xj) |
template<typename Derived > | |
void | computeEdgeSE3PriorGradient (Isometry3D &E, const Eigen::MatrixBase< Derived > &JConstRef, const Isometry3D &Z, const Isometry3D &X, const Isometry3D &P=Isometry3D()) |
Eigen::Quaterniond | normalized (const Eigen::Quaterniond &q) |
Eigen::Quaterniond & | normalize (Eigen::Quaterniond &q) |
Vector3D | toEuler (const Matrix3D &R) |
Matrix3D | fromEuler (const Vector3D &v) |
Vector3D | toCompactQuaternion (const Matrix3D &R) |
Matrix3D | fromCompactQuaternion (const Vector3D &v) |
Vector6d | toVectorMQT (const Isometry3D &t) |
Vector6d | toVectorET (const Isometry3D &t) |
Vector7d | toVectorQT (const Isometry3D &t) |
Isometry3D | fromVectorMQT (const Vector6d &v) |
Isometry3D | fromVectorET (const Vector6d &v) |
Isometry3D | fromVectorQT (const Vector7d &v) |
SE3Quat | toSE3Quat (const Isometry3D &t) |
Isometry3D | fromSE3Quat (const SE3Quat &t) |
Isometry3D::ConstLinearPart | extractRotation (const Isometry3D &A) |
template<typename Derived > | |
void | nearestOrthogonalMatrix (const Eigen::MatrixBase< Derived > &R) |
template<typename Derived > | |
void | approximateNearestOrthogonalMatrix (const Eigen::MatrixBase< Derived > &R) |
Vector6d | transformCartesianLine (const Isometry3D &t, const Vector6d &line) |
Vector6d | normalizeCartesianLine (const Vector6d &line) |
internal functions used inside g2o. Those functions may disappear or change their meaning without further notification
int g2o::internal::_q2m | ( | double & | S, |
double & | qw, | ||
const double & | r00, | ||
const double & | r10, | ||
const double & | r20, | ||
const double & | r01, | ||
const double & | r11, | ||
const double & | r21, | ||
const double & | r02, | ||
const double & | r12, | ||
const double & | r22 | ||
) |
void g2o::internal::approximateNearestOrthogonalMatrix | ( | const Eigen::MatrixBase< Derived > & | R | ) |
compute a fast approximation for the nearest orthogonal rotation matrix. The function computes the residual E = RR^T - I which is then used as follows: R := R - 1/2 R E
Definition at line 85 of file isometry3d_mappings.h.
References fromCompactQuaternion(), fromEuler(), fromSE3Quat(), fromVectorET(), fromVectorMQT(), fromVectorQT(), G2O_TYPES_SLAM3D_API, normalize(), normalized(), toCompactQuaternion(), toEuler(), toSE3Quat(), toVectorET(), toVectorMQT(), and toVectorQT().
Referenced by main(), and g2o::VertexSE3::oplusImpl().
|
inline |
Definition at line 54 of file matrix_operations.h.
|
inline |
Definition at line 60 of file matrix_operations.h.
|
inline |
Definition at line 66 of file matrix_operations.h.
|
inline |
Definition at line 36 of file matrix_operations.h.
|
inline |
Definition at line 42 of file matrix_operations.h.
|
inline |
Definition at line 48 of file matrix_operations.h.
void G2O_TYPES_SLAM3D_API g2o::internal::compute_dq_dR | ( | Eigen::Matrix< double, 3, 9, Eigen::ColMajor > & | dq_dR, |
const double & | r11, | ||
const double & | r21, | ||
const double & | r31, | ||
const double & | r12, | ||
const double & | r22, | ||
const double & | r32, | ||
const double & | r13, | ||
const double & | r23, | ||
const double & | r33 | ||
) |
Definition at line 42 of file dquat2mat.cpp.
References _q2m(), compute_dq_dR_w(), compute_dq_dR_x(), compute_dq_dR_y(), and compute_dq_dR_z().
Referenced by computeEdgeSE3Gradient(), computeEdgeSE3PriorGradient(), and main().
void g2o::internal::compute_dq_dR_w | ( | Eigen::Matrix< double, 3, 9 > & | dq_dR_w, |
const double & | qw, | ||
const double & | r00, | ||
const double & | r10, | ||
const double & | r20, | ||
const double & | r01, | ||
const double & | r11, | ||
const double & | r21, | ||
const double & | r02, | ||
const double & | r12, | ||
const double & | r22 | ||
) |
Definition at line 2 of file dquat2mat.cpp.
Referenced by compute_dq_dR().
void g2o::internal::compute_dq_dR_x | ( | Eigen::Matrix< double, 3, 9 > & | dq_dR_x, |
const double & | qx, | ||
const double & | r00, | ||
const double & | r10, | ||
const double & | r20, | ||
const double & | r01, | ||
const double & | r11, | ||
const double & | r21, | ||
const double & | r02, | ||
const double & | r12, | ||
const double & | r22 | ||
) |
Definition at line 41 of file dquat2mat.cpp.
Referenced by compute_dq_dR().
void g2o::internal::compute_dq_dR_y | ( | Eigen::Matrix< double, 3, 9 > & | dq_dR_y, |
const double & | qy, | ||
const double & | r00, | ||
const double & | r10, | ||
const double & | r20, | ||
const double & | r01, | ||
const double & | r11, | ||
const double & | r21, | ||
const double & | r02, | ||
const double & | r12, | ||
const double & | r22 | ||
) |
Definition at line 83 of file dquat2mat.cpp.
Referenced by compute_dq_dR().
void g2o::internal::compute_dq_dR_z | ( | Eigen::Matrix< double, 3, 9 > & | dq_dR_z, |
const double & | qz, | ||
const double & | r00, | ||
const double & | r10, | ||
const double & | r20, | ||
const double & | r01, | ||
const double & | r11, | ||
const double & | r21, | ||
const double & | r02, | ||
const double & | r12, | ||
const double & | r22 | ||
) |
Definition at line 125 of file dquat2mat.cpp.
Referenced by compute_dq_dR().
void G2O_TYPES_SLAM3D_API g2o::internal::compute_dR_dq | ( | Eigen::Matrix< double, 9, 3, Eigen::ColMajor > & | dR_dq, |
const double & | qx, | ||
const double & | qy, | ||
const double & | qz, | ||
const double & | qw | ||
) |
void g2o::internal::compute_dR_dq | ( | Eigen::Matrix< double, 9, 3 > & | dR_dq, |
const double & | qx, | ||
const double & | qy, | ||
const double & | qz, | ||
const double & | qw | ||
) |
Definition at line 167 of file dquat2mat.cpp.
void g2o::internal::computeEdgeSE3Gradient | ( | Isometry3D & | E, |
Eigen::MatrixBase< Derived > const & | JiConstRef, | ||
Eigen::MatrixBase< Derived > const & | JjConstRef, | ||
const Isometry3D & | Z, | ||
const Isometry3D & | Xi, | ||
const Isometry3D & | Xj, | ||
const Isometry3D & | Pi, | ||
const Isometry3D & | Pj | ||
) |
Definition at line 87 of file isometry3d_gradients.h.
References compute_dq_dR(), extractRotation(), skew(), and skewT().
Referenced by g2o::EdgeSE3::linearizeOplus(), and g2o::EdgeSE3Offset::linearizeOplus().
void g2o::internal::computeEdgeSE3Gradient | ( | Isometry3D & | E, |
Eigen::MatrixBase< Derived > const & | JiConstRef, | ||
Eigen::MatrixBase< Derived > const & | JjConstRef, | ||
const Isometry3D & | Z, | ||
const Isometry3D & | Xi, | ||
const Isometry3D & | Xj | ||
) |
Definition at line 194 of file isometry3d_gradients.h.
References compute_dq_dR(), extractRotation(), skew(), and skewT().
void g2o::internal::computeEdgeSE3PriorGradient | ( | Isometry3D & | E, |
const Eigen::MatrixBase< Derived > & | JConstRef, | ||
const Isometry3D & | Z, | ||
const Isometry3D & | X, | ||
const Isometry3D & | P = Isometry3D() |
||
) |
Definition at line 267 of file isometry3d_gradients.h.
References compute_dq_dR(), extractRotation(), and skew().
Referenced by g2o::deprecated::EdgeSE3Prior::linearizeOplus(), and g2o::EdgeSE3Prior::linearizeOplus().
|
inline |
Definition at line 29 of file base_multi_edge.h.
|
inline |
extract the rotation matrix from an Isometry3D matrix. Eigen itself performs an SVD decomposition to recover the nearest orthogonal matrix, since its rotation() function also handles a scaling matrix. An Isometry3D does not have a scaling portion and we assume that the Isometry3D is numerically stable while we compute the error and the Jacobians. Hence, we directly extract the rotation block out of the full matrix.
Note, we could also call .linear() on the Isometry3D. However, I dislike the name of that function a bit.
Definition at line 58 of file isometry3d_mappings.h.
Referenced by computeEdgeSE3Gradient(), computeEdgeSE3PriorGradient(), g2o::EdgeSE3Prior::initialEstimate(), toVectorET(), toVectorMQT(), and toVectorQT().
(qx qy, qz) -> Rotation matrix, whereas (qx, qy, qz) are assumed to be part of a quaternion which was normalized with the function above.
Definition at line 84 of file isometry3d_mappings.cpp.
Referenced by approximateNearestOrthogonalMatrix(), fromVectorMQT(), and main().
Euler angles (roll, pitch, yaw) -> Rotation matrix
Definition at line 59 of file isometry3d_mappings.cpp.
Referenced by approximateNearestOrthogonalMatrix(), fromVectorET(), and main().
Isometry3D g2o::internal::fromSE3Quat | ( | const SE3Quat & | t | ) |
convert from an old SE3Quat into Isometry3D
Definition at line 144 of file isometry3d_mappings.cpp.
References g2o::SE3Quat::rotation(), and g2o::SE3Quat::translation().
Referenced by approximateNearestOrthogonalMatrix(), and g2o::VertexSE3::G2O_ATTRIBUTE_DEPRECATED().
Isometry3D g2o::internal::fromVectorET | ( | const Vector6d & | v | ) |
(x, y, z, roll, pitch, yaw) -> Isometry3D
Definition at line 124 of file isometry3d_mappings.cpp.
References fromEuler().
Referenced by g2o::G2oSlamInterface::addEdge(), approximateNearestOrthogonalMatrix(), main(), g2o::VertexSE3Euler::read(), and g2o::EdgeSE3Euler::read().
Isometry3D g2o::internal::fromVectorMQT | ( | const Vector6d & | v | ) |
(x, y, z, qx, qy, qz) -> Isometry3D
Definition at line 117 of file isometry3d_mappings.cpp.
References fromCompactQuaternion().
Referenced by g2o::SensorOdometry3D::addNoise(), g2o::SensorPose3DOffset::addNoise(), g2o::SensorPose3D::addNoise(), g2o::SensorSE3Prior::addNoise(), approximateNearestOrthogonalMatrix(), main(), g2o::VertexSE3::oplusImpl(), g2o::OnlineVertexSE3::oplusUpdatedEstimate(), and g2o::VertexSE3::setMinimalEstimateDataImpl().
Isometry3D g2o::internal::fromVectorQT | ( | const Vector7d & | v | ) |
(x, y, z, qx, qy, qz, qw) -> Isometry3D
Definition at line 131 of file isometry3d_mappings.cpp.
Referenced by g2o::G2oSlamInterface::addEdge(), approximateNearestOrthogonalMatrix(), g2o::jac_quat3_euler3(), main(), g2o::EdgeSE3::read(), g2o::ParameterStereoCamera::read(), g2o::ParameterCamera::read(), g2o::EdgeSE3Prior::read(), g2o::EdgeSE3Offset::read(), g2o::EdgeSE3Calib::read(), g2o::ParameterSE3Offset::read(), g2o::VertexSE3::read(), g2o::VertexSE3::setEstimateDataImpl(), g2o::EdgeSE3::setMeasurementData(), and g2o::EdgeSE3Prior::setMeasurementData().
void g2o::internal::nearestOrthogonalMatrix | ( | const Eigen::MatrixBase< Derived > & | R | ) |
computes the nearest orthogonal matrix of a rotation matrix which might be affected by numerical inaccuracies. We periodically call this function after performinag a large number of updates on vertices. This function computes an SVD to reconstruct the nearest orthogonal matrix.
Definition at line 70 of file isometry3d_mappings.h.
Referenced by main().
Eigen::Quaterniond& g2o::internal::normalize | ( | Eigen::Quaterniond & | q | ) |
as above, but in-place
Definition at line 38 of file isometry3d_mappings.cpp.
Referenced by g2o::G2oSlamInterface::addEdge(), approximateNearestOrthogonalMatrix(), g2o::Plane3D::fromVector(), normalized(), g2o::Plane3D::oplus(), g2o::EdgeSE3::read(), g2o::ParameterStereoCamera::read(), g2o::ParameterCamera::read(), g2o::EdgeSE3Calib::read(), g2o::EdgeSE3Offset::read(), g2o::ParameterSE3Offset::read(), and toCompactQuaternion().
G2O_TYPES_SLAM3D_ADDONS_API Vector6d g2o::internal::normalizeCartesianLine | ( | const Vector6d & | line | ) |
Definition at line 115 of file line3d.cpp.
Referenced by main(), g2o::Line3D::ominus(), and transformCartesianLine().
Eigen::Quaterniond g2o::internal::normalized | ( | const Eigen::Quaterniond & | q | ) |
normalize the quaternion, such that ||q|| == 1 and q.w() > 0
Definition at line 32 of file isometry3d_mappings.cpp.
References normalize().
Referenced by approximateNearestOrthogonalMatrix().
|
inline |
Definition at line 67 of file linear_solver_pcg.h.
|
inline |
Definition at line 73 of file linear_solver_pcg.h.
|
inline |
Definition at line 55 of file linear_solver_pcg.h.
|
inline |
Definition at line 61 of file linear_solver_pcg.h.
|
inline |
Definition at line 42 of file linear_solver_pcg.h.
|
inline |
Definition at line 48 of file linear_solver_pcg.h.
|
inline |
Definition at line 43 of file isometry3d_gradients.h.
Referenced by computeEdgeSE3Gradient(), and computeEdgeSE3PriorGradient().
void g2o::internal::skew | ( | Eigen::MatrixBase< Derived > & | Sx, |
Eigen::MatrixBase< Derived > & | Sy, | ||
Eigen::MatrixBase< Derived > & | Sz, | ||
const Eigen::MatrixBase< DerivedOther > & | R | ||
) |
Definition at line 59 of file isometry3d_gradients.h.
|
inline |
Definition at line 51 of file isometry3d_gradients.h.
Referenced by computeEdgeSE3Gradient().
|
inline |
Definition at line 73 of file isometry3d_gradients.h.
Rotation matrix -> (qx qy, qz)
Definition at line 77 of file isometry3d_mappings.cpp.
References normalize().
Referenced by approximateNearestOrthogonalMatrix(), main(), and toVectorMQT().
Rotation matrix -> Euler angles (roll, pitch, yaw)
Definition at line 47 of file isometry3d_mappings.cpp.
Referenced by approximateNearestOrthogonalMatrix(), main(), g2o::G2oSlamInterface::printVertex(), and toVectorET().
SE3Quat g2o::internal::toSE3Quat | ( | const Isometry3D & | t | ) |
convert an Isometry3D to the old SE3Quat class
Definition at line 138 of file isometry3d_mappings.cpp.
Referenced by approximateNearestOrthogonalMatrix(), and g2o::VertexSE3::G2O_ATTRIBUTE_DEPRECATED().
Vector6d g2o::internal::toVectorET | ( | const Isometry3D & | t | ) |
Isometry3D -> (x, y, z, roll, pitch, yaw)
Definition at line 101 of file isometry3d_mappings.cpp.
References extractRotation(), and toEuler().
Referenced by approximateNearestOrthogonalMatrix(), g2o::jac_quat3_euler3(), main(), g2o::VertexSE3Euler::write(), and g2o::EdgeSE3Euler::write().
Vector6d g2o::internal::toVectorMQT | ( | const Isometry3D & | t | ) |
Isometry3D -> (x, y, z, qx, qy, qz)
Definition at line 94 of file isometry3d_mappings.cpp.
References extractRotation(), and toCompactQuaternion().
Referenced by approximateNearestOrthogonalMatrix(), g2o::OnlineEdgeSE3::chi2(), g2o::EdgeSE3::computeError(), g2o::EdgeSE3Calib::computeError(), g2o::EdgeSE3Prior::computeError(), g2o::EdgeSE3Offset::computeError(), g2o::VertexSE3::getMinimalEstimateData(), main(), g2o::EdgeSE3WriteGnuplotAction::operator()(), and g2o::VertexSE3WriteGnuplotAction::operator()().
Vector7d g2o::internal::toVectorQT | ( | const Isometry3D & | t | ) |
Isometry3D -> (x, y, z, qx, qy, qz, qw)
Definition at line 108 of file isometry3d_mappings.cpp.
References extractRotation().
Referenced by approximateNearestOrthogonalMatrix(), g2o::VertexSE3::getEstimateData(), g2o::EdgeSE3::getMeasurementData(), g2o::EdgeSE3Prior::getMeasurementData(), g2o::jac_quat3_euler3(), main(), g2o::EdgeSE3::write(), g2o::ParameterStereoCamera::write(), g2o::ParameterCamera::write(), g2o::EdgeSE3Prior::write(), g2o::EdgeSE3Calib::write(), g2o::EdgeSE3Offset::write(), g2o::ParameterSE3Offset::write(), and g2o::VertexSE3::write().
G2O_TYPES_SLAM3D_ADDONS_API Vector6d g2o::internal::transformCartesianLine | ( | const Isometry3D & | t, |
const Vector6d & | line | ||
) |
Definition at line 108 of file line3d.cpp.
References normalizeCartesianLine().
Referenced by main(), and g2o::Line3D::ominus().