|
| 1 | +:github_url: https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/blob/main/ur_robot_driver/doc/hardware_interface.rst |
| 2 | + |
| 3 | +UR Hardware interface |
| 4 | +===================== |
| 5 | + |
| 6 | +The UR hardware interface is the core piece of the ROS driver. It is responsible for communicating |
| 7 | +with the robot controller, sending commands and receiving status updates. |
| 8 | + |
| 9 | +The hardware interface is implemented using the ``ros2_control`` framework, which allows for modular |
| 10 | +and flexible control of the robot. |
| 11 | + |
| 12 | +.. note:: |
| 13 | + The hardware interface itself doesn't define how the robot's motion can be controlled through |
| 14 | + ROS. For that, a **controller** is needed. There are many controllers to choose from, such as |
| 15 | + the ``JointTrajectoryController`` or the ``ForceModeController``. See `ros2_controllers |
| 16 | + <https://control.ros.org/rolling/doc/ros2_controllers/doc/controllers_index.html#controllers-for-manipulators-and-other-robots>`_ |
| 17 | + for "standard" controllers and :ref:`ur_controllers` for more information on UR-specific |
| 18 | + controllers |
| 19 | + |
| 20 | +Supported control modes |
| 21 | +----------------------- |
| 22 | + |
| 23 | +The UR hardware interface supports the following control modes: |
| 24 | + |
| 25 | +- **Position control**: The robot's joints are controlled by specifying target positions. |
| 26 | +- **Velocity control**: The robot's joints are controlled by specifying target velocities. |
| 27 | +- **Effort control**: The robot's joints are controlled by specifying target efforts (torques). |
| 28 | + (Only available when running PolyScope >= 5.23.0 / 10.10.0) |
| 29 | +- **Force control**: The robot's end-effector is controlled by specifying target forces |
| 30 | + in Cartesian space. |
| 31 | +- **Freedrive mode**: The robot can be moved freely by the user without any active control. |
| 32 | +- **Passthrough Trajectory control**: Complete trajectory points are forwarded to the robot for |
| 33 | + interpolation and execution. |
| 34 | +- **Tool contact mode**: The robot stops when the tool comes into contact with an object, allowing for |
| 35 | + safe interaction with the environment. |
| 36 | +- **Speed scaling**: Speed scaling on the robot can be read and written through the hardware |
| 37 | + interface. |
| 38 | +- **GPIO**: Digital and analog I/O pins can be read and written through the hardware interface. |
| 39 | +- **Payload**: Payload configuration can be changed during runtime through the hardware interface. |
| 40 | +- **Force torque sensor**: Force torque sensor data can be read through the hardware interface. |
| 41 | + Zeroing the sensor is also supported. |
| 42 | + |
| 43 | +Interacting with the hardware interface |
| 44 | +--------------------------------------- |
| 45 | + |
| 46 | +As stated above, motion control is done through controllers. However, the ros2_control framework |
| 47 | +provides a set of services to interact with the hardware interface directly. These services can be |
| 48 | +comfortably used through the ``ros2 control`` `command line tool |
| 49 | +<https://control.ros.org/rolling/doc/ros2_control/ros2controlcli/doc/userdoc.html>`_. |
| 50 | + |
| 51 | +E.g. ``ros2 control list_hardware_components`` will list all hardware components, including the UR |
| 52 | +hardware interface with its interfaces as listed above. |
0 commit comments