New in ROS Fuerte
slam_backend
The SLAM Backend provides an interface to graph construction and optimization tools. It essentially forms the map of our SLAM system and uses pose estimates from the visual odometry to form the nodes of a graph. It also corrects drift in the VO estimates when the Place Recognition node flags a match between views.Subscribed Topics
vo/transform (geometry_msgs/PoseWithCovarianceStamped)- The robot's pose, twist and covariances calculated by the visual odometry node
- Message (from geometric_verification) which triggers the addition of both an interpolated vertex between existing nodes and an edge between the interpolated node and a new node corresponding to the robot's latest position, following the detection of a loop closure event.
Published Topics
node_added (slam_backend/NodeAdded)- Notifies the image cache that a node has been added to the graph, transmits the timestamp of the VO message that triggered the addition together with the Vertex ID allocated to the node by the graph constructor.
- Publishes ellipses which denote the location and uncertainty of nodes in the SLAM graph. Yellow ellipses denote standard vertexes generated as the result of integrating visual odometry. Red ellipses are interpolated vertexes created when a loop closure event occurs.
- Publishes red lines denoting edges between vertexes in the slam graph generated from loop closure events.
Parameters
~vo_topic (string, default: /vo/odometry)- The topic on which visual odometry is published
- Name of the world frame in which the map lives
- Cumulative distance (in metres, in the visual odometry frame) which the robot should travel before creatig a new vertex in the graph.
- How often (in Hz) to publish visualization messages to rviz.
Note about g2o compatibility
Using the latest version of libg2o (installed in package ros-fuerte-libg2o) means this package will not compile. Instead download the stable version of g2o from svn on openslam.org, remove the ros version of the library and compile against the openslam version instead. You may need to add the library directory using LD_LIBRARY_PATH environment variable.