The Orthonormalization Library Documentation
[Introduction] [Compilation] [Use] [License] [Disclaimer]



Introduction

This is a software accompanying the paper:

  • On Closed-Form Formulas for the 3D Nearest Rotation Matrix Problem

by

  • S. Sarabandi, A. Shabani, J. M. Porta and F. Thomas

submitted to the IEEE Transactions on Robotics.

Compilation

First, generate the makefiles

  • cd build
  • cmake ..

And now we compile

  • make

The default compilation uses single precision. You can change the precision directly at the cmake command line:

  • cmake -DDOUBLE_PRECISION=ON ..

Finally, to generate this documentation type

  • make doc

The html documentation can be browsed from doc/html/index.html

Use

To obtain the plots in the paper (Figs. 4 and 5) execute the following steps:

  • Change to the main folder: cd ..
  • Execute the test program:
    • bin/testON
  • Open Matlab
  • Change to the 'results' folder, and
  • Execute:
    • [errorbound_cpp_uniform_float,error_cpp_uniform_float,time_cpp_uniform_float]=results_cpp_uniform_float();
    • PlotResults(errorbound_cpp_uniform_float,error_cpp_uniform_float);
    _ The average execution times (in microseconds) are obtained with:
    • mean(time_cpp_uniform_float,2)*1e6

The command line options for the testON application are:

  • -l level Fixes the lower level of noise to be considered. The default is 0.
  • -u level Fixes the upper level of noise to be considered. The default is 0.5.
  • -t ticks Fixes the number of ticks used to discretize the noise range. The default is 100.
  • -m m00 m01 m02 m10 m11 m12 m20 m21 m22 Fixes the matrix to be used in the testing (the matrix to be corrupted with the noise).
  • -r num Fixes the number of random noisy rotation matrices to be used for each level of noise. The default is 1000000.
  • -g Uses Gaussian distributions for the noise instead of uniform ones.
  • -s seed Fixes the random seed. The default is initialized at radom (using the current time). The results included in the paper where obtained with the random seed fixed to 1569492783.
  • -p Prints the results on screen (in addition to saving them to files). The default is not to print them.
  • -q Quiet operation. If set, nothing is printed during the tests.

When using Gaussian distribution (option -g in the command line) _uniform is replaced by _gaussian in the output file names.

For double precision the file names and the Matlab variables end in _double instead of _float.

Alternatively, you can use the csv files also stored in the results folder.

The Matlab folder includes a Matlab implementation of the methods described in the paper.

License

The software has been developed by the KRD group at IRI and is licensed under GPLv3 License.

Disclaimer

This software is distributed in the hope that it will be useful, but without any warranty. it is provided "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. should the program prove defective, the KRD group does not assume the cost of any necessary servicing, repair or correction.

In no event unless required by applicable law the author will be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other programs), even if the author has been advised of the possibility of such damages.