107 for (
int i = 0; i < 3; i++) is >>
_measurement.normal0[i];
111 for (
int i = 0; i < 3; i++) is >>
_measurement.normal1[i];
123 prec << v, 0, 0, 0, v, 0, 0, 0, 1;
139#ifdef GICP_ANALYTIC_JACOBIANS
150 Matrix3 R0T = vp0->
estimate().matrix().topLeftCorner<3, 3>().transpose();
176 for (
int i = 0; i < 3; i++) os <<
measurement().pos0[i] <<
" ";
177 for (
int i = 0; i < 3; i++) os <<
measurement().normal0[i] <<
" ";
180 for (
int i = 0; i < 3; i++) os <<
measurement().pos1[i] <<
" ";
181 for (
int i = 0; i < 3; i++) os <<
measurement().normal1[i] <<
" ";
194#ifdef SCAM_ANALYTIC_JACOBIANS
205 trans.head<3>() = vc->
estimate().translation();
209 Eigen::Matrix<double, 3, 1, Eigen::ColMajor> pc = vc->
w2n * pt;
216 double ipz2 = 1.0 / (pz * pz);
218 std::cout <<
"[SetJac] infinite jac" << std::endl;
222 double ipz2fx = ipz2 * vc->
Kcam(0, 0);
223 double ipz2fy = ipz2 * vc->
Kcam(1, 1);
226 Eigen::Matrix<double, 3, 1, Eigen::ColMajor> pwt;
233 Eigen::Matrix<double, 3, 1, Eigen::ColMajor> dp =
238 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
244 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
250 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
253 dp = -vc->
w2n.col(0);
257 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
258 dp = -vc->
w2n.col(1);
262 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
263 dp = -vc->
w2n.col(2);
267 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
275 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
280 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
285 (pz * dp(0) - (px - b) * dp(2)) * ipz2fx;
BaseFixedSizedEdge< D, EdgeGICP, VertexSE3, VertexSE3 >::template JacobianType< D, VertexXj::Dimension > & _jacobianOplusXj
BaseFixedSizedEdge< D, EdgeGICP, VertexSE3, VertexSE3 >::template JacobianType< D, VertexXi::Dimension > & _jacobianOplusXi
EIGEN_STRONG_INLINE const Measurement & measurement() const
accessor functions for the measurement represented by the edge
EIGEN_STRONG_INLINE const InformationType & information() const
information matrix of the constraint
Measurement _measurement
the measurement of the edge
virtual void linearizeOplus()
const EstimateType & estimate() const
return the current estimate of the vertex
virtual bool read(std::istream &is)
read the vertex from a stream, i.e., the internal state of the vertex
virtual void linearizeOplus()
virtual bool write(std::ostream &os) const
write the vertex to a stream
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Edge_XYZ_VSC()
virtual bool read(std::istream &is)
read the vertex from a stream, i.e., the internal state of the vertex
virtual bool write(std::ostream &os) const
write the vertex to a stream
VertexContainer _vertices
const Vertex * vertex(size_t i) const
abstract Vertex, your types must derive from that one
bool fixed() const
true => this node is fixed during the optimization
Vertex for a tracked point in space.
Stereo camera vertex, derived from SE3 class. Note that we use the actual pose of the vertex as its p...
virtual bool write(std::ostream &os) const
write the vertex to a stream
virtual bool read(std::istream &is)
read the vertex from a stream, i.e., the internal state of the vertex
Eigen::Matrix< double, 3, 4, Eigen::ColMajor > w2n
EIGEN_MAKE_ALIGNED_OPERATOR_NEW VertexSCam()
3D pose Vertex, represented as an Isometry3
#define G2O_REGISTER_TYPE(name, classname)
#define G2O_REGISTER_TYPE_GROUP(typeGroupName)
#define G2O_ATTRIBUTE_CONSTRUCTOR(func)
constexpr double cst(long double v)
Eigen::Transform< double, 3, Eigen::Isometry, Eigen::ColMajor > Isometry3