LIDAR

HRIM defines a LIDAR (Light Detection and Ranging o Laser Imaging Detection and Ranging) as
A detection system which determines the distance from a laser emitter to an object or surface.

So, apart from the common requirements (ID, Status, Power, Specs and Simulation, detailed in HRIM component model section), all LIDAR will contain a topic referring to scan an environment in a planar way.

HRIM component model: RotaryServo
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_lidar_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_sensor_lidar_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_sensor_lidar_<instance_id>/power generic/power.xml topic
(Pub)
M Describes the power supply type and give the information about the module power consumption.
/hrim_sensor_lidar_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_sensor_lidar_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_sensor_lidar_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_sensor_lidar_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_sensor_lidar_<instance_id>/specs sensor/lidar/topics/specs.xml topic
(Pub)
M Device features.
/hrim_sensor_lidar_<instance_id>/laser_scan sensor/lidar/topics/scan.xml topic
(Pub)
M Environment information.
/hrim_sensor_lidar_<instance_id>/reconfiguration sensor/lidar/topics/reconfiguration.xml topic
(Pub)
O Dynamic reconfiguration of H-ROS systems. The integration of an IMU sensor is needed.
Parameters
PARAMETER NAME DATA TYPE UNIT CLASS
M/O
SHORT DESCRIPTION
frame_id string M Sets the TF frame from which the LIDAR is publishing.
angle_start double rad M Start point of scanning angle in radiands.
angle_end double rad M End point of scanning angle in radiands.
angle_increment double rad M Resolution of laser scan in radians per radians.
scan_time double s M Time between scans in seconds.
time_increment double s M Time between scans in seconds.
distance_min double m M The minimum distance to return in meters.
distance_max double m M The maximum distance to return in meters.
double int rad/s O Device rotation speed in radians per second.
intensity float % O LIDAR intensity value.

Note: the {BASE} wildcard references the base topics all modules contain, defined in the HRIM component model page.

The XML notation would look like:

<?xml version="1.0"?>
<module name="lidar" type="sensor" description="defines the messages to interact with a lidar">
  <mandatory>

    {BASE}

    <topic name="specs" type="publish" description="device features" fileName="SpecsLidar">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="horizontal_fov" type="float32" unit="radian" description="horizontal field of view">
        <value></value>
      </property>
      <property name="vertical_fov" type="float32" unit="radian" description="vertical field of view">
        <value></value>
      </property>
      <property name="linear_accuracy" type="float32" unit="metre" description="linear resolution">
        <value></value>
      </property>
      <property name="angular_accuracy" type="float32" unit="radian" description="angular resolution">
        <value></value>
      </property>
      <property name="min_angle_increment" type="float32" unit="radian" description="minimum angle between measurements">
        <value></value>
      </property>
      <property name="min_scan_time" type="float32" unit="" description="minimum time between measurements">
        <value></value>
      </property>
      <property name="distance_min" type="float32" unit="metre" description="operating minimum distance">
        <value></value>
      </property>
      <property name="distance_max" type="float32" unit="metre" description="operating maximum distance">
        <value></value>
      </property>
      <property name="points_max" type="float32" description="maximum points per second">
        <value></value>
      </property>
      <property name="intensity" type="boolean">
        <value></value>
      </property>
    </topic>

    <topic name="laser_scan" type="publish" description="environment information" fileName="LidarScan">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="angle_start" type="float32" unit="radian" description="start angle of the scan">
        <value></value>
      </property>
      <property name="angle_end" type="float32" unit="radian" description="end angle of the scan">
        <value></value>
      </property>
      <property name="angle_increment" type="float32" unit="radian" description="angular distance between measurements">
        <value></value>
      </property>
      <property name="time_increment" type="float32" unit="second" description="time between scans. If your scanner is moving, this will be used in interpolating position of 3d points">
        <value></value>
      </property>
      <property name="time_scan" type="float32" unit="second" description="time between scans">
        <value></value>
      </property>
      <property name="range_min" type="float32" unit="metre" description="actual minimum range value">
        <value></value>
      </property>
      <property name="range_max" type="float32" unit="metre" description="actual maximum range value">
        <value></value>
      </property>
      <property name="ranges" type="float32[]" unit="" description="range data. Values below range_min or over range_max should be discarded">
        <value></value>
      </property>
      <property name="intensities" type="float32[]" unit="" description="intensity data. If your device does not provide intensities, please leave the array empty">
        <value></value>
      </property>
    </topic>

    <param name="frame_id" type="string" description="tf frame from which the range_finder is publishing">
      <value></value>
    </param>

    <param name="angle_start" type="double" unit="radian" description="start point of scanning angle">
      <value></value>
    </param>

    <param name="angle_end" type="double" unit="radian" description="end point of scanning angle">
      <value></value>
    </param>

    <param name="angle_increment" type="double" unit="radians per radian" description="resolution of laser scan">
      <value></value>
    </param>

    <param name="scan_time" type="double" unit="second" description="time between scans">
      <value></value>
    </param>

    <param name="time_increment" type="double" unit="second" description="time between scans">
      <value></value>
    </param>

    <param name="distance_min" type="double" unit="metre" description="the minimum distance to return">
      <value></value>
    </param>

    <param name="distance_max" type="double" unit="metre" description="the maximum distance to return">
      <value></value>
    </param>

  </mandatory>
  <optional>

    <topic name="reconfiguration" type="publish" description="dynamic reconfiguration of H-ROS systems" fileName="Reconfiguration">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="orientation" type="quaternion" fileName="Quaternion">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
        <property name="w" type="float64">
          <value></value>
        </property>
      </property>
      <property name="orientation_covariance" type="float64[9]">
        <value></value>
      </property>
      <property name="angular_velocity" type="vector3" fileName="Vector3">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
      </property>
      <property name="angular_velocity_covariance" type="float64[9]">
        <value></value>
      </property>
      <property name="linear_acceleration" type="vector3" fileName="Vector3">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
      </property>
      <property name="linear_acceleration_covariance" type="float64[9]">
        <value></value>
      </property>
    </topic>

    <param name="angular_velocity" type="double" unit="radians per second" description="device rotation speed">
      <value></value>
    </param>

    <param name="intensity" type="float" unit="percentage" description="lidar intensity value">
      <value></value>
    </param>

  </optional>
</module>