Force & Torque sensor

HRIM defines a force & torque sensor as
A device that measures both the tension/compression/shear and rotatory force on any combination of 1-3 axes.

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

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

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

  <mandatory>

    {BASE}

    <topic name="specs" type="service" description="device features" fileName="SpecsForceTorque">
      <response>
        <property name="force_axis_specs" type="specsForceAxis[3]" description="specs related to each of the measured force axes" fileName="SpecsForceAxis" package="hrim_sensor_forcetorque_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="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="torque_axis_specs" type="specsTorqueAxis[3]" description="specs related to each of the measured torque axes" fileName="SpecsTorqueAxis" package="hrim_sensor_forcetorque_msgs">
          <property name="axis" type="uint8" unit="enum" enum='{"TORQUE_AXIS_X": 0, "TORQUE_AXIS_Y": 1, "TORQUE_AXIS_Z": 2}' description="the axis the specs describe">
            <value></value>
          </property>
          <property name="max_torque" type="uint16" unit="newtons per metre" description="maximum measurable torque">
            <value></value>
          </property>
          <property name="resolution" type="float32" unit="newtons per metre" description="minimum detectable difference">
            <value></value>
          </property>
          <property name="safe_overload" type="uint16" unit="percentage" description="maximum torque the sensor withstands safely on this axis, in reference to the max_torque value">
            <value></value>
          </property>
          <property name="max_overload" type="uint16" unit="percentage" description="maximum torque the sensor withstands before total breakdown on this axis, in reference to the max_torque 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="reading" type="publish" description="single measurement" fileName="ForceTorque">
      <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>
      <property name="axis_torques" type="torqueAxis[3]" description="separate torque readings from each measured axis" fileName="TorqueAxis">
        <property name="axis" type="uint8" unit="enum" description="the axis of the measurement - defined in SpecsTorqueAxis">
          <value></value>
        </property>
        <property name="torque" type="float64" unit="newtons per metre" description="reading of the torque measuring">
          <value></value>
        </property>
      </property>
    </topic>

  </mandatory>

</module>