Conveyor

HRIM defines a gripper as
A mechanical apparatus for moving articles or bulk material from one place to another place.

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

A conveyor can be built with more than one belt, and each belt can be configured with different velocity. This information will be provided by the specs topic. Depending on the number of belts, the topic regarding to the velocity of each one's numbering will increase. For example, if the canveyor has 2 belts it will provide 2 topics; hrim_composite_conveyor_<instance_id>/goal_1 and hrim_composite_conveyor_<instance_id>/goal_2, both of them using the same communication definition (the one generated with goal.xml). This is something that the manufacturer will have to modify. The numbers will respect the direction that the conveyor follow (identification number), in case there are two belts in parallel the manufacturer will have to specify in the datasheet the number for each using a schema.

HRIM component model: Conveyor
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_composite_conveyor_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_composite_conveyor_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_composite_conveyor_<instance_id>/power generic/power.xml topic
(Pub)
M Describes the power supply type and give the information about the module power consumption.
/hrim_composite_conveyor_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_composite_conveyor_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_composite_conveyor_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_composite_conveyor_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_composite_conveyor_<instance_id>/specs composite/conveyor/topics/specs.xml topic
(Pub)
M Device features.
/hrim_composite_conveyor_<instance_id>/goal(_<belt_number>) composite/conveyor/topics/goal.xml topic
(Pub)
M Belt <belt_number>, goal linear velocity.
/hrim_composite_conveyor_<instance_id>/reconfiguration composite/conveyor/topics/reconfiguration.xml topic
(Pub)
O Dynamic reconfiguration of H-ROS systems. The integration of an IMU sensor is needed.

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="conveyor" type="composite" description="defines the messages to interact with an H-ROS conveyor">
  <mandatory>

    {BASE}

    <topic name="specs" type="publish" description="device features" fileName="SpecsConveyor">
      <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="conveyor_quantity" type="uint16" description="number of independent conveyors">
        <value></value>
      </property>
      <property name="characteristics" type="specsConveyorIndependent[]" fileName="SpecsConveyorIndependent">
        <property name="max_velocity" type="float32" unit="metres per second" description="maximum conveyor velocity">
          <value></value>
        </property>
        <property name="optimal_velocity" type="float32" unit="metres per second" description="optimal conveyor velocity">
          <value></value>
        </property>
      </property>
    </topic>

    <topic name="goal" type="publish" description="belt linear velocity goal" fileName="GoalConveyor">
      <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="id_number" type="uint16" description="number to identify the belt (provided for the manufacturer)">
        <value></value>
      </property>
      <property name="velocity" type="float32" unit="metres per second" description="conveyor velocity">
        <value></value>
      </property>
    </topic>

  </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>