Show EOL distros:
Package Summary
RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.
- Maintainer status: maintained
- Maintainer: Mathieu Labbe <matlabbe AT gmail DOT com>
- Author: Mathieu Labbe
- License: BSD
- External website: http://introlab.github.io/rtabmap
- Bug / feature tracker: https://github.com/introlab/rtabmap/issues
- Source: git https://github.com/introlab/rtabmap.git (branch: hydro-devel)
Package Summary
RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.
- Maintainer status: maintained
- Maintainer: Mathieu Labbe <matlabbe AT gmail DOT com>
- Author: Mathieu Labbe
- License: BSD
- External website: http://introlab.github.io/rtabmap
- Bug / feature tracker: https://github.com/introlab/rtabmap/issues
- Source: git https://github.com/introlab/rtabmap.git (branch: indigo-devel)
Package Summary
RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.
- Maintainer status: maintained
- Maintainer: Mathieu Labbe <matlabbe AT gmail DOT com>
- Author: Mathieu Labbe
- License: BSD
- External website: http://introlab.github.io/rtabmap
- Bug / feature tracker: https://github.com/introlab/rtabmap/issues
- Source: git https://github.com/introlab/rtabmap.git (branch: jade-devel)
Package Summary
RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.
- Maintainer status: maintained
- Maintainer: Mathieu Labbe <matlabbe AT gmail DOT com>
- Author: Mathieu Labbe
- License: BSD
- External website: http://introlab.github.io/rtabmap
- Bug / feature tracker: https://github.com/introlab/rtabmap/issues
- Source: git https://github.com/introlab/rtabmap.git (branch: kinetic-devel)
Package Summary
RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.
- Maintainer status: maintained
- Maintainer: Mathieu Labbe <matlabbe AT gmail DOT com>
- Author: Mathieu Labbe
- License: BSD
- External website: http://introlab.github.io/rtabmap
- Bug / feature tracker: https://github.com/introlab/rtabmap/issues
- Source: git https://github.com/introlab/rtabmap.git (branch: lunar-devel)
Package Summary
RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.
- Maintainer status: maintained
- Maintainer: Mathieu Labbe <matlabbe AT gmail DOT com>
- Author: Mathieu Labbe
- License: BSD
- External website: http://introlab.github.io/rtabmap
- Bug / feature tracker: https://github.com/introlab/rtabmap/issues
- Source: git https://github.com/introlab/rtabmap.git (branch: melodic-devel)
Package Summary
RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.
- Maintainer status: maintained
- Maintainer: Mathieu Labbe <matlabbe AT gmail DOT com>
- Author: Mathieu Labbe
- License: BSD
- External website: http://introlab.github.io/rtabmap
- Bug / feature tracker: https://github.com/introlab/rtabmap/issues
- Source: git https://github.com/introlab/rtabmap.git (branch: noetic-devel)
Under construction!!!! moving Wiki from googlecode wiki
Author(s): Mathieu Labbé
Maintainer(s): Mathieu Labbé
License: BSD
Web page: http://introlab.github.io/rtabmap
Source: https://github.com/introlab/rtabmap-ros-pkg
Dependencies: RTAB-Map's standalone library (https://github.com/introlab/rtabmap)
Description: RTAB-Map (Real-Time Appearance-Based Mapping) is a RGB-D Graph SLAM approach based on a global Bayesian loop closure detector. The loop closure detector uses a bag-of-words approach to determinate how likely a new image comes from a previous location or a new location. When a loop closure hypothesis is accepted, a new constraint is added to the map's graph, then a graph optimizer minimizes the errors in the map. A memory management approach is used to limit the number of locations used for loop closure detection and graph optimization, so that real-time constraints on large-scale environnements are always respected. RTAB-Map can be used alone with a hand-held Kinect or stereo camera for 6DoF RGB-D mapping, or on a robot equipped with a laser rangefinder for 3DoF mapping.
Contents
Tutorials
Demos
Robot mapping
- For this demo, you will need the ROS bag demo_mapping.bag :
Launch: demo_robot_mapping.launch
$ roslaunch rtabmap demo_robot_mapping.launch $ rosbag play --clock demo_mapping.bag
Robot mapping with RVIZ
- For this demo, you will also need the ROS bag demo_mapping.bag :
Launch: demo_robot_mapping_rviz.launch
$ roslaunch rtabmap demo_robot_mapping_rviz.launch $ rosbag play --clock demo_mapping.bag
Multi-session mapping
- For this demo, you will need the ROS bags of five mapping sessions :
For the first launch, you can do "Edit->Delete memory" to make sure that you start from a clean memory.
Launch: demo_multi-session_mapping.launch
$ roslaunch rtabmap demo_multi-session_mapping.launch $ rosbag play --clock map1.bag $ (...) $ rosbag play --clock map2.bag $ (...) $ rosbag play --clock map3.bag $ (...) $ rosbag play --clock map4.bag $ (...) $ rosbag play --clock map5.bag
Robot mapping with Find-Object
Find-Object's ros-pkg find_object_2d should be installed.
ROS Bag: demo_find_object.bag.zip
Launch: demo_find_object.launch
$ roslaunch rtabmap demo_find_object.launch $ rosbag play --clock demo_find_object.bag
Stereo
Visit the page StereoOutdoorDemo more detailed information. It is also shown how to create 2D occupancy grid map for navigation.
Launch : demo_stereo_outdoor.launch
$ roslaunch rtabmap demo_stereo_outdoor.launch $ rosbag play --clock stereo_outdoorA.bag [...] $ rosbag play --clock stereo_outdoorB.bag
Appearance-based loop closure detection-only
Launch: demo_appearance_mapping.launch
$ roslaunch rtabmap demo_appearance_mapping.launch
- The GUI shows a plenty of information about the loop closures detected. If you only need the ID of the matched past image of a loop closure, you can do that:
$ rostopic echo /rtabmap/info/loopClosureId --- 0 --- 0 --- 3 --- 4 --- 4 --- 6 --- 0 --- 7 ---
- A "0" means no loop closure detected. This can be also used in localization mode:
$ roslaunch rtabmap demo_appearance_localization.launch
Nodes
rtabmap
This is the main node of this package. It is a wrapper of the RTAB-Map library. This is where the graph of the map is incrementally built and optimized when a loop closure is detected. The online output of the node is the local graph with the latest added data to the map (as well with RTAB-Map statistics). The default localization of the RTAB-Map database is "~/.ros/rtabmap.db" and the workspace is also set to "~/.ros" (use RTAB-Map parameters *Rtabmap/DatabasePath* and *Rtabmap/WorkingDirectory* to change the defaults).
Input topics
*odom* nav_msgs/Odometry
- required if parameters *subscribe_depth* or *subscribe_laserScan* are true
*scan* sensor_msgs/LaserScan
- required if parameter *subscribe_laserScan* is true
*rgb/image* sensor_msgs/Image
*depth/image* sensor_msgs/Image
- required if parameter *subscribe_depth* is true
*rgb/camera_info* sensor_msgs/CameraInfo
- required if parameter *subscribe_depth* is true
Output topics
- *info* [[rtabmap_Info|rtabmap/Info] ]
- Loop closure matching ids
*infoEx* rtabmap/InfoEx
- Loop closure matching ids sent + latest statistics
*mapData* rtabmap/MapData
- 3D map
Services
*update_parameters* std_srvs/Empty
- the node will update with current parameters of the rosparam server
*reset* std_srvs/Empty
- delete the map
*pause* std_srvs/Empty
- pause mapping
*resume* std_srvs/Empty
- resume mapping
*trigger_new_map* std_srvs/Empty
- the node will begin a new map
*get_map* rtabmap/GetMap
- Get 3D map
*set_mode_localization* std_srvs/Empty
- Set localization mode
*set_mode_mapping* std_srvs/Empty
- Set mapping mode
Arguments
- *--delete_db_on_start*
- Delete the RTAB-Map database on start. Database is located at "~/.ros/rtabmap.db".
- *--udebug*
- Show internal debug logs
- *--params*
- Show RTAB-Map parameters used in this node.
- *--params-all*
- Show all RTAB-Map parameters used or not used in this node.
Parameters
There are two set of parameters: ROS and RTAB-Map parameters. The ROS parameters are for connection stuff to interface the RTAB-Map library with ROS. The RTAB-Map parameters are those from the RTAB-Map library.
ROS
- *subscribe_depth* (bool, default true)
- *subscribe_laserScan* (bool, default false)
- *config_path* (string, default "")
- *frame_id* (string, default "base_link")
- *map_frame_id* (string, default "map")
- *queue_size* (int, default 10)
- synchronization queue size
- *tf_delay* (double, default 0.05)
- Rate at which the TF from /map to /odom is published (20 Hz)
- *rgb/image_transport* (string, default "raw")
- *depth/image_transport* (string, default "raw")
RTAB-Map
One way to know RTAB-Map library parameters is to look at this file : Parameters.h. There is a description for each parameter. Note that the "rtabmap.ini" file created when using the standalone application is not used by default, you should set the "config_path" parameter above to use it. Parameters explicitly defined in the launch file will overwrite those in the config file. Here an example (use string type for all RTAB-Map parameters):
<launch> <node name="rtabmap" pkg="rtabmap" type="rtabmap"> <param name="RGBD/ToroIterations" type="string" value="50"/> </node> </launch>
Another way to show available parameters from the terminal is to call the node with "--params" argument:
$ rosrun rtabmap rtabmap --params
rtabmapviz
This node starts the visualization interface of RTAB-Map. It is a wrapper of the RTAB-Map GUI library. It has the same purpose as *rqt_rviz* but with specific options for RTAB-Map.
Input topics
*odom* nav_msgs/Odometry
- required if parameters *subscribe_depth* or *subscribe_laserScan* are true
*scan* sensor_msgs/LaserScan
- required if parameter *subscribe_laserScan* is true
*rgb/image* sensor_msgs/Image
*depth/image* sensor_msgs/Image
- required if parameter *subscribe_depth* is true
*rgb/camera_info* sensor_msgs/CameraInfo
- required if parameter *subscribe_depth* is true
*infoEx* rtabmap/InfoEx
*mapData* rtabmap/MapData
Arguments
- *-d "rtabmap.ini"*
- Set a RTAB-Map ini file for GUI interface parameters.
Parameters
- *frame_id* (string, default "base_link")
- *subscribe_depth* (bool, default false)
- *subscribe_laserScan* (bool, default false)
- *queue_size* (int, 10)
- synchronization queue size
- *camera_node_name* (string, default "")
When rtabmap/camera node is used, set its name here and the GUI will be able to call the pause service from the camera.
- *rgb/image_transport* (string, default "raw")
- *depth/image_transport* (string, default "raw")
visual_odometry
This node wraps the visual odometry approach of RTAB-Map. Using RGBD images, odometry is computed using FAST/SIFT/SURF features extracted from the RGB images with their depth information from the depth images. Using the feature correspondences between the images, a RANSAC approach compute the transformation between the consecutive images. The approach is visual based so enough visual features must be present to compute the odometry. When it fails to update the odometry, a null transformation is sent to notify the receiver that odometry is not updated.
Input topics
*rgb/image* sensor_msgs/Image
*depth/image* sensor_msgs/Image
*rgb/camera_info* sensor_msgs/CameraInfo
Output topics
*odom* nav_msgs/Odometry
Services
*reset_odom* std_srvs/Empty
- restart odometry to identity transformation
Arguments
- *--params*
- Show RTAB-Map odometry parameters used in this node.
Parameters
There are two set of parameters: ROS and RTAB-Map parameters. The ROS parameters are for connection stuff to interface the RTAB-Map library with ROS. The RTAB-Map parameters are those from the RTAB-Map library.
ROS
- *frame_id* (string, default "base_link")
- *odom_frame_id* (bool, default "odom")
- *queue_size* (int, default 5)
- synchronization queue size
- *rgb/image_transport* (string, default "raw")
- *depth/image_transport* (string, default "raw")
RTAB-Map
See these examples in sample launch files:
Parameters available for odometry can be shown from the terminal by using the "--params" argument:
$ rosrun rtabmap visual_odometry --params
camera
A node for image acquisition from an USB camera (OpenCV is used). A special option for this node is that it can be configured to read images from a directory or a video file. Parameters can be changed with the *dynamic_reconfigure* GUI from ROS.
Output topics
*image* sensor_msgs/Image
Parameters
- *frame_id* (string, default "camera")
For dynamic parameters, see Camera.cfg
data_recorder
This node can be used to record data from an OpenNI camera to RTAB-Map database format (".db"), which can be read after by the standalone application (Detection->Select Source->Database). It is like a ROS bag, but timing information are not saved.
Input topics
*odom* nav_msgs/Odometry
- required if parameters *subscribe_odometry* is true
*scan* sensor_msgs/LaserScan
- required if parameter *subscribe_laserScan* is true
*rgb/image* sensor_msgs/Image
*depth/image* sensor_msgs/Image
- required if parameter *subscribe_depth* is true
*rgb/camera_info* sensor_msgs/CameraInfo
- required if parameter *subscribe_depth* is true
Parameters
- *frame_id* (string, default "base_link")
- *subscribe_odometry* (bool, default false)
- *subscribe_depth* (bool, default false)
- *subscribe_laserScan* (bool, default false)
- *queue_size* (int, 10)
- synchronization queue size
- *output_file_name* (string, default "output.db")
- *rgb/image_transport* (string, default "raw")
- *depth/image_transport* (string, default "raw")
map_assembler
This node subscribes to *rtabmap* output topic *mapData* and assembles the 3D map incrementally, then publishes the assembled map.
Input topics
*mapData* rtabmap/MapData
Output topics
*assembled_clouds* sensor_msgs/PointCloud2
*assembled_scans* sensor_msgs/PointCloud2
Parameters
- *cloud_decimation* (int, default 4)
- *cloud_max_depth* (double, default 4.0)
- *cloud_voxel_size* (double, default 0.02)
- *scan_voxel_size* (double, default 0.01)
grid_map_assembler
This node subscribes to *rtabmap* output topic *mapData* and assembles the map incrementally using the laser scans, then publishes the occupancy grid map.
Input topics
*mapData* rtabmap/MapData
Output topics
*grid_map* nav_msgs/OccupancyGrid
Parameters
- *scan_voxel_size* (double, default 0.01)
Services
*get_grid_map* nav_msgs/GetMap
Nodelets
== data_odom_sync == Synchronize odometry with RGB-D images. Useful to correctly show clouds in RVIZ when odometry refresh rate is low comparatively to clouds to show.
Input topics
*odom_in* nav_msgs/Odometry
*rgb/image_in* sensor_msgs/Image
*depth/image_in* sensor_msgs/Image
*rgb/camera_info_in* sensor_msgs/CameraInfo
Output topics
*odom_out* nav_msgs/Odometry
*rgb/image_out* sensor_msgs/Image
*depth/image_out* sensor_msgs/Image
*rgb/camera_info_out* sensor_msgs/CameraInfo
Parameters
- *queue_size* (int, default 10)
- *rgb/image_transport* (string, default "raw")
- *depth/image_transport* (string, default "raw")
data_throttle
Throttle at a specified rate the OpenNI data.
Input topics
*rgb/image_in* sensor_msgs/Image
*depth/image_in* sensor_msgs/Image
*rgb/camera_info_in* sensor_msgs/CameraInfo
Output topics
*rgb/image_out* lsensor_msgs/Image
*depth/image_out* sensor_msgs/Image
*rgb/camera_info_out* sensor_msgs/CameraInfo
Parameters
- *queue_size* (int, default 10)
- *max_rate* (double, default 0 Hz)
- *rgb/image_transport* (string, default "raw")
- *depth/image_transport* (string, default "raw")
point_cloud_xyzrgb
Construct a point cloud from RGB and depth images. An optional voxel filtering can be applied.
Input topics
*rgb/image* sensor_msgs/Image
*depth/image* sensor_msgs/Image
*rgb/camera_info* sensor_msgs/CameraInfo
Output topics
*cloud* sensor_msgs/PointCloud2
Parameters
- *queue_size* (int, default 10)
- *voxel_size* (double, default 0)
- *rgb/image_transport* (string, default "raw")
- *depth/image_transport* (string, default "raw")
disparity_to_depth
Convert a disparity image to a depth image.
Input topics
*disparity* stereo_msgs/DisparityImage
Output topics
*depth* 32F (m) sensor_msgs/Image
*depth_raw* 16U (mm) sensor_msgs/Image
RVIZ plugins
Map Cloud Display
http://rtabmap.googlecode.com/svn/trunk/doc/rgbd/MapCloudType.png
This rviz plugin subscribes to /mapData (rtabmap/MapData) topic. A 3D map cloud will be created incrementally in RVIZ. When the graph is changed, all point clouds added in RVIZ will be transformed to new poses.
Properties
http://rtabmap.googlecode.com/svn/trunk/doc/rgbd/MapCloudPlugin.png
It has the same properties as PointCloud2 with these new ones:
- *Cloud decimation* How the input depth and RGB images are decimated before creating the point cloud (default 4).
- *Cloud max depth (m)* Maximum depth of each point cloud added to map (default 4, 0 means no maximum).
- *Cloud voxel size (m)* Voxel size of the generated point clouds (default 0.01, 0 means no voxel).
- *Node filtering radius (m)* (Disabled=0) Only keep one node in the specified radius.
- *Node filtering angle (degrees)* (Disabled=0) Only keep one node in the specified angle in the filtering radius.
- *Download Map* Download the map from rtabmap node. This may take a while if the map is big, be patient!
Info Display
This rviz plugin subscribes to /info (rtabmap/Info) topic. Information about loop closures detected are shown in the "Status".