Giter Club home page Giter Club logo

Comments (4)

jontje avatar jontje commented on August 15, 2024

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 option Multitasking [623-1] is required to have more than one task.
  • Coordinated movements via EGM is not supported.
    E.g. RobotWare option MultiMove 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.

bhomberg avatar bhomberg commented on August 15, 2024

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.

jontje avatar jontje commented on August 15, 2024

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:

  1. Waits until the robot controller requests new references.
  2. Notifies an external control loop (implemented by the user) that new references should be provided.
  3. The external control loop calculates new references and provides them to the interface.
  4. The interface sends the references to the robot controller.
  5. 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.

  1. When the robot controller requests new references, then the interface processes the trajectory at the head of the queue.
  2. 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.
  3. 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.

bhomberg avatar bhomberg commented on August 15, 2024

This is very helpful @jontje! Thanks for your answers.

from abb_libegm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.