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