-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added a section for usage hints #27
Changes from all commits
05551f8
2431dae
2ec8dfd
9e59018
d803939
cd11f30
9a9e0a9
cec57c5
d96af5e
422772f
8ca0365
c32aed8
a72264f
2297605
00963ee
5695ab0
bed3106
e1481d1
52e9f2a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,19 +8,20 @@ | |
|
||
RobotWare `6.07` introduced major changes in the EGM communication protocol, and this library has not been updated to support those changes yet. | ||
|
||
**Avoid using this library with RobotWare 6.07 at the moment.** | ||
**Avoid using this library with RobotWare 6.07 (or newer) at the moment.** | ||
|
||
## Overview | ||
|
||
A C++ library for interfacing with ABB robot controllers supporting *Externally Guided Motion* (EGM). See the *Application manual - Controller software IRC5* for a detailed description of what EGM is and how to use it. | ||
|
||
See [abb_librws](https://github.com/ros-industrial/abb_librws) for a companion library that interfaces with *Robot Web Services* (RWS). | ||
* See [abb_librws](https://github.com/ros-industrial/abb_librws) for a companion library that interfaces with *Robot Web Services* (RWS). | ||
* 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 EGM library can be viewed, in relation to an ABB robot controller as well as the RWS companion library mentioned above. | ||
The following is a conceptual sketch of how this EGM library can be viewed, in relation to an ABB robot controller as well as the RWS companion library mentioned above. The optional *StateMachine Add-In* is related to the robot controller's RAPID program and system configuration. | ||
|
||
 | ||
 | ||
|
||
### Requirements | ||
|
||
|
@@ -41,11 +42,50 @@ This library is intended to be used with the UDP variant of EGM, and it supports | |
|
||
### 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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I know we already do in some places, but it might be good to repeat the "don't use 6.07 with this library"-warning here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will add the warning |
||
* **Avoid using this library with RobotWare 6.07 (or newer) at the moment.**<br/> Please see the `Important Note` section for more info. | ||
* 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 that is using the RAPID `EGMRunJoint` and/or `EGMRunPose` instructions, and system configurations. The library's primary classes are: | ||
|
||
* [EGMServer](include/abb_libegm/egm_server.h): Sets up and manages asynchronous UDP communication loops. During an EGM communication session, the robot controller requests new references, at the rate specified with RAPID `EGMAct` instructions. When an `EGMServer` instance receives an EGM message from the robot controller the message is passed on to an EGM interface instance (see below). The interface is expected to generate the reply message, containing the new references, which the server then sends back to the robot controller. | ||
* [AbstractEGMInterface](include/abb_libegm/egm_server.h): An abstract interface, which specifies how the `EGMServer` class interacts with EGM interfaces. Can be inherited from to implement custom EGM interfaces. | ||
* [EGMBaseInterface](include/abb_libegm/egm_base_interface.h): Inherits from `AbstractEGMInterface`, encapsulates an `EGMServer` instance, and implements a basic EGM interface. Can be configured to use demo references, which are intended for testing that EGM communication channels works. | ||
* [EGMControllerInterface](include/abb_libegm/egm_controller_interface.h): Inherits from `EGMBaseInterface` and implements an EGM interface variant for execution inside an external control loop that needs to be implemented by the user. Provides interaction methods, which can be used inside external control loops to affect EGM communication sessions. | ||
* [EGMTrajectoryInterface](include/abb_libegm/egm_trajectory_interface.h): Inherits from `EGMBaseInterface` and implements an EGM interface variant for execution of a queue of trajectories. Provides interaction methods, which can be called by a user to for example add trajectories to the queue and to stop/resume the trajectory execution. | ||
|
||
The optional *StateMachine Add-In* for RobotWare can be used in combination with any of the classes above. | ||
|
||
### 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 physical 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). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. And then what? What does it actually make easier? From this description it sounds like it "just" installs some files. I seem to remember it actually also configures things for you. Perhaps clarify this a bit by adding a sentence that better describes what sort of work the add-in does which the user doesn't need to do any more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, yes, I will clarify that it makes up a ready-to-run RAPID program, which is also customizable. The intention is to use the Add-In together with external system that want to interact with the robot in some way. For example, the external system could contain all the decision making and it wants to use the robot as a “worker resource”. It takes about 10-20 minutes to install a new robot system, and if the Add-In is included, then it should just be to connect the external system to the robot. |
||
|
||
The RAPID modules and configurations constitutes a customizable, 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. | ||
|
||
<p align="center"> | ||
<img src="docs/images/statemachine_addin_sketch.png" width="500"> | ||
</p> | ||
|
||
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. | ||
|
||
#### Notes | ||
|
||
If the EGM option is selected during system installation, then the Add-In will load RAPID code for using `EGMRunJoint` and `EGMRunPose` RAPID instructions. System configurations will also be loaded, and it is important to update the robot controller's EGM configurations. Especially the *Remote Address* and *Remote Port Number* configurations, under the *Transmission Protocol* topic, are vital to edit so that the robot controller will send EGM messages to the correct host address. This configuration can be found in RobotStudio -> Controller tab -> Configuration -> Communication -> Transmission Protocol -> Edit each `ROB_X` instance. There will be one instance for each robot in the system. | ||
|
||
The RWS companion library contains a class specifically designed to interact with the StateMachine Add-In. It allows for example to control the RAPID program by starting and stopping EGM communication sessions. | ||
|
||
## Acknowledgements | ||
|
||
The **core development** has been supported by the European Union's Horizon 2020 project [SYMBIO-TIC](http://www.symbio-tic.eu/). | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you have a specific reason for converting this to PNG?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The .svg looked good in Chrome, Edge and Explorer but then I used Firefox and it was not showing the greyed out sections correctly.