Show EOL distros: 

Package Summary

This package provides a ROS driver for Infinisoleil sensors.

Package Summary

This package provides a ROS driver for Infinisoleil sensors.

Package Summary

This package provides a ROS driver for Infinisoleil sensors.

Overview

This package provides a ROS driver for Infinisoleil sensors. The driver accesses the sensors using infinisoleil-lib.

The driver publishes range and IR images and point cloud. The driver converts from received packets containing range and IR data into sensor_msgs/Image respectively. In addition, the driver creates sensor_msgs/PointCloud2 by using obtained range data and sensor information.

Installation

Setup infiniosleil-lib

This package requires infinisoleil-lib. Please download the library from SourceForge and install it.

Install infinisoleil

Please clone the source repository into your catkin SOURCE SPACE and run catkin_make at root of your catkin WORK SPACE.

ROS API

FX8DrvierNodelet

The driver nodelet receives scan data from the sensor and publishes the data.

Published Topics

Scan data
The driver receives scan data from the sensor and publishes it as range image, IR image and point cloud.
range_image (sensor_msgs/Image)
  • Range image. It contains uint16 depths in mm.
ir_image (sensor_msgs/Image)
  • IR image. It contains uint16 intensity.
point_cloud (sensor_msgs/PointCloud2)
  • Point cloud. It contains xyz float type data in meter. Sensor xyz axes are the follows. +x is up, +y is right and +z is forward.
Diagnostics
The driver publishes frequency diagnostics of topics, received error code from the sensor and returned error information of infinisoleil-lib.
/diagnostics (diagnostic_msgs/DiagnosticArray)
  • Diagnostic status information.

Parameters

Initial Parameters
These parameters only affect the driver when it starts.
~hostname (str, default: 192.168.0.80)
  • Sensor hostname.
~port_number (str, default: 50000)
  • Sensor port number.
~connect_timeout (int, default: 10000)
  • Connect timeout [ms]. It should be greater than or equal to 0.
~send_timeout (int, default: 3000)
  • Send timeout [ms]. It should be greater than or equal to 0.
~receive_timeout (int, default: 5000)
  • Receive timeout [ms]. It should be greater than or equal to 0.
~range_frame_id (str, default: range_image)
  • Frame id of range_image.
~ir_frame_id (str, default: ir_image)
  • Frame id of ir_image
~point_cloud_frame_id (str, default: point_cloud)
  • Frame id of point_cloud.
~diagnostics_enable (bool, default: true)
  • Switch to enable diagnostics. If true, the driver publishes diagnostics.
Reconfigurable Parameters
The sensor has measure_mode. The driver configures measure_mode of the sensor when the driver receives a request for reconfiguration. Image resolution and frame_cycle are changed according to measure_mode.
~measure_mode (int, default: 0)
  • Measure mode of a sensor.
Read-only Parameters
These parameters are read-only.
~measure_point_x (int)
  • The number of measure points in a row of scan data.
~measure_point_y (int)
  • The number of measure points in a col of scan data.
~swing_fs (int)
  • High speed side deflection angle [1/10 degree].
~swing_ss (int)
  • Low speed side deflection angle [1/10 degree].
~xy_surface_count (int)
  • Xy data surface count.
~frame_cycle (int)
  • Frame cycle [ms].
~max_measure_mode (int)
  • Max value of measure mode.
~xy_serial_number (str)
  • Xy data serial number. It is 4 bytes data.
~logic_version (str)
  • Sensor logic version. It is set as Major.Minor.Sequence.
~firm_version (str)
  • Sensor firm version. It is set as Major.Minor.Sequence.
~product_number (str)
  • Sensor product number. It is set by 8 bytes ASCII-code.

fx8_node

The node has nodelet loader and load FX8DriverNodelet at initialization. It provides the same ROS API as FX8DriverNodelet above.

Usage

Start a nodelet manager process with an FX8DriverNodelet. The driver publishes range image, IR image and point cloud. If other nodelets are loaded in the same nodelet manager process, those will have zero copy access to published topics.

$ rosrun nodelet nodelet manager
$ rosrun nodelet nodelet load infinisoleil/FX8DriverNodelet manager

Start a driver nodelet with configuration of hostname.

$ rosrun nodelet nodelet manager
$ rosrun nodelet nodelet load infinisoleil/FX8DriverNodelet manager _hostname:=192.168.0.81

Launch file

This package has two launch files. fx8_drvier.launch runs a nodelet manager process and an FX8DriverNodelet. fx8_node.launch runs an fx8_node.

$ roslaunch infinisoleil fx8_driver.launch

$ roslaunch infinisoleil fx8_node.launch

Start an fx8_node by roslaunch with configuration of hostname.

$ roslaunch infinisoleil fx8_node.launch hostname:=192.168.0.81

Start a driver nodelet by roslaunch without diagnostics.

$ roslaunch infinisoleil fx8_driver.launch diagnostics_enable:=false

fx8_driver.launch runs a nodelet manager and a driver nodelet. The nodelet manager can load another driver nodelet but drivers cannot connect to the same sensor. So, this case requires two sensors.

  <launch>
    <!-- launch fx8_driver.launch -->
    <include file="$(find infinisoleil)/launch/fx8_driver.launch"/>
  
    <!-- Add another driver nodelet -->
    <node pkg="nodelet" type="nodelet" name="add_driver"
      args="load infinisoleil/FX8DriverNodelet fx8_nodelet_manager"
      output="screen">
      <remap from="range_image" to="add_driver/range_image"/>
      <remap from="ir_image" to="add_driver/ir_image"/>
      <remap from="point_cloud" to="add_driver/point_cloud"/>
      <param name="hostname" type="str" value="192.168.0.81"/>
    </node>
  </launch>

Tests

This package supports hertz test. Hertz test checks frame_cycle corresponded to specific measure_mode. For instance, run a test with default parameters.

$ rostest infinisoleil fx8_driver_hertz.test

Run a test with configuration of hostname.

$ rostest infinisoleil fx8_driver_hertz.test set_hostname:=192.168.0.81

Run a test with configuration of measure mode.

$ rostest infinisoleil fx8_driver_hertz.test set_measure_mode:=1 hz:=16.0

Wiki: infinisoleil (last edited 2013-09-13 03:36:23 by Ncs3dSensing)