Gas detector

HRIM defines a gas detector as
A safety device that is used to detect the presence of gas in a confined space.

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

HRIM component model: GasDetector
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_gasdetector_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_sensor_gasdetector_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_sensor_gasdetector_<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_gasdetector_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_sensor_gasdetector_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_sensor_gasdetector_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_sensor_gasdetector_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_sensor_gasdetector_<instance_id>/specs sensor/gasdetector/topics/specs.xml topic
(Pub)
M Device features.
/hrim_sensor_gasdetector_<instance_id>/distance sensor/gasdetector/topics/gasMeasurements.xml topic
(Pub)
M Detected gas value.
/hrim_sensor_gasdetector_<instance_id>/reconfiguration sensor/gasdetector/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.
response_time double s M Refresh time in seconds.

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

    {BASE}

    <topic name="specs" type="publish" description="device features" fileName="SpecsGasDetector">
      <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="particular_specs" type="gasType[]" description="specs of each gas the sensor detects" fileName="GasType">
        <property name="detect_gas_name" type="string" description="the gases that the sensor can detect">
          <value></value>
        </property>
        <property name="gas_detection_technique" type="uint8" unit="enum" enum='{"HROS_GASSENSOR_CATALYTIC": 0, "HROS_GASSENSOR_ECC": 1, "HROS_GASSENSOR_POINTIR": 2, "HROS_GASSENSOR_OPENPATH": 3, "HROS_GASSENSOR_PID": 4, "HROS_GASSENSOR_SEMICONDUCTOR": 5, "HROS_GASSENSOR_PAPERTAPE": 6, "HROS_GASSENSOR_OTHER": 7}' description="type of the sensor">
          <value></value>
        </property>
        <property name="detection_range" type="uint8" description="maximum value">
          <value></value>
        </property>
      </property>
      <property name="response_time" type="uint32" unit="second" description="time the sensor needs to refresh">
        <value></value>
      </property>
      <property name="display" type="boolean" description="true: the gas detector has this extra | false: it doesn't">
        <value></value>
      </property>
      <property name="alarm" type="boolean" description="true: the gas detector has this extra | false: it doesn't">
        <value></value>
      </property>
      <property name="leds" type="boolean" description="true: the gas detector has this extra | false: it doesn't">
        <value></value>
      </property>
      <property name="wifi" type="boolean" description="true: the gas detector has this extra | false: it doesn't">
        <value></value>
      </property>
      <property name="gps" type="boolean" description="true: the gas detector has this extra | false: it doesn't">
        <value></value>
      </property>
    </topic>

    <topic name="gas_measurements" type="publish" description="detected gas value" fileName="GasMeasurements">
      <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="measurements" type="gasMeasurement[]" description="the measurement of each sensor" fileName="GasMeasurement">
        <property name="gas_name" type="string" description="the name of the gas">
          <value></value>
        </property>
        <property name="value" type="uint8" description="the measurement of the gas in ppm, ppb or % depending on the gas type">
          <value></value>
        </property>
        <property name="unit" type="string" description="ppm (parts per million), ppb (parts per billion) or %">
          <value></value>
        </property>
      </property>
    </topic>

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

    <param name="response_time" type="double" unit="second" description="refresh time">
      <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>