Size: 4658
Comment:
|
Size: 4574
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 39: | Line 39: |
* '''~fixed_frame''' (string) - '''[Required]''' Stationary frame to convert the scans (or clouds) to on reception. * '''~tf_cache_time_secs''' (double) - The cache time (seconds) to hold past transforms. Defaults to 10 seconds. |
* '''~fixed_frame''' (string) - '''[Required]''' Stationary frame into which received scans (or clouds) are transformed. * '''~tf_cache_time_secs''' (double) - The cache time (seconds) to store past transforms. Defaults to 10 seconds. |
Line 48: | Line 48: |
The laser_scan_assembler and point_cloud_assembler both provide the ''build_cloud'' service. When an assembler receives a ''build_cloud'' request, it searches it's rolling buffer for clouds that occur in the requested interval. These clouds are then assembled into a larger a cloud and sent to to the caller in the service response. | The laser_scan_assembler and point_cloud_assembler both provide the ''build_cloud'' service. When an assembler receives a ''build_cloud'' request, it searches its rolling buffer for clouds that occur in the requested interval. These clouds are then assembled into a larger a cloud and sent to to the caller in the service response. |
Line 50: | Line 50: |
Note that this is a non-blocking operation. Thus, if the assembler has not yet received any scans (or clouds) in requested interval, it will simply return an empty cloud. It will not wait until it has received all scans (or clouds) in the requested interval. | Note that this is a non-blocking operation. Thus, if the assembler has not yet received any scans (or clouds) in requested interval, it will simply return an empty cloud. |
Show EOL distros:
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Author: Vijay Pradeep
- License: BSD
- Repository: ros-pkg
- Source: svn https://code.ros.org/svn/ros-pkg/stacks/laser_pipeline/tags/laser_pipeline-1.2.0
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Author: Vijay Pradeep
- License: BSD
- Source: svn https://code.ros.org/svn/ros-pkg/stacks/laser_pipeline/branches/laser_pipeline-1.2
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_pipeline.git (branch: laser_pipeline-1.4)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: groovy-devel)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Maintainer status: maintained
- Maintainer: David Gossow <dgossoe AT willowgarage DOT com>
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: hydro-devel)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Maintainer status: maintained
- Maintainer: Jonathan Binney <jon.binney AT gmail DOT com>
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: hydro-devel)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Maintainer status: maintained
- Maintainer: Jonathan Binney <jon.binney AT gmail DOT com>
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: hydro-devel)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Maintainer status: maintained
- Maintainer: Jonathan Binney <jon.binney AT gmail DOT com>
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: hydro-devel)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Maintainer status: maintained
- Maintainer: Jonathan Binney <jon.binney AT gmail DOT com>
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: hydro-devel)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Maintainer status: maintained
- Maintainer: Jonathan Binney <jon.binney AT gmail DOT com>
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: hydro-devel)
Package Summary
Provides nodes to assemble point clouds from either LaserScan or PointCloud messages
- Maintainer status: maintained
- Maintainer: Jonathan Binney <jon.binney AT gmail DOT com>
- Author: Vijay Pradeep
- License: BSD
- Source: git https://github.com/ros-perception/laser_assembler.git (branch: noetic-devel)
Contents
Overview
Laser Rangefinder sensors (such as Hokuyo's UTM-30LX) generally output a stream of scans, where each scan is a set of range readings of detected objects (in polar coordinates) in the plane of the sensor.
Many robotic systems, like PR2's tilting laser platform, articulate a laser rangefinder in order to get a 3D view of the world. The laser_assembler package provides nodes that listen to streams of scans and then assemble them into a larger 3D Cartesian coordinate (XYZ) point cloud.
Users interface with the laser_assembler package via two ROS nodes:
laser_scan_assembler: Assembles a stream of LaserScan messages into point clouds
point_cloud_assembler: Sometimes due to some pre-processing, laser scans have already been converted into cartesian coordinates as PointCloud messages. This node assembles a stream of these PointCloud messages into larger point clouds
Data Flow
The general data flow can be descibed as follows:
The laser_scan_assembler subscribes to LaserScan messages on the scan topic. These scans are processed by the projecter and transformer, which project the scan into Cartesian space and then transform it into the fixed_frame. This results in a PointCloud that can be added to the rolling buffer. Clouds in the rolling buffer are then assembled on service calls.
Note that the Transformer automatically receives tf data without any user intervention.
The point_cloud_assembler looks very similar to the laser_scan_assembler, except that the projection step is skipped, since the input clouds are already in Cartesian coordinates.
ROS Interface
Parameters:
The PointCloudAssembler and LaserScanAssembler have fairly similar parameters
Both
~fixed_frame (string) - [Required] Stationary frame into which received scans (or clouds) are transformed.
~tf_cache_time_secs (double) - The cache time (seconds) to store past transforms. Defaults to 10 seconds.
point_cloud_assembler
~max_clouds (int) - The number of point clouds to store in the assembler's rolling buffer
laser_scan_assembler
~max_scans (int) - The number of scans to store in the assembler's rolling buffer
~ignore_laser_skew (bool) - Defaults to true. If true, pretend that all hits in a single scan correspond to the same tf transforms. If false, individually transform each hit to the fixed_frame (this is a fairly cpu intensive operation).
Services:
The laser_scan_assembler and point_cloud_assembler both provide the build_cloud service. When an assembler receives a build_cloud request, it searches its rolling buffer for clouds that occur in the requested interval. These clouds are then assembled into a larger a cloud and sent to to the caller in the service response.
Note that this is a non-blocking operation. Thus, if the assembler has not yet received any scans (or clouds) in requested interval, it will simply return an empty cloud.
build_cloud (laser_assembler/AssembleScans)
request: The time interval on which we want to aggregate scans
- begin - The start of the interval on which we want to assemble scans clouds
- end - The end of the interval on which we want to assemble scans or clouds
response: Assembled cloud for the requested interval
cloud - The point cloud holding the assembled clouds or scans. This cloud is in the frame specified by the ~fixed_frame parameter.
Subscribed Topics:
laser_scan_assembler
scan (sensor_msgs/LaserScan) - Topic on which to receive a stream of LaserScan messages.
point_cloud_assembler
cloud (sensor_msgs/PointCloud) - Topic on which to receive a stream of PointCloud messages.
Tutorials
The Introduction To Working With Laser Scanner Data tutorial provides an example of using the laser_assembler package
Deprecated API
As of laser_pipeline 0.4.0. A large part of the laser_assembler's ROS API was deprecated. The API reference for the deprecated API is available on the laser_assembler-0.3.0 page.