Institut de Robòtica i Informàtica Industrial
KRD Group

The CuikSuite Project

FAQ.txt File Reference

CuikSuite Frequently Asked Questions. More...


Detailed Description

Is CuikSuite completely bug-free?

No.

At this time we are not aware of any bug but CuikSuite has more than 20.000 lines of code (without considering the simplex implementation): it is almost for sure than several bugs are hiding somewhere.

Is CuikSuite completely numerically safe?

No.

The numerical stability of CuikSuite heavely depend on that of the simplex routine. Initially we used the glpk simplex implementation which is fast and numericaly quite robuts, however, recently we moved to the CLP simplex implementation since, although it is a bit slower than glpk
it is much more robust. However, CLP can still fail for extremely ill conditioned problems, specially when the boxes are very small and complex linear relaxations are still used to bound the functions (i.e., when the LR2TM_Q and LR2TM_S parameters are very small, or even 0). The different hyperplanes generated in a linear relaxation of a given function on a small box are almost coincident. In those cases, it is preferrable to use simple linear relaxations derived from Taylor expansions. The parameters LR2TM_Q and LR2TM_S set the threshold to switch from traditional linear relaxations to simple ones for quadratic (parabolas, circles, spheres) and saddle equations.

As a general rule:

  • Avoid too small LR2TM_Q and LR2TM_S values. Something around SIGMA should be OK.
  • Avoid too high RHO values. Something around 0.5 should be OK. High values of RHO forces the box reduction to iterate over and over on boxes and in the limit some numerical issues could appear.

CuikSuite does not find all the solutions of my problem

This is very unlikely, but not impossible. CuikSuite is designed and implemented to deliver save approximations to the solutions sets. Therefore, it is more likely to deliver boxes that are close to be solutions but not actual solutions than to lose solution points.

The less save aspects of the CuikSuite implementation is the simplification process. When replacing a variable $x$ by $y+b$, tiny rounding issues appear in the coefficients of the equations. Some work-arounds are implemented to cope this these issues, but in extreme cases they are not enough. If you think your problem is one of those extreme cases try to reduce the simplification level, that is, set parameter SIMPLIFICATION_LEVEL to a lower value. The default value is 2. Set it to 1 or even to 0 to get slower but safer solution processes. On the other hand, if you like to live in the wild side, set this parameter to 3 to get lower execution times.

In your paper X you say problem Y can be solved in Z seconds but I dowloaded CuikSuite and I got different results.

CuikSuite is continously evolving. Improvements in the numerical stability result, in general, in larger execution times. Improvements in the formulations result, in general, in smaller execution times. These are the two main factors that have influence in the results.

I executed cuik several times on the same problem and I get slighly different results

There is a random component in cuik when selecting the split range and the split point in this range.

What is the syntax of the world files?

We have a leafet describing this syntax.

At this point the leafet is incomplete so maybe it is better to learn it from the examples.

What is the syntax of the cuik files?

We have a leafet describing this syntax. However, the syntax is simple enoug to learn it from the examples.

Remember that you have to use cuikequations to generate cuik files from the world files.

Cuik is not that quick.

Cuik is quite efficient compared with other solvers based on interval Newton methods or Bernstein-based polytopes. However, if you address complex problem you should not expect short execution times.
By the way, cuik stands for "Complete Universal Inverse Kinematics", to emphasize that the system can solve the input-output problem (inverse kinematics) on an arbitrary linkage (universal), and find all of its solutions (complete).

What kind of support do you offer for the CuikSuite?

None. We are working on extending the capabilities of the solver and on applying CuikSuite to different problems and, therefore, we do not have time to provide any support for external users.

I have found a bug in the code, could you please fix it for me?

No. However I'd be very gratefull if yo fix it and send me the patch so that other users can benefit from your contribution.

Do you plan future releases of the package?

Most likely not as far as the basic solver is concerned.
However, rigth now we are basically working on applications (i.e., in more examples) and in path planning extensions.

What is the development cost of the CuikSuite?

As estimated by David A. Wheeler's SLOCCount and without taking into account the cost of developing the examples :

  • Total Physical Source Lines of Code (SLOC) = 23,058
  • Development Effort Estimate, Person-Years (Person-Months) = 5.40 (64.74)
    (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
  • Schedule Estimate, Years (Months) = 1.02 (12.20)
    (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
  • Estimated Average Number of Developers (Effort/Schedule) = 5.31
  • Total Estimated Cost to Develop = $ 728,793
    (average salary = $56,286/year, overhead = 2.40).


Definition in file FAQ.txt.