Rangefinder

HRIM defines a range finder as
An instrument for detecting a distance from an object.

So, apart from the common requirements (ID, Status, Power, Specs and Simulation, detailed in HRIM component model section), all range finders will contain a topic referring to publishing a distance.

HRIM component model: Rangefinder
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_rangefinder_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_sensor_rangefinder_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_sensor_rangefinder_<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_rangefinder_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_sensor_rangefinder_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_sensor_rangefinder_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_sensor_rangefinder_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_sensor_rangefinder_<instance_id>/specs sensor/rangefinder/topics/specs.xml topic
(Pub)
M Device features.
/hrim_sensor_rangefinder_<instance_id>/distance sensor/rangefinder/topics/distance.xml topic
(Pub)
M Distance from the object.
/hrim_sensor_rangefinder_<instance_id>/reconfiguration sensor/rangefinder/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 Rangefinder is publishing.
time_measurements double s M Time between measurements 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.

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="rangefinder" type="sensor" description="defines the messages to interact with a rangefinder">
  <mandatory>

    {BASE}

    <topic name="specs" type="publish" description="device features" fileName="SpecsRangefinder">
      <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="radiation_type" type="uint8" unit="enum" enum='{"ULTRASOUND": 0, "INFRARED": 1}'>
        <value></value>
      </property>
      <property name="field_of_view" type="float32">
        <value></value>
      </property>
      <property name="min_time_measuremets" type="float32">
        <value></value>
      </property>
      <property name="min_operating_temp" type="float32">
        <value></value>
      </property>
      <property name="max_range" type="float32">
        <value></value>
      </property>
      <property name="accuracy" type="float32">
        <value></value>
      </property>
    </topic>

    <topic name="distance" type="publish" description="distance from the object" fileName="Distance">
      <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="range_min" type="float32" unit="metre" description="minimum range value">
        <value></value>
      </property>
      <property name="range_max" type="float32" unit="metre" description="maximum range value">
        <value></value>
      </property>
      <property name="time_measurements" type="float32" unit="second" description="time between measurements">
        <value></value>
      </property>
      <property name="distance" type="float32" unit="metre" description="range data">
        <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="time_measurements" type="double" unit="second" description="time between measurements">
      <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>

  </optional>
</module>