-
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
Create code samples #18
Comments
@jontje Thank you for raising this issue! When you have a couple of minutes please help me through the situation that I am trying to solve. Please excuse the elementary questions. Thanks in advance. I am currently trying to send Moveit Joint Trajectories to the 6 axis ABB 1410 manipulator interfaced with the IRC5 controller running Robotware 6.06.01. I successfully used the abb_driver package to implement a ROS socket connection and send these trajectories to the robot but I encountered a latency which I cannot afford for my application. I am currently trying to set up Externally Guided Motion instead of the abb_driver to get more real time response from the manipulator. I will of course do a sanity check and stream smooth position references through EGM. As per your instructions I have read the IRC5 Application manual and I am trying to follow your instructions on #15, I have the following problem -> The RAPID sample EGM program is running in the controller, ROS computer IP address is configured as a UdpUC sensor device and I want to use the abb::egm::EGMControllerInterface class ( from abb_libegm) to write joint values to the controller using egm_interface.write method. But I am not able to send any data and the RAPID code times out on the controller side. Would you be able show me an example of using the EGMControllerInterface to send and receive data for the pose mode as well as the joint mode? Thanks again! |
@indraneelpatil Here are the examples I am working on for the library: abb_libegm_samples.zip Please note that they are not completely finished/fully explained, so there might be some things missing but the code should at least give you some hints about how to use the library. There is also a RobotStudio Pack&Go file included that can be used for simulating the examples in RobotStudio, as well as example RAPID code and system configurations. I hope this helps! |
@jontje Your examples were tremendously helpful. Using your examples I could successfully test the following:
Thank you once again, your help has saved me weeks of work. I am really grateful. |
@indraneelpatil No problem, and great to see that the examples were helpful!
|
@jontje Thank you so much for your pointer number 1 regarding the retrieveExecutionProgress method!
Thanks again for all the help. On to the next task now! |
@indraneelpatil You are welcome, and good luck with the next task 😃 |
I was wondering if someone would be able to assist me with the implementation of the code @jontje provided. I have robot studio running on a windows computer and have ROS/EGM library on a linux computer that I'm wanting to use to control the virtual robots. When I run the RAPID code in RobotStudio, I get the following error: "41822 - No data from the UdpUc device". Here are the steps I've taken so far to try to solve the problem: -pinged the IP address from linux computer to windows computer and vice versa I realize this may go better in the ABB forum, but I'm having issues trying to sign into my account. Any help would be greatly appreciated! (Also, thank you @jontje for providing that code!) |
@Mitch981521 Just to verify, have you started the EGM UDP server on the linux side? And have you verified that the correct remote port is used in the communication configurations on the RobotStudio side? Also, have you tried to temporarily turn off the Windows Firewall? It might block the UDP communication, and if it does then you can add rules for the specific ports you want to use. |
I just figured it out....I wasn't changing the IP address for the UCdevice in RobotStudio (I just assumed that only the ROB_# addresses needed changing). I will make note of the firewall being a potential source of issues. |
I'm also having issues with implementing the sample code. Our setup is a Windows machine running RobotStudio connected via ethernet to a router, and a Linux Ubuntu machine running Ubuntu 14.04 and ROS Indigo as our EGM server. The router is connected to the internet via Ethernet. A brief explanation of the procedure undertaken: Setup Procedure:
An error keeps popping up : "41824 - Not possible to open the UdpUc device", immediately followed by a "40233 - Execution Error". Debugging Steps:
I have a few ideas about what could possibly be causing the issue, but am not certain. When importing the Pack&Go file, I noticed that it was originally written with RobotWare version 6.06.01, but abb_libegm now works with strictly versions greater than 6.07.01, so I've imported it using RW 6.08. Are the samples still usable given the updates to the ABB EGM protocol and the updates to the abb_libegm library? If anyone has any advice I'd greatly appreciate it. |
It looks like you've covered most of the things I would've guessed. We are using Ubuntu 16.04 and ROS kinetic and were able to get ours to work. I would disable firewall features on both computers, just for good measure. In what directory are your compiled protobuf files? I had to manually compile mine as well and placed them in the include directory, which is where I think they need to go |
@rsaltus, can you retry with this EGMSamplesSolution Pack&Go.zip file instead? This Pack&Go is based on RobotWare 6.08, and I can run the samples from the zip-file above with the current version of abb_libegm. Also, at which RAPID instruction does the error appear?
I hope this helps! |
Thanks for your speedy replies, @danielj195 and @jontje. The original error was appearing at the "EGMSetupUC" line. However, I tried the new Pack&Go file this morning and it connects fine, and works as intended. So I think the old RobotWare Pack&Go was causing the problem. Thank you both for your help. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
I'm having some issues using the abb_libegm_samples provided by @jontje. I created the linux environment with protobuf & abb_libegm and can build my catkin workspace. But the catkin workspace gives error when I try to build it with abb_libegm_samples. [error] Initially there was some error that stated a requirement for c++ 2011 compiler that I resolved by adding "SET(CMAKE_CXX_FLAGS "-std=c++11 -O3") to CMakeLists.txt of abb_libegm_samples & adding the build directory in include_directories. This worked for building with abb_libegm but with abb_libegm_samples, I land up with the above errors. I am using ubuntu 16.04 & ROS kinetic. If anybody faced a similar problem, I'd appreciate your advice. Thanks! |
My problem got solved, thanks to the suggestion from @traversaro. I removed the line list(APPEND CMAKE_CXX_FLAGS -pthread) from /abb_libegm/cmake/abb_libegm-extras.cmake.in that was preventing from building the catkin_workspace. |
Hi, I am unable to build the samples package on Windows ROS Kinetic. Any idea what could be the issue? See below:
|
@rs-s wrote:
yes, this:
|
Thanks. I already have abb_libegm installed. I also sourced my windows ROS setup.bat and can see abb_libegm when I do "rospack list" but for some reason it can't be found during the catkin_make isolate process. It is also looking for abb_libegmConfig.cmake or abb_libegm-config.cmake however abb_libegm only seems to have the following file: abb_libegmConfig.cmake.in Any ideas? |
Hi @rs-s, Are you using the plain CMake implementation of Note: The
|
Hi @jontje , I am experiencing similar issues trying to build your samples with the plain CMake implementation. Could you please provide more details on what modifications need to be made to the abb_libegm_samples's CMakeList.txt? I have removed links to abb_libegm from the CMakeList.txt and modified the include statements in the cpp files to point to the abb_libegm headers but now I get the following error "fatal error: abb_libegm_export.h: No such file or directory". However I have built abb_libegm successfully. Any help would be much appreciated. |
Hi @cpilon,
What command(s) do you run when building?
You should have something like this in the
|
Hi @jontje - thanks for your reply.
I use catkin_make_isolated.
Ok, I added this.
This seems to be my issue. Where could I find more info about the right way to format this part? I have made a change in my include statement in the samples cpp files. For now I have hardcoded my path to #include "my_workspace/devel_isolated/abb_libegm/include/abb_libegm/egm_trajectory_interface.h". Now it can at least find the abb_libegm_export.h I mentioned earlier. However, I got the following errors because I guess I have not defined the abb and egm namespaces properly:
|
You could for example read a tutorial on modern
You should really try to avoid hardcoded include paths, it is not good for portability. Here is a rough example package (abb_egm_sample.zip) for linking It works for me on I built it with I hope this helps! |
@jontje - thanks for your help, I have been able to figure out my issues! |
@jontje |
Below is the error detail:
|
How does your ROS catkin workspace(s) structure look like? Did you build abb_libegm in an underlay workspace? If so, have you "chained it" with an overlay workspace? Or are you building both the abb_libegm and abb_egm_sample packages in the same workspace? |
Hi @jontje , |
@ScottYang1982: please show us the exact steps you're using to create your workspace, place the packages in it, install the dependencies and build it. As @jontje wrote: there are a few steps there which will directly influence the success of what you're trying to do. Without more information on what you're already doing, we cannot help you. |
I was able to compile the codes and was able to run the code but I get stuck in the wait for an EGM communication to start from thr ros side. When I start the simulation from the robotstudio side, i get
ROs side
Am I supposed to do something else to connect the two o just change the port address in the ros code?, Thank you very much in advansce |
Did you setup the You can find it via This is also mentioned in the FAQ of the Note: this is not specific to Edit: oh, and I just noticed this:
this will complicate matters, as the VMs typically use NAT by default, which means for servers inside the VM, you'll have to configure port forwarding, or else your simulated IRC5 will not be able to connect to the |
@jontje thank you very much for your answer, i was able to connect and run the programs.
|
@stevedanomodolor: let's keep this on-topic. Please post a new issue on the appropriate issue tracker. |
Create samples to showcase how to use the interface classes, including:
The text was updated successfully, but these errors were encountered: