Hej Julius,

thanks for the hint concerning the gimbal lock, I will change to the quaternion representation.

The problem converges with and without constraints to the optimal solution if I use two identical point sets. If I use the two point sets I actually want to register it does not converge at all (with and without constraints). I know, that both point sets do not fit perfectly but they fit better than what my algorithm produces.

I calculate my Jacobian analytically, but I will compare it to a numerical solution.


Best regards
Anja


On 06/04/2013 04:19 PM, Julius Ziegler wrote:
Hi Anja,

On 06/04/2013 09:40 AM, Anja Schäfer wrote:
Hello Julius (hello List),

my constraint condition is that both point clouds should never intersect
each other. In mathematical terms this is written as: c(k,p,w) = n_i *
(R*p_i - x_i) > 0 or < 0 for all i.
If c < 0 or c > 0 is valid is determined for all i before the
minimization problem is started.

Ok, I understand. The constraints are almost linear then, if your angles are small (up to the rotation matrix).

x_i is a point from the model point set, p_i from the data point set
(that is being 'moved' to x_i), n_i are the normals for each point x_i
and R is a standard rotational matrix (R \in SO(3)). k,w,p are the
rotational angles (k = rotation around x-axis, p = rotation around
y-axis, w = rotation around z-axis).

Parametising a rotation matrix like this is problematic, since it can lead to the gimbal lock problem (http://en.wikipedia.org/wiki/Gimbal_lock). This is, unless you are using incremental (i.e. small) angles. You might want to switch to another representation of 3D-rotation, like quaternions.

The gimbal lock _can_ be the source of your problem, since near the gimbal lock, you will get problems with the Jacobian of your objective function (and I think the Hessian will be undefined).

And yes, my initial solution is in the feasible region.

Does your problem converge with constraints turned of?

Do you calculate Jacobians numerically or analytically? If analytically, double check it by comparing to a numerically calculated Jacobian. In my experience, 90% of all problems I had with optimization where due to wrong Jacobians.

Best,
Julius

--
Anja Schäfer

Interdisciplinary Center for
Scientific Computing - IWR
Heidelberg University

Im Neuenheimer Feld 368, Room 531
69120 Heidelberg, Germany

Email  [email protected]
Web    http://www.iwr.uni-heidelberg.de/groups/agbock/USER_PAGES/SCHAEFER_ANJA/


_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss

Reply via email to