-
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
Questions: does abb_libegm allows for joint velocity control? #15
Comments
Hi @mitch1044444, Yes, abb_libegm allows for joint velocity control. Concerning the real-time aspect it will depend on your requirements. The highest frequency EGM can run at the moment is 250 Hz, so every 4 ms the robot controller can accept new control references. However, there is also a control lag of 10-20 ms depending on the robot type and how EGM has been configured (the numbers are from the official EGM documentation). Concerning the main difference between abb_libegm and abb_librws:
I hope this helps! |
Thank you so much for your helpful information @jontje . Just want to check if my understanding is correct.
You already have helped me a lot. Thank you so much. |
No problem, and here are a few clarifications. ABB Robot RequirementsFor EGM to work with the robot, then the following conditions needs to be fulfilled:
Runtime RequirementsIf a robot controller system has been installed with the correct RobotWare version, and has the EGM option, then the following needs to be fulfilled as well. Robot Controller Side
External Computer Side (e.g. with ROS)
// Boost components (for managing asynchronous UDP sockets).
boost::asio::io_service io_service;
boost::thread_group worker_threads;
// EGM interface components (for setting up and providing APIs to a EGM server).
abb::egm::BaseConfiguration configuration;
configuration.use_velocity_outputs = true;
abb::egm::EGMControllerInterface egm_interface(io_service, 6511 /* Port number (needs to match the robot controller EGM settings) */, configuration);
worker_threads.create_thread(boost::bind(&boost::asio::io_service::run, &io_service));
// Simple joint velocity control loop.
abb::egm::wrapper::Input input;
abb::egm::wrapper::Output output;
while (ros::ok())
{
if (egm_interface.waitForMessage(500))
{
egm_interface.read(&input);
// Calculate, and set references. For example:
output.Clear();
output.mutable_robot()->mutable_joints()->mutable_velocity()->add_values(1.0);
// Etc.
egm_interface.write(output);
}
} I haven't written down all the details, but this should give you an idea of the requirements. |
Thank you so much. Really appreciate your help. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Hi, Do you know how to set up the instructions in RAPID to receive the change of velocity from C++. |
@jontje Can you share your PARID code that set up the EMG for changing velocity realtime. This will very helpful. Hope to get your help |
Hello @ChunyangXia, You should be able to use the RobotWare StateMachine Add-In. You can install it via RobotStudio --> Add-Ins tab --> search for StateMachine --> press Add. If you only want the RAPID code, then you can create a dummy virtual system according to the example in the User Manual and extract the code from there. After you have the RAPID code, then you need to make sure that the RAPID EGMRunX instructions's |
@jontje Hi Jontje, |
Please refer to #18. |
@jontje MODULE EGM_test_UDP
ENDMODULE |
@ChunyangXia: let's not keep commenting on an already closed issue. Please open a new one. |
@ChunyangXia Hi, ChunyangXia. Have you already realized real-time velocity control? May I ask you some questions? |
Hi All,
I know this perhaps is not the best place to ask questions. However, we are on a tight schedule and have to make a decision recently to purchase a large robot for force control.
I wonder if abb_libegm allows for the control of joint_velocity in real-time? If so, could you please briefly tell me its real-time performance of joint velocity tracking and its difference from abb_librws?
Thank you a lot for your good contribution for me to ask this question here. Really appreciate your time and help.
The text was updated successfully, but these errors were encountered: