diff --git a/README.md b/README.md index bbecfc99..244045f7 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,14 @@ A C++ library for interfacing with ABB robot controllers supporting *Robot Web Services* (RWS). See the online [documentation](http://developercenter.robotstudio.com/webservice/api_reference) for a detailed description of what RWS is and how to use it. -See [abb_libegm](https://github.com/ros-industrial/abb_libegm) for a companion library that interfaces with *Externally Guided Motion* (EGM). +* See [abb_libegm](https://github.com/ros-industrial/abb_libegm) for a companion library that interfaces with *Externally Guided Motion* (EGM). +* See [StateMachine Add-In](https://robotapps.robotstudio.com/#/viewApp/7fa7065f-457f-47ce-98d7-c04882e703ee) for an optional *RobotWare Add-In* that can be useful when configuring an ABB robot controller for use with this library. ### Sketch -The following is a conceptual sketch of how this RWS library can be viewed, in relation to an ABB robot controller as well as the EGM companion library mentioned above. +The following is a conceptual sketch of how this RWS library can be viewed, in relation to an ABB robot controller as well as the EGM companion library mentioned above. The optional *StateMachine Add-In* is related to the robot controller's RAPID program and system configuration. -![RWS sketch](docs/images/rws_sketch.svg) +![RWS sketch](docs/images/rws_sketch.png) ### Requirements @@ -42,11 +43,42 @@ RWS provides access to several services and resources in the robot controller, a ### Recommendations -* This library has been verified to work with RobotWare `6.06.01`. Other version are expected to work, but this cannot be guaranteed at the moment. +* This library has been verified to work with RobotWare `6.06.01`. Other versions are expected to work, but this cannot be guaranteed at the moment. * It is a good idea to perform RobotStudio simulations before working with a real robot. * It is prudent to familiarize oneself with general safety regulations (e.g. described in ABB manuals). * Consider cyber security aspects, before connecting robot controllers to networks. +## Usage Hints + +This is a generic library, which can be used together with any RAPID program and system configuration. The library's primary classes are: + +* [POCOClient](include/abb_librws/rws_poco_client.h): Sets up and manages HTTP and WebSocket communication and is unaware of the RWS protocol. +* [RWSClient](include/abb_librws/rws_client.h): Inherits from `POCOClient` and provides interaction methods for using the RWS services and resources. +* [RWSInterface](include/abb_librws/rws_interface.h): Encapsulates an `RWSClient` instance and provides more user-friendly methods for using the RWS services and resources. +* [RWSStateMachineInterface](include/abb_librws/rws_state_machine_interface.h): Inherits from `RWSInterface` and has been designed to interact with the aforementioned *StateMachine Add-In*. The interface knows about the custom RAPID variables and routines, as well as system configurations, loaded by the RobotWare Add-In. + +The optional *StateMachine Add-In* for RobotWare can be used in combination with any of the classes above, but it works especially well with the `RWSStateMachineInterface` class. + +### StateMachine Add-In [Optional] + +The purpose of the RobotWare Add-In is to *ease the setup* of ABB robot controllers. It is made for both *real controllers* and *virtual controllers* (simulated in RobotStudio). If the Add-In is selected during a RobotWare system installation, then the Add-In will load several RAPID modules and system configurations based on the system specifications (e.g. number of robots and present options). + +The RAPID modules and configurations constitute a customizable, but ready to run, RAPID program which contains a state machine implementation. Each motion task in the robot system receives its own state machine instance, and the intention is to use this in combination with external systems that require interaction with the robot(s). The following is a conceptual sketch of the RAPID program's execution flow. + +

+ +

+ +To install the Add-In: + +1. Go to the *Add-Ins* tab in RobotStudio. +2. Search for *StateMachine Add-In* in the *RobotApps* window. +3. Select the Add-In and retrieve the Add-In by pressing the *Add* button. +4. Verify that the Add-In was added to the list *Installed Packages*. +5. The Add-In should appear as an option during the installation of a RobotWare system. + +See the Add-In's [user manual](https://robotapps.blob.core.windows.net/appreferences/docs/2093c0e8-d469-4188-bdd2-ca42e27cba5cUserManual.pdf) for more details, as well as for install instructions for RobotWare systems. The manual can also be accessed by right-clicking on the Add-In in the *Installed Packages* list and selecting *Documentation*. + ## Acknowledgements The **core development** has been supported by the European Union's Horizon 2020 project [SYMBIO-TIC](http://www.symbio-tic.eu/). diff --git a/docs/images/rws_sketch.png b/docs/images/rws_sketch.png new file mode 100644 index 00000000..0e66acda Binary files /dev/null and b/docs/images/rws_sketch.png differ diff --git a/docs/images/rws_sketch.svg b/docs/images/rws_sketch.svg deleted file mode 100644 index 178fa4d7..00000000 --- a/docs/images/rws_sketch.svg +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RWS & EGM Sketch 5_2 - - Sheet.54 - - - - - - - - - - - - - - - - - - - - - - - Rectangle.269 - Communication with robot drive system - - Communication with robot drive system - - Dynamic connector.271 - - - - Round Corner Rectangle.72 - - - - Circle - - - - Circle.61 - - - - Round Corner Rectangle.77 - - - - Round Corner Rectangle.78 - External Computer - - External Computer - - Round Corner Rectangle.79 - - - - Round Corner Rectangle.80 - ABB Robot Controller - - ABB Robot Controller - - Round Corner Rectangle.81 - RWS Server - - RWS Server - - Round Corner Rectangle.82 - RAPID Program - - RAPID Program - - Round Corner Rectangle.83 - EGM Client - - EGM Client - - Round Corner Rectangle.24 - - Configurations - IO signals - RAPID - And more - - - Configurations - IO signals - RAPID - And more - - Round Corner Rectangle.26 - RWS Services - - RWS Services - - Sheet.86 - HTTP & WebSocket (TCP) - - HTTP & WebSocket (TCP) - - Sheet.87 - Google Protocol Buffers (250 Hz UDP) - - Google Protocol Buffers(250 Hz UDP) - - Sheet.88 - Lower frequency, general communication. - - Lower frequency,general communication. - - Sheet.89 - Higher frequency, specialized communication. I.e. direct moti... - - Higher frequency, specialized communication. I.e. direct motion control. - - Rectangle.90 - - - - Simple Double Arrow.91 - - - - Directed line 1.92 - - - - Directed line 1.93 - - - - Directed line 1.94 - - - - Directed line 1.95 - - - - Dynamic connector.96 - - - - Round Corner Rectangle.50 - Robot Web Services (RWS) C++ Library - - Robot Web Services (RWS)C++ Library - - Round Corner Rectangle.51 - - - - Round Corner Rectangle.52 - RWS Client - - RWS Client - - Round Corner Rectangle.53 - Message Manager - - Message Manager - - Round Corner Rectangle.54 - User APIs - - User APIs - - Directed line 1.56 - - - - Directed line 1.57 - - - - Round Corner Rectangle.43 - Externally Guided Motion (EGM) C++ Library - - Externally Guided Motion (EGM) C++ Library - - Round Corner Rectangle.44 - - - - Round Corner Rectangle.45 - EGM Server - - EGM Server - - Round Corner Rectangle.48 - Message Manager - - Message Manager - - Round Corner Rectangle.49 - User APIs - - User APIs - - Directed line 1.58 - - - - Directed line 1.59 - - - - Cloud.248 - RobotWare - - RobotWare - - Dynamic connector.255 - - - - Round Corner Rectangle.111 - - - - Round Corner Rectangle.112 - - - - Round Corner Rectangle.113 - - - - diff --git a/docs/images/statemachine_addin_sketch.png b/docs/images/statemachine_addin_sketch.png new file mode 100644 index 00000000..6e90f31b Binary files /dev/null and b/docs/images/statemachine_addin_sketch.png differ