Comments (4)
Hello @bhomberg,
For me it has worked fine with an ordinary laptop, running Ubuntu with ROS and controlling ABB robots via EGM. However, I haven’t really had any applications with hard real-time requirements.
Regarding the external axis, if you intend to control it via EGM, then you would need at least RobotWare 6.07.01
. This is because partial support for external axis was added to EGM in that version, and it is partial support due to these limitations:
- It is only possible to control one mechanical unit in each RAPID task via EGM.
RobotWare optionMultitasking [623-1]
is required to have more than one task. - Coordinated movements via EGM is not supported.
E.g. RobotWare optionMultiMove Coordinated [604-1]
.
Note: There was a change in the EGM protocol between RobotWare 6.06
and 6.07
, and abb_libegm has not been updated to handle those changes yet.
I hope this helps!
from abb_libegm.
Hi @jontje -- thanks for your answer, that's very helpful! I have a couple follow-up questions: how fast have you been updating the trajectories -- are you updating every 4ms (the max rate I saw listed in the ABB documentation) or less frequently? Do you send the full trajectory, just the next waypoint, or a few waypoints ahead?
from abb_libegm.
I have primarily used 4 ms rate, and I have implemented two main interfaces in abb_libegm. Both are based on an inner asynchronous UDP loop, which is executed when the robot controller requests new references (at the specified rate). The new references are always only for the next time instance.
Rough description of the two interfaces:
EGMControllerInterface:
- Waits until the robot controller requests new references.
- Notifies an external control loop (implemented by the user) that new references should be provided.
- The external control loop calculates new references and provides them to the interface.
- The interface sends the references to the robot controller.
- Repeat from 1.
Note: If you want to optimize the control loop, then it might be better to implement your own version of a controller interface. For example, by integrating the external control loop directly into the asynchronous UDP loop.
EGMTrajectoryInterface:
Accepts trajectories (from a user), which are put in a queue.
- When the robot controller requests new references, then the interface processes the trajectory at the head of the queue.
- The interface interpolates between points in the active trajectory and calculates the new references, which are sent to the robot controller. This is repeated every time the robot controller requests new references, until all points in the trajectory has been processed.
- Repeat from 1.
Examples:
I have used the interfaces for different things.
- EGMControllerInterface for velocity control.
- EGMTrajecotryInterface for executing joint trajectories from MoveIt.
from abb_libegm.
This is very helpful @jontje! Thanks for your answers.
from abb_libegm.
Related Issues (20)
- Wait for an EGM communication session to start... HOT 5
- Setting up EGM sessions for abb_libegm_samples HOT 4
- Rapid code corresponding to abb_libegm HOT 6
- What does the duration really mean? HOT 2
- EGMTrajectoryInterface::addTrajectory fails inconsistently HOT 1
- Why not add a path correction module? HOT 1
- RobotWare 6.13 EGM UdpUc error HOT 17
- Question: Can I use this library on Windows for testing with a simulated robot?
- Regulate robot speed - Robot too slow during the executions with EGM HOT 1
- Possibility about apply this library in Matlab
- Support for Four Axis SCARA Arms (Eg IRB910SC)
- Append multiple trajectories creates stop during motion between trajectories
- Problem when running `start_egm_joint`
- Example for controlling GoFa 15000 with C++ in Ubuntu
- State Machine add-in is not available any more in the RoboApps ( Robot Studio ) HOT 4
- Problems with compiling and using the abb_libegm library on Windows HOT 2
- Execution speed and EGM parameter documentation
- Error 41830 when try to use EGM Position Guidance Joint mode with an external axis rail
- I cant use it to control the pose ,but i can control the joint,what's wrong with me
- Impossible to use feed_forward velocity control alone - Gofa robot
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from abb_libegm.