kth-ros-pkg / yumi

ROS packages pertaining to the ABB YuMi (IRB 14000) robot
BSD 2-Clause "Simplified" License
44 stars 38 forks source link

EGM files are missing #7

Closed sinamr88 closed 6 years ago

sinamr88 commented 7 years ago

Hi All,

First of all, let me thank you all for creating this great package and the wiki!... I was following the wiki to set-up the framework, however, I failed to find the following files in the package:

EGM/TRobEGM.mod EGM/TRobMain.mod EGM/TRobSynchronization.sys EGM/TRobSG.sys

Can you please help me? Moreover, while defining a new task in RobotStudio, its type can be either normal or Semistatic/static. However, if one chooses Static, there is no way to define the trust level. Hence, I was wondering how the type of the tasks and defined Normal while Trust Level is specified in the following instruction:

https://github.com/kth-ros-pkg/yumi/wiki/Firmware-setup-(article-in-development)

Thanks in advance for our help. Best Sina

sinamr88 commented 6 years ago

Hi Guys,

No News? I've also checked all the backup files, they don't exist.... Are they located in a private repo? OR sth else? Moreover, I am a bit confused by the following task types:

EGM_START_JOINT | Digital Input | All EGM_START_POSE | Digital Input | All EGM_STOP | Digital Input | All GO_TO_HOME_POSITION | Digital Input | All RUN_CAMERA_COMMAND | Digital Input | All RUN_SG_COMMAND | Digital Input | All

How do you define this? The only types available to me are Normal, Semistatic and Static.

ANY COMMENT IS HIGHLY APPRECIATED :+1:

Best, Sina

diogoalmeida commented 6 years ago

Hi Sina,

Thank you for your comments, and sorry for the late reply. I am afraid that EGM is a proprietary interface for using ROS with Yumi, so we cannot provide it for free (nor for a payment, as it is ABB's property :stuck_out_tongue:). I spoke yesterday to our research engineer @YoshuaNava, which mentioned he might make an option to use other interfaces. I'll try to make sure that future comments are addressed faster.

Let me know if this is still relevant to you.

Best, Diogo

sinamr88 commented 6 years ago

Hi Diogo,

Thanks a lot for your reply. It was really helpful. If you don't mind, may I ask how you guys purchased it? Can you please provide more details regarding the name and the version of the software/interface?

Thanks a lot for all your help.

Best, Sina

diogoalmeida commented 6 years ago

As a lowly PhD student, the purchasing details are a bit above my paygrade :). @YoshuaNava Should know more about the software/interface details, so I will ask him to write a nice reply.

YoshuaNava commented 6 years ago

Hello Sina, Sorry for the delay in replying.

RWS is a library for communication with the robot internal controller, that allows you to do position control, get images from the grippers cameras, get the state of the robot, etc. EGM is a library for direct velocity control that runs at about 250Hz. To launch EGM it is mandatory to have RWS.

I'm preparing some changes that will allow you to build this package without EGM/RWS.

Regarding the distribution of these libraries (and their RAPID modules), we have asked ABB, but they don't allow us to put the scripts in the repo.

Regarding the acquisition of RWS/EGM, I suggest that you contact ABB Sweden, and if possible, the EGM developer Jon Tjerngren @jontje

Hope this helps. Please let me know if you have any other questions.

Yoshua

lz89 commented 6 years ago

Hello @YoshuaNava and @sinamr66 ,

We (Imperial College) recently purchased the the EGM module from ABB UK. The local team was not aware of the "EGM for YuMi" as currently it is not officially supported. I contacted the ABB engineer Jon Tjerngren @jontje who explained to me that only EGM joint control is supported for YuMi.

@YoshuaNava ABB UK support team sent me a file (named: 14000-500942_RobotWare.rlf), and asked me: "build a system in RobotStudio using installation manager then add this file to the license tab". Do you have any experience on this? If I manage to build the system with EGM myself successfully, can I get the related RAPID code you are using?

Thanks, Lin

YoshuaNava commented 6 years ago

Hey, @lz89 Great to hear that you could acquire EGM. Indeed, EGM is a product in development at this moment. What I've heard from them is that they need to flash the internal controller, so I'm not 100% sure.

One of the most important things to check once you have installed the EGM license is the robot network config. You need to make sure that the IP for receiving messages is set, under UDP protocol. We normally use 192.168.125.50 in our YuMis. I can tell you more about this tomorrow, when I'm at the lab.

@sinamr66 I just finished setting up the cmake files so that you don't need EGM/RWS for building this package. It limits quite a lot the amount of things that you can do (velocity control and gripper cameras are not accesible without RWS and EGM), but you can still use the ABB driver on a real YuMi, and Gazebo. I'll be testing this latest changes, and notify you when they are good to go.

Hope this helps. Please let me know if you have other questions.

