Gripper

Work in progress

There are different kinds of grippers, categorized according to the way of holding objects:

  • Finger gripper: by pressing.
  • Magnetic gripper: by magnetization.
  • Vacuum gripper: by suction.
HRIM defines a gripper as
An end-effector which enables the holding of an object.

Although there are different types, they all have the same objective, so, apart from the common requirements (ID, Status, Power, Specs and Simulation, detailed in HRIM component model section), all the grippers will contain a topic referring to grab objects.

HRIM component model: Gripper
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_actuator_gripper_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_actuator_gripper_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_actuator_gripper_<instance_id>/power generic/power.xml topic
(Pub)
M Describes the power supply type and give the information about the module power consumption.
/hrim_actuator_gripper_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_actuator_gripper_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_actuator_gripper_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_actuator_gripper_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_actuator_gripper_<instance_id>/specs actuator/gripper/topics/specsFinger.xml
actuator/gripper/topics/specsMagnetic.xml
actuator/gripper/topics/specsVacuum.xml
topic
(Pub)
M Device features.
/hrim_actuator_gripper_<instance_id>/goal actuator/gripper/topics/goal.xml service M Order: on/off
/hrim_actuator_gripper_<instance_id>/state actuator/gripper/topics/state.xml topic
(Pub)
M Notify the state: on/off
/hrim_actuator_gripper_<instance_id>/goalpro actuator/gripper/topics/goalFinger.xml
actuator/gripper/topics/goalVacuum.xml
service O Related to Finger and Vacuum grippes.
It allows the user to perform the task controlling the different values.
/hrim_actuator_gripper_<instance_id>/state_finger_gripper actuator/gripper/topics/stateFinger.xml topic
(Pub)
O The position of the fingers.
/hrim_actuator_gripper_<instance_id>/cycle_time actuator/gripper/topics/cycle.xml topic
(Pub)
O Define the time to finish a cycle.
/hrim_actuator_gripper_<instance_id>/goal_pressure actuator/gripper/topics/goalPressure.xml topic
(Pub)
O Related to Finger gripper.
Maximum pressure gripper must do.
/hrim_actuator_gripper_<instance_id>/reconfiguration actuator/gripper/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="gripper" type="actuator" description="defines the messages to interact with grippers">
  <mandatory>

    {BASE}

    <topic name="specs" type="publish" description="main characteristics of the finger gripper" fileName="SpecsFingerGripper">
      <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="min_force" type="float32" unit="newton" description="minimum gripping force">
        <value></value>
      </property>
      <property name="max_force" type="float32" unit="newton" description="maximum gripping force">
        <value></value>
      </property>
      <property name="max_payload" type="float32" unit="kilogram" description="maximum recommended payload">
        <value></value>
      </property>
      <property name="min_speed" type="float32" unit="millimeters per second" description="minimum closing speed, if equal to max_speed the component doesn't have that capability">
        <value></value>
      </property>
      <property name="max_speed" type="float32" unit="millimeters per second" description="maximum closing speed, if equal to min_speed the component doesn't have that capability">
        <value></value>
      </property>
      <property name="max_acceleration" type="float32" unit="millimeters per second squared" description="maximum acceleration, if 0 the component doesn't have that capability">
        <value></value>
      </property>
      <property name="max_length" type="float32" unit="millimeter" description="maximum permitted finger length">
        <value></value>
      </property>
      <property name="max_angle" type="float32" unit="radian" description="maximum permitted finger angle">
        <value></value>
      </property>
      <property name="repeatability" type="float32" unit="second" description="parallel grip repeatability">
        <value></value>
      </property>
    </topic>

    <topic name="specs" type="publish" description="main characteristics of the magnetic gripper" fileName="SpecsMagneticGripper">
      <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="magnetic_force" type="float32" unit="newton" description="the magnet's force">
        <value></value>
      </property>
      <property name="max_payload" type="float32" unit="kilogram" description="maximum payload">
        <value></value>
      </property>
    </topic>

    <topic name="specs" type="publish" description="main characteristics of the vacuum gripper" fileName="SpecsVacuumGripper">
      <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="cycle_time" type="float32" unit="second" description="needed time for one cycle">
        <value></value>
      </property>
      <property name="max_force" type="float32" unit="newton" description="taking into account 100% vacuum and with non-porous material">
        <value></value>
      </property>
      <property name="max_payload" type="float32" unit="kilogram" description="maximum recommended payload">
        <value></value>
      </property>
    </topic>

    <topic name="goal" type="service" description="orders the gripper to grab or release" fileName="GoalGripper">
      <property name="on_off" type="boolean" description="true: grab the object | false: release the object">
        <value></value>
      </property>
      <response>
        <property name="goal_accepted" type="boolean" description="true: the goal is accepted | false: the goal is not accepted">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="state" type="publish" description="notify if the gripper is activate or not" fileName="StateGripper">
      <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="on_off" type="boolean" description="true: the gripper is active | false: the gripper is inactive">
        <value></value>
      </property>
    </topic>

  </mandatory>
  <optional>

    <topic name="goalpro" type="service" description="allows the user to work with different values" fileName="ControlFinger">
      <property name="goal_linearposition" type="float32" unit="metre" description="distance between fingers">
        <value></value>
      </property>
      <property name="goal_angularposition" type="float32" unit="radian" description="angle of the joint">
        <value></value>
      </property>
      <property name="goal_effort" type="float32" unit="newton" description="maximun effort to apply">
        <value></value>
      </property>
      <property name="goal_velocity" type="float32" unit="metres per second" description="velocity to open/close fingers, if 0 gripper contains pressure sensor">
        <value></value>
      </property>
      <property name="goal_acceleration" type="float32" unit="metres per second squared" description="acceleration to open fingers">
        <value></value>
      </property>
      <response>
        <property name="goal_accepted" type="boolean" description="true: the goal is accepted | false: the goal is not accepted">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="goalpro" type="service" description="allows the user to work with different suction values" fileName="ControlVacuum">
      <property name="goal_percentage_suction" type="float32" unit="percentage" description="suction value on the maximum allowed">
        <value></value>
      </property>
      <response>
        <property name="goal_accepted" type="boolean" description="true: the goal is accepted | false: the goal is not accepted">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="state_finger_gripper" type="publish" description="finger gripper state is at this time" fileName="StateFingerGripper">
      <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="angular_position" type="float32">
        <value></value>
      </property>
      <property name="linear_position" type="float32">
        <value></value>
      </property>
    </topic>

    <topic name="cycle_time" type="publish" description="time that the gripper must take to complete the cycle: the time between catching the object and leaving it" fileName="CycleTime">
      <property name="header" type="header" description="the acquisition time of the completed cycle" 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="cycle_time" type="float32" unit="second" description="pick and place cycle time">
        <value></value>
      </property>
    </topic>

    <topic name="goal_pressure" type="publish" description="maximum pressure that the gripper will make on the object" fileName="GoalTactilePressure">
      <property name="header" type="header" description="pressure is at this time" 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="goal_pressure" type="float32" unit="newtons per meters squared" description="maximum pressure fingers can make">
        <value></value>
      </property>
    </topic>

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