Skip to content

Commit 43fd5d0

Browse files
author
Felix Exner
authored
Merge pull request #179 from UniversalRobots/improve_docs
Improve documentation
2 parents 1590881 + 8452389 commit 43fd5d0

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,35 @@ This is a known issue and unfortunately we don't have a solution for this. The N
246246
seems to not compile with every kernel. We recommend to use a multi-machine ROS setup in this
247247
situation where a realtime-system is running the robot driver and a separate machine is performing
248248
the computations requiring the graphics card.
249+
250+
### Why can't the driver use the extracted calibration info on startup?
251+
This is mainly because parameters are loaded onto the parameter server before any nodes are started.
252+
253+
The `robot_description` concept inside ROS is not designed to be changed while a system is running.
254+
Consumers of the urdf/`robot_description` (in terms of other ROS nodes) will not update the model
255+
they have been loading initially. While technically the description could be altered during runtime
256+
and any node that is started AFTER the description was updated, this would lead to an inconsistent
257+
state inside the system. In other words: It's not the driver that needs/benefits from this
258+
calibrated urdf, it's the rest of the ROS application.
259+
260+
Additionally: If the calibration doesn't match the expected one, there's a reason for that and it
261+
should better be explicitly handled by a human. Having to run the calibration
262+
extraction/transformation as a separate step makes this possible and doesn't hide this step from the
263+
end user.
264+
265+
### Can this driver be used inside a combined hardware interface?
266+
Yes, this is possible. However, if used inside a [combined HW
267+
interface](http://wiki.ros.org/combined_robot_hw) we recommend to enable [non-blocking read
268+
functinality](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/master/ur_robot_driver/doc/ROS_INTERFACE.md#non_blocking_read-default-false).
269+
270+
### I sent raw script code to the robot but it is not executed
271+
On the e-Series the robot has to be in [remote control
272+
mode](ur-robot-driver/README.md#remote-control-mode) to accept script code from an external source.
273+
This has to be switched from the Teach-Pendant.
274+
275+
### Using the dashboard doesn't work
276+
On the e-Series the robot has to be in [remote control
277+
mode](ur-robot-driver/README.md#remote-control-mode) to accept certain calls on the dashboard server.
278+
See [Available dashboard
279+
commands](https://www.universal-robots.com/articles/ur-articles/dashboard-server-cb-series-port-29999/)
280+
for details.

ur_robot_driver/README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,40 @@ Therefor, it can be used with all position-based controllers available in ROS-Co
5555
recommend using the controllers from the `ur_controllers` package. See it's
5656
[documentation](../ur_controllers/README.md) for details. **Note: Speed scaling support will only be
5757
available using the controllers from `ur_controllers`**
58+
59+
## A note about modes
60+
The term **mode** is used in different meanings inside this driver.
61+
62+
### Remote control mode
63+
On the e-series the robot itself can operate in different command modes: It can be either in **local control
64+
mode** where the teach pendant is the single point of command or in **remote control mode**, where
65+
motions from the TP, starting & loading programs from the TP activating the freedrive mode are
66+
blocked. Note that the **remote control mode** has to be explicitly enabled in the robot's settings
67+
under **Settings** -> **System** -> **Remote Control**. See the robot's manual for details.
68+
69+
The **remote control mode** is needed for many aspects of this driver such as
70+
* headless mode (see below)
71+
* sending script code to the robot
72+
* many dashboard functionalities such as
73+
* restarting the robot after protective / EM-Stop
74+
* powering on the robot and do brake release
75+
* loading and starting programs
76+
* the `set_mode` action, as it uses the dashboard calls mentioned above
77+
78+
### Headless mode
79+
Inside this driver, there's the **headless** mode, which can be either enabled or not. When the
80+
[headless mode](./doc/ROS_INTERFACE.md#headless_mode-default-false) is activated, required script
81+
code for external control will be sent to the robot directly when the driver starts. As soon as
82+
other script code is sent to the robot either by sending it directly through this driver or by
83+
pressing any motion-related button on the teach pendant, the script will be overwritten by this
84+
action and has to be restarted by using the
85+
[resend_robot_program](./doc/ROS_INTERFACE.md#resend_robot_program-std_srvstrigger) service. If this
86+
is necessary, you will see the output `Connection to robot dropped, waiting for new connection.`
87+
from the driver. Note that pressing "play" on the TP won't start the external control again, but
88+
whatever program is currently loaded on the controller. This mode doesn't require the "External
89+
Control" URCap being installed on the robot as the program is sent to the robot directly. However,
90+
we recommend to use the non-headless mode and leverage the `set_mode` action to start program
91+
execution without the teach pendant. The **headless** mode might be removed in future releases.
92+
93+
**Note for the e-Series:** In order to leverage the **headless** mode on the e-Series the robot must
94+
be in **remote_control_mode** as explained above.

0 commit comments

Comments
 (0)