| Constraint Relaxation IK in 2D - Local Minima |
|
|
| Monday, 13 April 2009 00:00 | |||||||||||||||
Page 5 of 6
Local MinimaConstraint relaxation has a similar set of local minima to those found in CCD. From certain initial poses, the algorithm will fail to find the proper solution to a problem. Fortunately, this doesn't come up often in practice and depending on the requirements of your IK simulation and the mobility of your kinematic chain, you may never see it.
Given a two bone chain where both bones start with no rotation, we can place the target in a position that will lock up the constraint relaxation at an invalid result. Our initial setup can be seen in figure 2a.
If the constraint relaxation was able to give us a valid solution, bone1 would bend away from the target allowing bone2 to bend towards the target. One possible valid solution is shown in figure 2b.
When actually performing the algorithm, we will get stuck at a local minimum (see figure 2c). The first step will point bone2 towards the target. This makes bone1 and bone2 collinear. It is now bone1's turn to resolve its distance constraint which will not break the collinearity. Neither of these steps rotated bone1 away from the target and we end up in a situation where neither bone will move as we continue to iterate the algorithm.
The algorithm considers one joint at a time with no care about how the rest of the joints behave. The only part of the algorithm that even recognizes the joint hierarchy is the requirement that we loop backwards from the end joint to the root joint. It should also be noted that the individual steps of the algorithm aren't aware that they are part of a larger iteration towards a solution. This creates a fairly myopic view of the larger IK problem when resolving a single joint's distance constraint. I would be interested in developing a way to detect and resolve these lock ups, but am yet to require such a robust system in practice.
|
|||||||||||||||
| Last Updated ( Sunday, 02 May 2010 06:30 ) | |||||||||||||||





