Thermometer

HRIM defines a thermometer as
A device that measures temperature.

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

HRIM component model: Thermometer
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hros_sensor_thermometer_<instance_id>/id generic/id.xml service M Ask for component identification.
/hros_sensor_thermometer_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hros_sensor_thermometer_<instance_id>/power generic/power.xml topic
(Pub)
M Describes the power supply type and give the information about the module power consumption.
/hros_sensor_thermometer_<instance_id>/specs_comm generic/specs_comm.xml service M Ask for the communication capabilities the component offers.
/hros_sensor_thermometer_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hros_sensor_thermometer_<instance_id>/module_3d generic/module_3d.xml service M Ask for the 3D model of the HRIM component.
/hros_sensor_thermometer_<instance_id>/module_urdf generic/module_urdf.xml service M Ask for the information of the HRIM component's 3D model.
/hros_sensor_thermometer_<instance_id>/specs sensor/thermometer/topics/specs.xml service M Ask for device features.
/hros_sensor_thermometer_<instance_id>/temperature sensor/thermometer/topics/temperature.xml topic
(Pub)
M Single temperature readings.

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

  <mandatory>

    {BASE}

    <topic name="specs" type="service" description="device features" fileName="SpecsThermometer">
      <response>
        <property name="min_temp" type="int32[]" unit="celsius" description="minimum measurable temperature, multiple entries imply differences in error margin depending on the temperature">
          <value></value>
        </property>
        <property name="max_temp" type="int32[]" unit="celsius" description="maximum measurable temperature, multiple entries imply differences in error margin depending on the temperature">
          <value></value>
        </property>
        <property name="error_margin" type="float32[]" unit="celsius" description="error margin in reading, can have multiple depending on current temperature range, first error_margin entry being appliable when between first entry of min_temp and max_temp, and so on">
          <value></value>
        </property>
        <property name="resolution" type="float32" unit="celsius" description="minimum measurable temperature change">
          <value></value>
        </property>
        <property name="min_operating_temp" type="int32" unit="celsius" description="minimum temperature before the thermometer stops working">
          <value></value>
        </property>
        <property name="max_operating_temp" type="int32" unit="celsius" description="maximum temperature before the thermometer stops working">
          <value></value>
        </property>
        <property name="measuring" type="uint8" unit="enum" enum='{"AMBIENT_GAS": 0, "AMBIENT_LIQUID": 1, "COMPONENT": 2}' description="what the thermometer measures the temperature from">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="temperature" type="publish" description="single temperature measurement" fileName="Temperature">
      <property name="header" type="header" fileName="Header" package="std_msgs">
        <value></value>
      </property>
      <property name="temperature" type="float64" unit="celsius" description="temperature reading">
        <value></value>
      </property>
    </topic>

  </mandatory>
</module>