Force & Torque

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 topic
(Pub)
M 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 topic
(Pub)
M Published the capabilities in term of communicaction that 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 topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_sensor_forcetorque_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_sensor_forcetorque_<instance_id>/specs sensor/forcetorque/topics/specs.xml topic
(Pub)
M 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="publish" description="device features" fileName="SpecsForceTorque">
      <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="force_axis_specs" type="specsForceAxis[3]" description="specs related to each of the measured force axes" fileName="SpecsForceAxis">
        <property name="axis" type="uint8" unit="enum" enum='{"FX": 0, "FY": 1, "FZ": 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">
        <property name="axis" type="uint8" unit="enum" enum='{"MX": 0, "MY": 1, "MZ": 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="max_rate" type="uint8" unit="hertz" description="maximum amount of measurements per second">
        <value></value>
      </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>
    </topic>

    <topic name="reading" type="publish" description="single measurement" fileName="ForceTorque">
      <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="axis_forces" type="forceAxis[3]" description="separate force readings from each measured axis" fileName="ForceAxis">
        <property name="axis" type="uint8" unit="enum" enum='{"FX": 0, "FY": 1, "FZ": 2}' description="the axis of the measurement">
          <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" enum='{"MX": 0, "MY": 1, "MZ": 2}' description="the axis of the measurement">
          <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>