ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Multi beam laser

asked 2011-07-13 23:14:16 -0500

maurosmartins gravatar image

Hello to all!

This is my first post here and don't know if this is the correct place to it.

My question is related to a laser that I'm trying to use inside ROS, it is an IBEO. image description

This laser has four measuring channels and four what I've seen the "sensor_msgs/LaserScan" message only supports on channel at a time. is this correct?

If so, is there any other way to send the four channels ate once? I' would like to create a driver compatible with RVIZ.

Best regards, Mauro.

edit retag flag offensive close merge delete


Do you mean its a laser with 1 range reading, and 4 additional fields per reading (like intensity etc). Or is it 4 lasers rolled up into one device, producing 4 separate range readings? The answer I gave assumed the former
Ivan Dryanovski gravatar image Ivan Dryanovski  ( 2011-07-14 01:23:04 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2011-07-14 01:56:12 -0500

dornhege gravatar image

As far as I know the IBEOs have those channels at different pitch angles, right?

In that case you have two possibilities (besides creating your own message). The first would be to convert the laser data to a pointcloud as Ivan Dryanovski suggested. The second would be to publish the four laser channels as four laser scan topcis and use the tf library. Each scan will have a different frame_id associated in the header and you use a static transform publisher that publishes the transforms according to the relative pose of the scans to the sensor.

Both versions will display correctly in rviz. The second has four different topcis, though. The advantage is that it publishes LaserScan messages making it compatible with software that uses LaserScans.

The best would probably be to follow an approach similar to the kinect driver: You advertise every possibility in your driver, but you will only publish (and convert laser to pointcloud) if a publisher has subscribers.

edit flag offensive delete link more

answered 2011-07-14 01:20:00 -0500

The LaserScan message only has one field for additional data:

float32[] intensities

If you want your driver to publish all 4 additional data channels, you can make it output the scan in PointCloud2 form, or the pcl::PointCloud equivalent. The PointCloud messages support an arbitrary number of channels.

Since lot of packages require a LaserScan message as input, it would be a good idea to make the driver optionally publish a LaserScan and/or PointCloud data.

edit flag offensive delete link more

Question Tools


Asked: 2011-07-13 23:14:16 -0500

Seen: 2,034 times

Last updated: Jul 14 '11