Documentation of local parametrization

159 views
Skip to first unread message

Kyle

unread,
Sep 19, 2017, 6:58:52 AM9/19/17
to Ceres Solver
Hi everyone,
I have one question about local parametrizations: homogeneous vector and quaternion.

Ceres implement local parametrization for homogeneous vector [HarleyZisserman] (with correction) in the code.
but I see in Ceres' documentation that you show a different form.
Is there something wrong in the documentation? or Two forms are equivalent? and how?

For quaternion, I find a local parametrization in the article:
J. Schmidt and H. Niemann, "Using Quaternions for Parametrizing 3–D Rotations in Unconstrained Nonlinear Optimization",  VMV01.
It seems different from Ceres' documentation.
Can anyone tell me which article/book in the bibliography is implemented in Ceres?

Thanks for all your help.

Schmidt01-UQF.pdf

Mike Vitus

unread,
Sep 20, 2017, 12:22:22 PM9/20/17
to Ceres Solver
Hi Kyle,

The homogeneous vector local parameterization should follow Harley And Zisserman's.  Can you explain where you think they differ?

In regards to the quaternion local parameterization. The one implemented in Ceres is based on the exponential map. You can think of the local parameter as an angle axis representation where x = theta * v with ||v|| = 1.  This is then converted to a quaternion through standard formulas and then used to update the quaternion through normal quaternion multiplication. Unfortunately, there aren't great references on this, but this might help.

cheers,
Mike

Kyle

unread,
Sep 21, 2017, 3:54:55 AM9/21/17
to Ceres Solver
Thanks for your rely,
 
The homogeneous vector local parameterization should follow Harley And Zisserman's.  Can you explain where you think they differ?

and that in Ceres' code (Harley And Zisserman's) are different.

Can you confirm that there is still one error in Harley And Zisserman's correction (attached file), (page 5, last line)?
f(y) should be (sinc(||y||/2) y^T/2, cos(||y||/2))^T

 
In regards to the quaternion local parameterization. The one implemented in Ceres is based on the exponential map. You can think of the local parameter as an angle axis representation where x = theta * v with ||v|| = 1.  This is then converted to a quaternion through standard formulas and then used to update the quaternion through normal quaternion multiplication. Unfortunately, there aren't great references on this, but this might help.
Kyle 
HZerrors3.pdf

Kyle

unread,
Sep 21, 2017, 10:36:14 AM9/21/17
to Ceres Solver
In regards to the quaternion local parameterization. The one implemented in Ceres is based on the exponential map. You can think of the local parameter as an angle axis representation where x = theta * v with ||v|| = 1.  This is then converted to a quaternion through standard formulas and then used to update the quaternion through normal quaternion multiplication. Unfortunately, there aren't great references on this, but this might help.

If we consider Deltax as an angle axis representation, then convert it to a quaternion, and then update through normal quaternion multiplication,
Eq.(3) should be x' = [cos(||Deltax||/2), sinc(||Deltax||/2)  Deltax/2] x     ?
 (follow Harley And Zisserman's, A.4.3.3 with correction)

Kyle


Kyle

unread,
Sep 26, 2017, 4:57:54 AM9/26/17
to Ceres Solver
 Nonlinear optimization moves x to a new point x' on the unit sphere.
The quaternion difference between these two quaternions is  Deltaq = x' x^{-1}
(multiplication between two quaternions)
Deltaq is a unit quaternion since x and x' are unit quaternions.
Thus, there exists a vector v \in R^3, ||v|| = 1 and theta \in R such that Deltaq = [cos(theta), sin(theta) v].
(Proposition 12, Erik B. Dam, Quaternions, Interpolation and Animation, 1998).
The vector Deltax is defined by Deltax = theta v.
Finally, the update operator is defined by the multiplication between two quaternions
x' = [cos(||Deltax||), sin(||Deltax||) Deltax / ||Deltax||] x 

Note that, Deltax is not angle-axis representation of quaternion Deltaq.
2 theta v is the angle-axis representation of Deltaq.

Topic closed.

Thanks for the excellent library.
Kyle





Reply all
Reply to author
Forward
0 new messages