0
$\begingroup$

Rosanswers logo

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 http://www.isr.uc.pt/%7Eurbano/evsim/images/ibeo_guppy.jpg

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.


Originally posted by maurosmartins on ROS Answers with karma: 1 on 2011-07-13

Post score: 0


Original comments

Comment by Ivan Dryanovski on 2011-07-14:
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

$\endgroup$

2 Answers 2

0
$\begingroup$

Rosanswers logo

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.


Originally posted by dornhege with karma: 31395 on 2011-07-14

This answer was ACCEPTED on the original site

Post score: 3

$\endgroup$
0
$\begingroup$

Rosanswers logo

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.


Originally posted by Ivan Dryanovski with karma: 4954 on 2011-07-14

This answer was NOT ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.