diff --git a/ur_rtde_driver/README.md b/ur_rtde_driver/README.md index 495f298..f49bff5 100644 --- a/ur_rtde_driver/README.md +++ b/ur_rtde_driver/README.md @@ -1,4 +1,47 @@ # ur_rtde_driver -The actual driver package. For more information, please see the README in the top-level folder of -this repository. +This package contains the actual driver for UR robots. It is part of the *universal_robots_driver* +repository and requires other packages from that repository. Also, see the [main repository's +README](../README.md) for information on how to install and startup this driver. + +## Technical details +The following image shows a very coarse overview of the driver's architecture. + +![Architecture overview](doc/architecture_coarse.svg "Architecture overview") + +Upon connection to the primary interface the robot sends version and calibration information which +is consumed by the *calibration_check*. If the calibration reported by the robot doesn't match the +one configured (See TODO: Insert Link) an error will be printed to Roslog. + +Real-time data from the robot is read through the RTDE interface. This is done automatically as soon +as a connection to the robot could be established. Thus joint states and IO data will be immediately +available. + +To actually control the robot, a program node from the **External Control** URCap must be running on +the robot interpreting commands sent from an external source. When this program is not running, no +controllers moving the robot around will be available. Please see the [initial setup +guide](../README.md) on how to install and start this on the robot. + +The URScript that will be running on the robot is requested by the **External Control** program node +from the remote ROS PC. The robot *ur_control.launch* file has a parameter called `urscript_file` to +select a different program than the default one that will be sent as a response to a program +request. + +**Custom script snippets** can be sent to the robot on a topic basis. By default, they will +interrupt other programs (such as the one controlling the robot). For a certain subset of functions, +it is however possible to send them as secondary programs. See [UR +documentation](https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/secondary-program-17257/) +on details. +
+**Note to e-Series users:** +The robot won't accept script code from a remote source unless the robot is put into +*remote_control-mode*. However, if put into *remote_control-mode*, the program containing the +**External Control** program node can't be started from the panel. In the future, this will be +supported in the *headless* mode which doesn't require a panel being connected. Until that, a +possible workaround is to use a third party dashboard client (e.g. [ur_dash](https://github.com/gocarter/ur_dash)) +to start the program through the dashboard server. + +For using the **tool communication interface** on e-Series robots, a `socat` script is prepared to +forward the robot's tool communication interface to a local device on the ROS PC. See [the tool +communication setup guide](doc/setup_tool_communication.md) for details. + diff --git a/ur_rtde_driver/doc/architecture_coarse.svg b/ur_rtde_driver/doc/architecture_coarse.svg new file mode 100644 index 0000000..8e85f27 --- /dev/null +++ b/ur_rtde_driver/doc/architecture_coarse.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + Robot + + + + + + + + + + + Primary Interface + + + + + + + + Secondary Interface + + + + + + + + RTDE Interface + + + + + + + + RS485 Daemon + + + + + + + + ExternalControl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ROS-Driver + + + + + + + + + + + + + Initialization + - calibration_check + + + + + + + + + + Controllers + - speed_scaling + - tcp_force + - joint_states + - joint_control + + + + + + + + + + Custom Scripts + - URScript snippets + + + + + + + + + + IO Interface + Read / Write + + + + + + + + + + ScriptSender + URScript + + + + + + + + RS485 Device + + + + + + + + + + + + + + + + Request + + + Response + + + + + +