Torque

HRIM defines a torque sensor as
A device that measures the rotatory force on an axis.

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

HRIM component model: Torque sensor
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_torque_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_sensor_torque_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_sensor_torque_<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_torque_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_sensor_torque_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_sensor_torque_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_sensor_torque_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_sensor_torque_<instance_id>/specs sensor/torque/topics/specs.xml topic
(Pub)
M Device features.
/hrim_sensor_torque_<instance_id>/torque sensor/torque/topics/torque.xml topic
(Pub)
M Torque reading.
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.

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

    {BASE}

    <topic name="specs" type="publish" description="device features" fileName="SpecsTorque">
      <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="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="maximum measurable torque">
        <value></value>
      </property>
      <property name="device_type" type="uint8" unit="enum" enum='{"STATIC": 0, "ROTARY": 1, "NONCONTACTING": 2}' description="way the sensor detects torque">
        <value></value>
      </property>
      <property name="sensor_direction" type="uint8" unit="enum" enum='{"CLOCKWISE": 0, "COUNTERCLOCKWISE": 1, "BIDIRECTIONAL": 2}' description="rotatory direction the sensor measures">
        <value></value>
      </property>
      <property name="max_rpm" type="uint32" unit="rpm" description="maximum rpm the sensor withstands">
        <value></value>
      </property>
      <property name="safe_overload" type="uint16" unit="percentage" description="maximum force the sensor withstands safely">
        <value></value>
      </property>
      <property name="max_overload" type="uint16" unit="percentage" description="maximum force the sensor withstands before total breakdown">
        <value></value>
      </property>
      <property name="max_rate" type="uint16" 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>
      <property name="min_error_margin" type="float32" unit="plus-minus percentage" description="average error margin while inside the ideal temperature ranges">
        <value></value>
      </property>
      <property name="max_error_margin" type="float32" unit="plus-minus percentage" description="average error margin while outside the ideal temperature ranges">
        <value></value>
      </property>
    </topic>

    <topic name="torque" type="publish" description="torque force on the measured axis" fileName="Torque">
      <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="torque" type="float64" unit="newtons per metre" description="torque reading">
        <value></value>
      </property>
    </topic>

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

  </mandatory>
</module>