TORO - Tree-based netwORk Optimizer

TORO is an optimization approach for constraint-network. It provides a highly efficient, gradient descent-based error minimization procedure. Currently (2007), there are not many such efficient methods available (at least we have not seen them yet...). There is a 2D and a 3D version of TORO available.

NEWS (31/12/2007) A new version is available which applies a new rule for updating the rotations for the constraint updates. This results is a significantly more stable solution in 6D.
Further information

Authors
Giorgio Grisetti; Cyrill Stachniss; Slawomir Grzonka; Wolfram Burgard;

Get the Source Code via SVN
svn co https://svn.openslam.org/data/svn/toro

Long Description
Recently, Olson et al. presented a novel approach to solve the graph-based SLAM problem by applying stochastic gradient descent to minimize the error introduced by constraints. TORO is an extension of Olson's algorithm. It applies a tree parameterization of the nodes in the graph that significantly improves the performance and enables a robot to cope with arbitrary network topologies. The latter allows us to bound the complexity of the algorithm to the size of the mapped area and not to the length of the trajectory.

Example Images

Correcting a sphere in 3D

A corrected network with 200k nodes

Small video (5k nodes/30k constraints)

Input Data
Nodes and edges of a graph.

Logfile Format
A set of simple text messages to represent nodes (VERTEX) and edges (EDGE) of the graph.

VERTEX id x y orientation (A 2D node in the graph - toro(2d))

EDGE observed_vertex_id observing_vertex_id forward sideward rotate cov_ff cov_fs cov_ss cov_rr cov_fr cov_sr (A 2D-edge in the graph. cov_xx are the covariance entries of the constraint - toro(2d))

EQUIV id1 id2 (Equivalence constraints between nodes. It merges the node id1 and id2 wrt to the constraint between both vertices. - toro(2d) and toro3d)

VERTEX3 id x y z phi theta psi (A 3D-node in the graph - toro3d)

EDGE3 observed_vertex_id observing_vertex_id x y z roll pitch yaw cov_11 cov_12 .. cov_16 cov_21 .. cov_66 (A 3D-edge in the graph. cov_xx are the covariance entries of the constraint - toro3d)


Type of Map
Graphs (nodes and edge)

Hardware/Software Requirements
Developed under Linux, GCC 4.0.2 but should work anywhere where GCC runs

Papers Describing the Approach
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), 2007 (link)

Grisetti Giorgio, Slawomir Grzonka, Cyrill Stachniss, Patrick Pfaff, and Wolfram Burgard: Efficient Estimation of Accurate Maximum Likelihood Maps in 3D., IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2007 (link)

License Information
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
The authors allow the users of OpenSLAM.org to use and modify the source code for their own research. Any commercial application, redistribution, etc has to be arranged between users and authors individually and is not covered by OpenSLAM.org.

TORO is licenced under the Creative Commons (Attribution-NonCommercial-ShareAlike).

Further Information
C++ code, quite compact, efficient, and stand-alone


*** OpenSLAM.org is not responsible for the content of this webpage ***
*** Copyright and V.i.S.d.P.: Giorgio Grisetti; Cyrill Stachniss; Slawomir Grzonka; Wolfram Burgard; ***