-
Notifications
You must be signed in to change notification settings - Fork 157
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
Define ABB specific naming rules/guidelines #75
Comments
Last comment by @Levi-Armstrong on ros-industrial/abb_experimental#21:
|
@Levi-Armstrong, @Samsagax, @culletom, @shaun-edwards: opinions? |
I'm sure the others are in a better position to comment on this than me, but in my opinion I would be inclined to keep the naming as short as possible, as long as it still uniquely identifies each variant. In that sense, reach would only be added if needed to separate two manipulators of same model, modifier, and payload (as suggested at the end of @gavanderhoorn's first comment). So referring to @Levi-Armstrong's comment, reach does not need to be included in the naming of the two robot variants as modifier and payload alone identify each variant i.e. abb_irb4400l_10 and abb_irb4400l_30. Reach will then be clarified when the user looks at the specific technical data sheet. Also (from personal experience!), I would rephrase the proposed appendix to clarify that the naming of most artifacts within the ABB support package (bar the robot element defined within the macro / urdf) do not include the manufacturer's prefix, as this is already established from the support package name. |
Re: clarify / remove "all artefacts": you're right, and I should've done that before posting this issue. As to always including the reach vs leaving it out: what I'm worried about is that we can't know at this time whether there will ever be 'reach variants' of the IRB 4400L-30 (or other future models). It might actually make sense then to add it. I think @Levi-Armstrong also wanted to include it because that's "how RobotStudio does it", which would be convenient for users of both ROS and RobotStudio. |
I think there are good points about length in the naming. It should be short. But the shortest it can get is how ABB name their manipulators. They follow a schema like this: tl;dr; We could just use the RobotStudio naming. |
@Samsagax: is that pattern documented somewhere? Because fi the IRB4400-L10 seems to violate it (from here). Is the slash optional as well? Or is that site not using the official naming? In any case, it seems to make the most sense to always include model/series, payload, reach and variant (term used by @Samsagax) in the name. Is there an official definition of reach in ABB robots (I can't find it in the documentation I have)? |
This is also my concern, and I assume this may be why in RobotStudio the reach is always included to avoid the possibility of naming issues later.
As for the official definition of reach in ABB robot: I can not find where it is explicitly defined. After reviewing a few of the robots, it appears to be defined as the furthest the robot can reach along the x-axis (in front of the robot) measured relative to the base frame. In the robots working range figure , the robot can reach further in the z-axis than in the x-axis but the x-axis is stated as the reach. |
Ok. Then I suggest the following:
Where:
Two things I'm not sure about:
IIUC, this would closely follow RobotStudio's naming scheme, which I think is a good thing (less ambiguity, familiar, etc). (+) the word variant is already used to mean a slightly different thing in ros-i, so suggestions for alternative names are welcomed |
Yes. There is the 1600 that has all variants. Incluing: hollow wrist, plain (as in plain text), paint variant, absolute accuracy variant. I can show you a full detail of all abb robots (i know most of them) but can't publish them for copyright issues. And about reach: the x coordinate is correct, but is part of the name in abb specification.Joaquín Aramendía |
@gavanderhoorn: I would swap the PAYLOAD and REACH in the naming convention to match RobotStudio and ABB documentation. Also, I have only seen the payload represented as an integer with units kg, but I have not reviewed all of ABB robots. I will reach out to ABB and see if they can provide a definitive answer. @Samsagax: Can you provide a link to the product specification for the 1600 that includes the different variants? The one I have found does not include the variants you described nor are they an option for the 1600 in RobotStudio. |
re: payload & reach: I swapped them based on @Samsagax input. We can easily swap them around again. |
One other thing: do we actually want to discriminate between (and provide files for) all the different variants (term used as in @Samsagax comment)? For Fanucs, options like hollow wrist and paint mostly influence joint limits and max joint velocities. If we start creating urdfs for every variant that exists, we'll quickly end up with a lot of files.So I've sort-of decided that I'll only model the 'base variant', and clearly state which one that is. Users with non-default joint limits should then update a local copy of that urdf. |
I've updated the first post with the result of the discussion so far. |
See also #29 for some earlier discussion. |
Here is an example product specification of the IRB-1600 Look at page 3 the naming scheme. There the ID version is the hollow wrist one and differs a lot with respect to the others (note page 14 of pdf). I think the only part we can ommit is the load of the robot as only changes the wrist. We can use the largest wrist of both and keep ir there. The motion of robot is only limited when it's wall mounted for different load versions (page 40 of pdf). The reach can be viewed in page 41 of the pdf for the 1.2 version. Look that measurement is from the centerline of the robot (axis 1), to pos 3 (the maximum X coordinate the robot can reach), the robot work envelope is much larger. Hope this helps. I found that spec just googling around, so I'm not sure about copyright issues here |
I have to notice that in time the load parameter changes for the same manipulator. Here is the 10Kg IRB1600 brochure not specified in the above specification |
And here is the 1600 "paint" version, branded IRB-52 so no problem there i think. |
Hm. Ok. May I suggest we then always include the We should still be careful I think to not start creating URDFs for every (minor) variant out there. Opinions? |
Maybe we can arrange a correct set of includes in xacro files to manage complexityJoaquín Aramendía |
@gavanderhoorn: I updated this section of the naming guideline, removing the abb_ for artifacts within the ABB support package. I believe this was discussed at some point but had not been updated, is this correct? from:
to:
|
If with artefacts we actually only mean files and directories, then you're correct. Names of |
Is this correct? Currently the xacro for all support packages do not include the abb_. This is also the same for the fanuc repo. |
The macros, not the files they are defined in (so: The xacro macro may be used in a composite xacro, where the namespacing of the package ( |
Oh, ok. |
@gavanderhoorn: Is this ready to be moved to the README.md and close this issue? |
I did not actually intend for this be added to a readme, but as an appendix to a (yet to be created / finalised) REP (or less formal wiki page) on support repository layout and artefact naming (something like Industrial/Tutorials/SuggestedPackageLayoutNewRepositories). I suggest we re-add the Are we satisfied with the rules for naming robots now? So payload before reach, etc? I understand that this is basically what RobotStudio does? |
Completely agreed I guess.Sent from my Android device with K-9 Mail. Please excuse my brevity. |
Sorry, not intended to confuse anyone: wrt the wiki page about naming convention I also agree. We probably don't need a REP for this, as long as the guideline in the wiki is followed, because other manufacturers don't have the same scheme. And yes, RobotStudio does exactly that to name each manipulator. We should use the same as well to ease the user experience. |
What do you want to do about model's with different payloads but the same geometry? For example, the 2600 family has three variants: a 12kg 165cm, a 20kg 165cm, and a 12kg 185cm model. I'm most interested in whether we want multiple moveit configs for each model. |
@Jmeyer1292: I think we should strive to create as few packages as possible. So for the situation you describe, two packages would be enough (ie: one for 165cm, and one for 185cm reach). '(maximum) payload' is not a concept that is supported in any of the configuration files or planners, so would be application specific (ie: an additional parameter If however, the payload also influences maximum joint velocities (which it often does), then we should create separate packages, as those parameters do change the behaviour of planners. For the Fanuc LR Mate 200iC and all its variants I've done something similar (see fanuc_lrmate200ic_support: the support package supports all variants, but some urdfs are re-used for variants that have differences in areas that do not 'matter' (ie: colours, special environment coatings, etc):
I could see such parameters / characteristics become more important in the future though, so perhaps we should think about adding a |
@Samsagax wrote:
What we discussed in this issue would only apply to ABB robots. As you note, other vendors use different naming schemes, so we cannot re-use this for them. |
Looking at the recent PRs submitted against With the current rules, you get (taken from the
Option 1 is a bit weird: if doing that, why have two different macros in the first place? Option 2 is also strange: if you don't know there are Now as I said: payload is not a 'real thing' in ROS at the moment, but I imagine there is a higher chance of having multiple payload variants of a model with a certain reach than the other way around. It's a pity RobotStudio uses this naming scheme, as it is probably intuitive for people using that. |
@gavanderhoorn: What about allowing each support package to have a directory (ex: |
Somehow I missed your latest comment @Levi-Armstrong. My apologies. Yes, creating a common directory for shared meshes seems like a good way to handle this. If we do this, we can probably do away with the model/series prefix entirely, so the directory could just be called But +1 to the idea. |
@gavanderhoorn, Do you think this naming convention is OK to move to the readme file? |
@Levi-Armstrong: after going through the discussion again I decided to put all of this in a ROS-I REP. While working on that, I wanted to include some examples for how ABB Robotics product names should be converted into ROS compatible names (ie: no spaces, adhering to what we came up with in this thread, etc). One of the examples I wanted to include was the YuMi, and that particular robot poses a problem. I was unsure in #75 (comment), but it turns out there are (now) robots with below 1 Kg payloads: YuMi. The full product name of that model is With the current guidelines, that would convert to Should we list payloads in grams? In that case it would become: |
What about converting the 0.5 in a 05 in the ROS-I name? Like: ABB IRB
14000-0.5/0.5 -> abb_irb14000_05_05
Meaning "When you see a zero it means less than a kilogram"
|
This is a great point. I like the adding a leading 0 to for payloads that are less than a kilogram. We could use grams but for the larger robots the naming could get very long.
|
Yes, that would be a nice way to do it. Could still be confusing, but I can't come up with something better for now. |
Captured the current state of this discussion in a ROS-I REP. See abb_naming/rep-ixxxx.rst. Proper review should probably wait till I open a PR, but I wanted to see whether you agree that it corresponds to what we agreed upon in this issue. |
How should the case when there is multiple variants with the same data (Geometry, joint velocities, etc.) be handled. As far as I can tell the IRB2400/10 (12kg payload) and IRB2400/16 (20kg payload) have the same CAD, joint velocities and reach. I would assume max acceleration to be different but this is not published data. It is estimated based on the max joint velocity. Example implementation below. Mesh folder: |
I think we discussed that earlier (#75 (comment)). You suggested to use a
And I think the particular example you give we have covered in #75 (comment): models that are basically identical could use each others URDFs. So the 20 kg payload version would use the 12 kg payload URDF.
This has me slightly confused: how would you estimate that they have different acceleration based on joint velocities if their joint velocity limits are identical? |
So with identical URDFs, we don't need copies of the meshes either. Note that this is not specific to ABB support packages btw: I have the same 'problem' with Fanucs (as noted in #75 (comment). |
Sorry for the confusion. I would assume the max acceleration for the two variants to be different, but they do not publish this data because I believe it is dynamic. I think it changes based on various parameters (configuration, joint values, etc.). Since we are unable to identify this information, it is currently estimated in the moveit_config package. I believe it is estimated for a given using |
Ah, right. Yes, that is true (re: max accel being based on runtime parameters). The But it'll just mean that the robot won't be able to reach maximum performance. As we currently have no way to distinguish between the two payload-only variants and it doesn't / can't affect our planning, I feel it's justified to re-use the 12 kg urdf with the 20 kg variant. |
Example folder structure:
|
We could potentially include some top-level artefacts even for models for which we re-use xacros etc from other models, but I'm not entirely convinced what that gets us. The top-level xacro will never be used outside of the support package (as it cannot be used in a composite xacro), and the same goes for the My suggestion would be to completely re-use the artefacts for the IRB 2400-12/1.55, and thoroughly document that in the readme. That is basically what I did for the LR Mate 200iC and all its variants. |
@gavanderhoorn; I have created a PR implementing both variants of the irb2400 that have common geometry. Please let me know your thoughts. |
@Levi-Armstrong: unless you disagree, I suggest we close this one as resolved as I've just merged ros-industrial/rep#16. |
I agree. |
@Levi-Armstrong Sir, does any ABB robot supports joint velocity control in real-time? That is we can change its velocity in each time step. I couldn't find too much information online. Really appreciate any help. |
@mitch1044444: could I please ask you to not cross-post the same question to multiple fora/issue trackers? You already posted this on ROS Answers. Let's keep discussions centralised. Also: please don't post comments on random threads on issue trackers. It's not very nice. |
Split of from ros-industrial/abb_experimental#21.
Current suggestion:
Appendix A: Vendor specific naming
ABB
Variant names for ABB manipulators may include a modifier (indicating support for a particular feature, or a physical characteristic of the variant), a payload specification (one or more digits, indicating maximum supported payload in kg) and finally a specification of the reach of the arm (in meters). Examples: IRB 1600 - 10 / 1.2 and IRB 4400L - 10.
All ABB support packages shall be named using the following template:
Note that this template omits the modifier, payload and reach components included in the actual product name.
Where appropriate, artefacts within ABB support, MoveIt configuration and plugin packages shall be named using the following template (refer to the
Naming
section for more information):Where
MODEL
is a numeric string,MODIFIER
is a string (optional),PAYLOAD
is a numeric string (max payload in kg),REACH
is a numeric string (reach converted to centimetres, avoiding fractional numbers) andVARIANT
may be an alphanumeric string (optional).If a particular model does not have variants based on reach, the REACH component should be omitted from the ROS-Industrial name as well.
Examples:
irb1600_10_120
andirb4400l_10_255
.The text was updated successfully, but these errors were encountered: