Skip to content

Commit 31f1c80

Browse files
committed
Add documentation for hardware interface including effort control mode
1 parent e910c15 commit 31f1c80

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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.

ur_robot_driver/doc/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ ur_robot_driver
1717
usage/toc
1818
operation_modes
1919
setup_tool_communication
20+
hardware_interface
2021
hardware_interface_parameters
2122
dashboard_client
2223
robot_state_helper

0 commit comments

Comments
 (0)