Force sensor

HRIM defines a force sensor as
A device that measures the tension/compression/shear force on 1-3 axis.

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

HRIM component model: force sensor
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hros_sensor_force_<instance_id>/id generic/id.xml service M Ask for component identification.
/hros_sensor_force_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hros_sensor_force_<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_force_<instance_id>/specs_comm generic/specs_comm.xml service M Ask for the communication capabilities the component offers.
/hros_sensor_force_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hros_sensor_force_<instance_id>/module_3d generic/module_3d.xml service M Ask for the 3D model of the HRIM component.
/hros_sensor_force_<instance_id>/module_urdf generic/module_urdf.xml service M Ask for the information of the HRIM component's 3D model.
/hros_sensor_force_<instance_id>/specs sensor/force/topics/specs.xml service M Ask for device features, separated into each axis.
/hros_sensor_force_<instance_id>/force sensor/force/topics/force.xml topic
(Pub)
M Force reading, separated into each axis.

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

  <mandatory>

    {BASE}

    <topic name="specs" type="service" description="device features" fileName="SpecsForce">
      <response>
        <property name="axis_specs" type="specsForceAxis[3]" description="specs related to each of the measured axes" fileName="SpecsForceAxis" package="hrim_sensor_force_msgs">
          <property name="axis" type="uint8" unit="enum" enum='{"FORCE_AXIS_X": 0, "FORCE_AXIS_Y": 1, "FORCE_AXIS_Z": 2}' description="the axis the specs describe">
            <value></value>
          </property>
          <property name="max_force" type="uint16" unit="newton" description="maximum measurable force">
            <value></value>
          </property>
          <property name="resolution" type="float32" unit="newton" description="minimum detectable difference">
            <value></value>
          </property>
          <property name="bidirectional" type="boolean" description="if the axis also measures negative values or not">
            <value></value>
          </property>
          <property name="safe_overload" type="uint16" unit="percentage" description="maximum force the sensor withstands safely on this axis, in reference to the max_force value">
            <value></value>
          </property>
          <property name="max_overload" type="uint16" unit="percentage" description="maximum force the sensor withstands before total breakdown on this axis, in reference to the max_force value">
            <value></value>
          </property>
          <property name="min_error_margin" type="float32" unit="+- percentage" description="average error margin while inside the ideal ranges of this axis">
            <value></value>
          </property>
          <property name="max_error_margin" type="float32" unit="+- percentage" description="average error margin while outside the ideal ranges of this axis">
            <value></value>
          </property>
        </property>
        <property name="min_ideal_temp" type="float32" unit="celsius" description="minimum temperature where the error margin is at it's lowest">
          <value></value>
        </property>
        <property name="max_ideal_temp" type="float32" unit="celsius" description="maximum temperature where the error margin is at it's lowest">
          <value></value>
        </property>
        <property name="min_operating_temp" type="float32" unit="celsius" description="minimum operating temperature">
          <value></value>
        </property>
        <property name="max_operating_temp" type="float32" unit="celsius" description="maximum operating temperature">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="force" type="publish" description="single measurement from a force sensor" fileName="Force">
      <property name="header" type="header" fileName="Header" package="std_msgs">
        <value></value>
      </property>
      <property name="axis_forces" type="forceAxis[3]" description="separate force readings from each measured axis" fileName="ForceAxis">
        <property name="axis" type="uint8" unit="enum" description="the axis of the measurement - defined in SpecsForceAxis">
          <value></value>
        </property>
        <property name="force" type="float64" unit="newton" description="reading of the force measuring">
          <value></value>
        </property>
      </property>
    </topic>

  </mandatory>

</module>