|
Size: 5547
Comment:
|
Size: 5477
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 23: | Line 23: |
| * `tf` (<<MsgLink(tf/tfMessage)>>) : Transforms necessary to relate frames for laser, base, and odometry (see below) * `scan` (<<MsgLink(sensor_msgs/LaserScan)>>) : Laser scans to create the map from |
`tf` (<<MsgLink(tf/tfMessage)>>) Transforms necessary to relate frames for laser, base, and odometry (see below) `scan` (<<MsgLink(sensor_msgs/LaserScan)>>) Laser scans to create the map from |
| Line 26: | Line 30: |
| * `map_metadata` (<<MsgLink(nav_msgs/MapMetaData)>>) : Get the map data from this topic, which is latched, and updated periodically. * `map` (<<MsgLink(nav_msgs/OccupancyGrid)>>) : Get the map data from this topic, which is latched, and updated periodically ===== Services provided ===== * `dynamic_map` (<<SrvLink(nav_msgs/GetMap)>>) : Call this service to get the map data |
`map_metadata` (<<MsgLink(nav_msgs/MapMetaData)>>) Get the map data from this topic, which is latched, and updated periodically. `map` (<<MsgLink(nav_msgs/OccupancyGrid)>>) Get the map data from this topic, which is latched, and updated periodically ===== Services ===== `dynamic_map` (<<SrvLink(nav_msgs/GetMap)>>) Call this service to get the map data |
| Line 31: | Line 42: |
| * `~inverted_laser` (default: false) : Is the laser right side up (scans are ordered CCW), or upside down (scans are ordered CW)? * `~throttle_scans` (default: 1) : Process 1 out of every this many scans (set it to a higher number to skip more scans) * `~base_frame` (default: "base_link") : The frame attached to the mobile base. * `~map_frame` (default: "map") : The frame attached to the map. * `~odom_frame` (default: "odom") : The frame attached to the odometry system. * `~map_update_interval` (default: 5.0) : How long (in seconds) between updates to the map. Lowering this number updates the occupancy grid more often, at the expense of greater computational load. * `~maxUrange` (default: 80.0) : The maximum usable range of the laser. A beam is cropped to this value. * `~sigma` (default: 0.05) : The sigma used by the greedy endpoint matching * `~kernelSize` (default: 1) : The kernel in which to look for a correspondence * `~lstep` (default: 0.05) : The optimization step in translation * `~astep` (default: 0.05) : The optimization step in rotation * `~iterations` (default: 5) : The number of iterations of the scanmatcher * `~lsigma` (default: 0.075) : The sigma of a beam used for likelihood computation |
|
| Line 45: | Line 43: |
| * `~ogain` (default: 3.0) : Obstacle gain (?) * `~lskip` (default: 0) : Number of beams to skip in each scan. * `~srr` (default: 0.1) : Odometry error in translation as a function of translation (rho/rho) * `~srt` (default: 0.2) : Odometry error in translation as a function of rotation (rho/theta) * `~str` (default: 0.1) : Odometry error in rotation as a function of translation (theta/rho) * `~stt` (default: 0.2) : Odometry error in rotation as a function of rotation (theta/theta) * `~linearUpdate (default: 1.0) : Process a scan each time the robot translates this far * `~angularUpdate` (default: 0.5) : Process a scan each time the robot rotates this far * `~resampleThreshold` (default: 0.5) : The neff based resampling threshold (?) * `~particles` (default: 30) : Number of particles in the filter * `~xmin` (default: -100.0) : Initial map size * `~ymin` (default: -100.0) : Initial map size * `~xmax` (default: 100.0) : Initial map size * `~ymax` (default: 100.0) : Initial map size * `~delta` (default: 0.05) : Processing parameters (resolution of the map) * `~llsamplerange` (default: 0.01) : Translational sampling range for the likelihood * `~llsamplestep` (default: 0.01) : Translational sampling range for the likelihood * `~lasamplerange` (default: 0.005) : Angular sampling range for the likelihood * `~lasamplestep` (default: 0.005) : Angular sampling step for the likelihood |
`~inverted_laser` (default: false) Is the laser right side up (scans are ordered CCW), or upside down (scans are ordered CW)? `~throttle_scans` (default: 1) Process 1 out of every this many scans (set it to a higher number to skip more scans) `~base_frame` (default: "base_link") The frame attached to the mobile base. `~map_frame` (default: "map") The frame attached to the map. `~odom_frame` (default: "odom") The frame attached to the odometry system. `~map_update_interval` (default: 5.0) How long (in seconds) between updates to the map. Lowering this number updates the occupancy grid more often, at the expense of greater computational load. `~maxUrange` (default: 80.0) The maximum usable range of the laser. A beam is cropped to this value. `~sigma` (default: 0.05) The sigma used by the greedy endpoint matching `~kernelSize` (default: 1) The kernel in which to look for a correspondence `~lstep` (default: 0.05) The optimization step in translation `~astep` (default: 0.05) The optimization step in rotation `~iterations` (default: 5) The number of iterations of the scanmatcher `~lsigma` (default: 0.075) The sigma of a beam used for likelihood computation `~ogain` (default: 3.0) Obstacle gain (?) `~lskip` (default: 0) Number of beams to skip in each scan. `~srr` (default: 0.1) Odometry error in translation as a function of translation (rho/rho) `~srt` (default: 0.2) Odometry error in translation as a function of rotation (rho/theta) `~str` (default: 0.1) Odometry error in rotation as a function of translation (theta/rho) `~stt` (default: 0.2) Odometry error in rotation as a function of rotation (theta/theta) `~linearUpdate (default: 1.0) Process a scan each time the robot translates this far `~angularUpdate` (default: 0.5) Process a scan each time the robot rotates this far `~resampleThreshold` (default: 0.5) The neff based resampling threshold (?) `~particles` (default: 30) Number of particles in the filter `~xmin` (default: -100.0) Initial map size `~ymin` (default: -100.0) Initial map size `~xmax` (default: 100.0) Initial map size `~ymax` (default: 100.0) Initial map size `~delta` (default: 0.05) Processing parameters (resolution of the map) `~llsamplerange` (default: 0.01) Translational sampling range for the likelihood `~llsamplestep` (default: 0.01) Translational sampling range for the likelihood `~lasamplerange` (default: 0.005) Angular sampling range for the likelihood `~lasamplestep` (default: 0.005) Angular sampling step for the likelihood |
| Line 68: | Line 112: |
| * <the frame attached to incoming scans> → `base_link` : usually a fixed value, broadcast periodically by mechanism_control, or a tf/transform_sender * `base_link` → `odom` : usually provided by the odometry system (e.g., the driver for the mobile base) |
<the frame attached to incoming scans> → `base_link` usually a fixed value, broadcast periodically by mechanism_control, or a tf/transform_sender `base_link` → `odom` usually provided by the odometry system (e.g., the driver for the mobile base) |
| Line 71: | Line 119: |
| * `map` → `odom` | `map` → `odom` |
Package Summary
Documented
This package contains GMapping, from OpenSlam, and a ROS wrapper. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot. This package uses r39 from GMapping SVN repsitory at openslam.org, with minor patches applied to support newer versions of GCC and OSX.
- Author: Giorgio Grisetti, Cyrill Stachniss, Wolfram Burgard; ROS wrapper by Brian Gerkey
- License: CreativeCommons-by-nc-sa-2.0
- External website: http://openslam.org/
- Source: git https://github.com/ros-perception/slam_gmapping.git (branch: None)
Package Summary
Documented
This package contains GMapping, from OpenSlam, and a ROS wrapper. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot. This package uses r39 from GMapping SVN repsitory at openslam.org, with minor patches applied to support newer versions of GCC and OSX.
- Author: Giorgio Grisetti, Cyrill Stachniss, Wolfram Burgard; ROS wrapper by Brian Gerkey
- License: CreativeCommons-by-nc-sa-2.0
- External website: http://openslam.org/
- Source: git https://github.com/ros-perception/slam_gmapping.git (branch: groovy-devel)
Package Summary
Documented
This package contains GMapping, from OpenSlam, and a ROS wrapper. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot. This package uses r39 from GMapping SVN repsitory at openslam.org, with minor patches applied to support newer versions of GCC and OSX.
- Author: Giorgio Grisetti, Cyrill Stachniss, Wolfram Burgard; ROS wrapper by Brian Gerkey
- License: CreativeCommons-by-nc-sa-2.0
- External website: http://openslam.org/
- Source: git https://github.com/ros-perception/slam_gmapping.git (branch: groovy-devel)
Package Summary
Released Continuous integration Documented
This package contains a ROS wrapper for OpenSlam's Gmapping. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot.
- Maintainer status: maintained
- Maintainer: Vincent Rabaud <vincent.rabaud AT gmail DOT com>
- Author: Brian Gerkey
- License: CreativeCommons-by-nc-sa-2.0
- Source: git https://github.com/ros-perception/slam_gmapping.git (branch: hydro-devel)
Package Summary
Released Continuous integration Documented
This package contains a ROS wrapper for OpenSlam's Gmapping. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot.
- Maintainer status: maintained
- Maintainer: Vincent Rabaud <vincent.rabaud AT gmail DOT com>
- Author: Brian Gerkey
- License: CreativeCommons-by-nc-sa-2.0
- Source: git https://github.com/ros-perception/slam_gmapping.git (branch: hydro-devel)
Package Summary
Released Continuous integration Documented
This package contains a ROS wrapper for OpenSlam's Gmapping. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot.
- Maintainer status: developed
- Maintainer: Vincent Rabaud <vincent.rabaud AT gmail DOT com>
- Author: Brian Gerkey
- License: CreativeCommons-by-nc-sa-2.0
- Source: git https://github.com/ros-perception/slam_gmapping.git (branch: hydro-devel)
Package Summary
Released Continuous integration Documented
This package contains a ROS wrapper for OpenSlam's Gmapping. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot.
- Maintainer status: maintained
- Maintainer: Vincent Rabaud <vincent.rabaud AT gmail DOT com>
- Author: Brian Gerkey
- License: CreativeCommons-by-nc-sa-2.0
- Source: git https://github.com/ros-perception/slam_gmapping.git (branch: hydro-devel)
External Documentation
This is mostly a third party package; the underlying GMapping library is externally documented. Look there for details on many of the parameters listed below.
Hardware Requirements
To use slam_gmapping, you need a mobile robot that provides odometry data and is equipped with a horizontally-mounted, fixed, laser range-finder. The slam_gmapping node will attempt to transform each incoming scan into the odom (odometry) tf frame. See the "tf API" for more on required transforms.
Example
To make a map from a robot with a laser publishing scans on the base_scan topic:
rosrun gmapping slam_gmapping scan:=base_scan
Nodes
slam_gmapping
The slam_gmapping node takes in sensor_msgs/LaserScan messages and builds a map (nav_msgs/OccupancyGrid. The map can be retrieved via a ROS Topic or Service.
ROS API
Subscribed topics
tf (tf/tfMessage)
- Transforms necessary to relate frames for laser, base, and odometry (see below)
scan (sensor_msgs/LaserScan)
- Laser scans to create the map from
Published topics
map_metadata (nav_msgs/MapMetaData)
- Get the map data from this topic, which is latched, and updated periodically.
map (nav_msgs/OccupancyGrid)
- Get the map data from this topic, which is latched, and updated periodically
Services
dynamic_map (nav_msgs/GetMap)
- Call this service to get the map data
Parameters used
~inverted_laser (default: false)
- Is the laser right side up (scans are ordered CCW), or upside down (scans are ordered CW)?
~throttle_scans (default: 1)
- Process 1 out of every this many scans (set it to a higher number to skip more scans)
~base_frame (default: "base_link")
- The frame attached to the mobile base.
~map_frame (default: "map")
- The frame attached to the map.
~odom_frame (default: "odom")
- The frame attached to the odometry system.
~map_update_interval (default: 5.0)
- How long (in seconds) between updates to the map. Lowering this number updates the occupancy grid more often, at the expense of greater computational load.
~maxUrange (default: 80.0)
- The maximum usable range of the laser. A beam is cropped to this value.
~sigma (default: 0.05)
- The sigma used by the greedy endpoint matching
~kernelSize (default: 1)
- The kernel in which to look for a correspondence
~lstep (default: 0.05)
- The optimization step in translation
~astep (default: 0.05)
- The optimization step in rotation
~iterations (default: 5)
- The number of iterations of the scanmatcher
~lsigma (default: 0.075)
- The sigma of a beam used for likelihood computation
~ogain (default: 3.0)
- Obstacle gain (?)
~lskip (default: 0)
- Number of beams to skip in each scan.
~srr (default: 0.1)
- Odometry error in translation as a function of translation (rho/rho)
~srt (default: 0.2)
- Odometry error in translation as a function of rotation (rho/theta)
~str (default: 0.1)
- Odometry error in rotation as a function of translation (theta/rho)
~stt (default: 0.2)
- Odometry error in rotation as a function of rotation (theta/theta)
`~linearUpdate (default: 1.0)
- Process a scan each time the robot translates this far
~angularUpdate (default: 0.5)
- Process a scan each time the robot rotates this far
~resampleThreshold (default: 0.5)
- The neff based resampling threshold (?)
~particles (default: 30)
- Number of particles in the filter
~xmin (default: -100.0)
- Initial map size
~ymin (default: -100.0)
- Initial map size
~xmax (default: 100.0)
- Initial map size
~ymax (default: 100.0)
- Initial map size
~delta (default: 0.05)
- Processing parameters (resolution of the map)
~llsamplerange (default: 0.01)
- Translational sampling range for the likelihood
~llsamplestep (default: 0.01)
- Translational sampling range for the likelihood
~lasamplerange (default: 0.005)
- Angular sampling range for the likelihood
~lasamplestep (default: 0.005)
- Angular sampling step for the likelihood
tf API
Required transforms
<the frame attached to incoming scans> → base_link
- usually a fixed value, broadcast periodically by mechanism_control, or a tf/transform_sender
base_link → odom
- usually provided by the odometry system (e.g., the driver for the mobile base)
Provided transforms
map → odom







