RainerKuemmerle / g2o

g2o: A General Framework for Graph Optimization
3.04k stars 1.1k forks source link

Jacobian of Edge SE3 PointXYZ #134

Open felixendres opened 7 years ago

felixendres commented 7 years ago

Hi all, in the Jacobian computation of EdgeSE3PointXYZ the first 3x3 block (i.e., J.block<3,3>(0,0)) is always the negative identity matrix.

I do not understand why it is negative. The same goes for the sign of the second block, J.block<3,3>(3,0). From my derivations, I would think it should be the negative cross-product-matrix of the point vp (-[vp]_x). And why is it scaled by two?

The error function computes something equivalent to R * vp + t - z, (where R is the pose's rotation, t its translation, vp the estimate of the point and z the measurement). But the Jacobian is that of z - (R*vp + t), isn't it?

I'm pretty sure it works as it is, but I don't see my mistake. Could someone help me out?

Lisiyuan555 commented 1 year ago

hello, I can understand that jacobian is negative but do you know why there is a factor 2? e.g. J(0, 4) = -2 * Zcam(2);