Yoshua

jontje commented 6 years ago

Hello everyone,

Here are some answers/corrections that I hope clarifies a few things. And sorry for the “bulky” reply.

----- Questions ----- @sinamr66 Maybe you already received all you needed concerning these, but I added them anyway:

  1. TRobEGM.mod, TRobMain.mod, etc.: They are currently not open-source. See “Concerning potential open-source” below for a bit more info.
  2. If you have a Static task: There shouldn’t be a problem to set the trust level. I.e. in Configuration -> Controller -> Tasks.
  3. EGM_JOINT_START, EGM_POSE_START, etc.: They are IO-signals, and not tasks.

@lz89 The .rlf file is a license file.

You use it when you install a new RobotWare system (on a real robot controller). E.g. in RobotStudio you can do something similar to this:

  1. Open Installation Manager (under the Controller tab), and choose your robot controller.
  2. If needed: Free space by deleting an old system.
  3. Add a new system: 3.1. Under Products: 3.1.1. Press Add... -> Choose the RobotWare version. 3.1.2. (Optional) Press Add... again -> Add SmartGripper product (if you have the grippers). 3.2 Under Licenses -> Press Add... -> Find and choose the .rlf file. 3.3. Under Options -> This should already be filled out. 3.4. Under Confirmation -> Press Apply.
  4. Wait until the intallation finishes.

----- Corrections/clarifications ----- Concerning RWS and EGM:

Note: RWS and EGM are completely decoupled, so it is perfectly fine to use one without the other. Both are also platform independent, so they can be used with e.g. Ubuntu or Windows etc.

Concerning potential open-source: The RWS and EGM products specifies the interfaces (i.e. used communication channels and protocols) exposed by the robot controller. They do not provide anything for e.g. the external side, see the sketch below for a rough overview:

overview sketch

I hope this helps.

Best regards, Jon

diogoalmeida commented 6 years ago

Thanks for the reply @jontje! Really informative.

YoshuaNava commented 6 years ago

Hey, @jontje thank you very much for your reply!

I might be mistaken, but with respect to the EGM and RWS libraries, they may be used standalone without a problem. However, without RWS you might not be able to set parameters that are critical for EGM performance (as we do in here).

jontje commented 6 years ago

@YoshuaNava: Ah, yes, in your case it is a good fit for RWS. I was referring to a more general case, and I should have mentioned that. My bad :)

There are other ways to do something similar, e.g. with RAPID sockets or the IO-board and interrupts. However, I practically always prefer to use RWS.

sinamr88 commented 6 years ago

Dear All,

I really appreciate all of our help. the replies help me a lot to understand the control architectures.

Thanks a lot..:)

Best, Sina

lz89 commented 6 years ago

@YoshuaNava Based on @jontje clarification, is it mean we can't use the EGM feature of this repo at the moment? Before the EGM RAPID code become public, the options are: 1) Orebo repo with ABB driver (yumi_support) or RWS (yumi_hw); 2) ABB driver of this (kth) repo?

Thanks!

YoshuaNava commented 6 years ago

@lz89 Exactly. As Orebro University is not going to continue developing the YuMi package, we are setting ours at KTH to provide the same features without the compilation problems that occur when you don't have RWS/EGM.

I made some changes during the weekend in that direction. I'll be testing them in all our branches this week. Nonetheless, if you need to introduce them immediately, check the changes made in optodaq_sensors/yumi_hw CMakeLists.txt

YoshuaNava commented 6 years ago

Ok. I've just tested building the package without EGM/RWS, and it works fine. Check issue #11 for more details.

lz89 commented 6 years ago

@YoshuaNava Great, thanks a lot! Just to confirm: I should use the egm_modifications branch of this repo and use RAPID in the yumi_hw to setup the RWS control interface for YuMi without the EGM feature. I will test this and let your know if there is any issue.

galou commented 6 years ago

I'm interested in getting the images from the gripper's camera. I don't need EGM. Is there a chance to get the abb_rws_interface package from somewhere?

Do you know any alternative to get the images from the camera in ROS (I shortly tried https://github.com/HumaRobotics/modbus without success yet).

Thanks for any info, Gaël

jontje commented 6 years ago

@galou: I haven't used the SmartGripper camera for quite some time, but there are some options.

One option is to have a job on the camera, which stores the image in the robot controller's memory. Then the RWS file service can be used to retrieve the image. An issue with this is that it isn't very fast.

Another option might be to investigate if the RWS Integrated Vision (IV) service have any new features that allows for direct access. I haven't had time to look into it myself.

If I remember correctly, then @YoshuaNava have done some work for accessing camera images, which might be using some other approach.

Finally, you can use https://github.com/ros-industrial/abb_librws instead of abb_rws_interface. abb_librws is the successor of abb_rws_interface, and it is open-source.

I hope this helps!