TORO  News and Updates
20080126
New version of TORO has been released that fixes some convergence problems
in 3D datasets (the distribution of the rotation error in 3D has changed).
20080126
New version of TORO has been released that fixes some convergence problems
in 3D datasets (the distribution of the rotation error in 3D has changed).
(logo artwork by Christian Plagemann)
Giorgio Grisetti, Cyrill Stachniss, Slawomir Grzonka, and Wolfram Burgard A Tree Parameterization for Efficiently Computing Maximum Likelihood Maps using Gradient Descent. Robotics: Science and Systems (RSS), Atlanta, GA, USA, 2007. paper (8 pg, pdf) 

Grisetti Giorgio, Slawomir Grzonka, Cyrill Stachniss, Patrick Pfaff, and Wolfram Burgard Efficient Estimation of Accurate Maximum Likelihood Maps in 3D. In Proc. of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2007. paper (7 pg, pdf)  WARNING: The math in this paper can cause convergence problems in 3D datasets resulting from the distribution of the rotation error. The implementation is fixed so that this issue does not arise. 
The source code is available via svn:
svn co https://www.openslam.org/data/svn/toro
The software is written in C++ (GNU C++ compiler, developed under Linux) and requires no
additional libraries or has any other dependency than the standard template library.
A doxygen documentaion is available.
A set of simple text messages to represent nodes
and edges of the graph. Note that examples files are in the repository, see folder data.
Format of the 2D graph files:
Every line in the file specifies either one vertex or one edge
The vertices are specified as follws:
VERTEX2 id x y orientation
(A 2D node in the graph)
EDGE2 observed_vertex_id observing_vertex_id forward sideward rotate inf_ff inf_fs inf_ss inf_rr inf_fr inf_sr
(A 2Dedge in the graph. inf_xx are the information matrix entries of the constraint)
EQUIV id1 id2
(Equivalence constraints between nodes. It merges the node id1 and id2 wrt to the constraint between both vertices.)
Format of the 3D graph files:
Every line in the file specifies either one vertex or one edge
The vertices are specified as follws:
VETREX3 x y z phi theta psi
The edges are specified as follows:
EDGE3 observed_vertex_id observing_vertex_id x y z roll pitch yaw inf_11 inf_12 .. inf_16 inf_22 .. inf_66
(the information matrix is specified via its upper triangular block that means 21 values).
Some 2D and 3D examples files are in the repository, see folder data.