-
Notifications
You must be signed in to change notification settings - Fork 213
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
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
Robot version organization and planned breadth of support #105
Comments
Just a quick comment: the current distribution of variants over the support pkgs was setup exactly to put variants of the same robot series in a single package. This is similar to how it's done in ROS-I for all other robot mfgs. See Naming conventions for ABB robots in ROS-Industrial for a REP that makes this explicit for ABB products. Whether we've succeeded in this repository I'm not sure: I'm not a KUKA expert, and got involved with this repository quite late, after the clustering according to The goal of such clustering (and the existence of robot support packages, instead of a |
if with this you mean that we only add support for variants (and create the corresponding support pkg for the series) if/when a user contributes it (including us), then yes, that is how it works. If the clustering of variants is done right, this approach should work, as a user needing support for a new variant would just have to contribute some files to an existing package (or, in the case of a completely unsupported series, contribute the support package as well).
As far as I was aware we had a strategy, but if there is a better one for KUKA products, I'm all for updating the pkgs to match something better. What I don't think is feasible however is to setup some sort of plan for incrementally adding support for all series and variants. That doesn't make sense to me, and would just mean a lot of work, with potentially little gain. Adding a new variant is an hours work, at most (depending on the source material).
I'm not sure I understand you: all variants are clustered according to |
In the end clustering product variants like this comes down to three things:
Ad 1 seems clear: see the PDF you link Ad 2 is not so clear for me: as a (relative) outsider, I see all KUKA robot product names starting with Ad 3 is more complicated: 'influence' here is not just 'in the real world', but also wrt ROS interaction/use with/of the resulting packages. Example: there are no motion planners right now in ROS that use information about max payload, or adjust planning parameters based on dynamic properties of robots (other than perhaps max acceleration). In the case of the ABB REP I linked earlier fi, this has led to payload not being used as a branching point in variant identification (see the Alternatives section). The xacros still have all the information, and if/when properties ignored right now do become important, additional variants can be added, but until then, some variants can be supported using the models of others. As I noted earlier, I'm not intimately familiar with all of KUKAs offerings, so that makes it difficult for me to gauge how well we can use this for clustering KUKA variants. |
Finally (for now): the planned support in terms of robot support packages would be: all variants of all series, but only if support for a specific variant is requested or contributed. |
@gavanderhoorn wrote:
I'd actually very much welcome input from the community here, in addition to @BrettHemes'. |
Just to be clear, I actually don't have a problem with the current approach. There seemed to be some concern previously about the repository's current size, however, and I thought a family-based hierarchy might help or at least be worth discussing. As an example the KR 10 R900 sixx has the same geometry as the KR 6 R900 sixx but in the current organization they would exist in different packages. It seems however that maybe it is not the best approach... :)
Wasn't implying that we do this.... an hour is fast, especially on versions with non-convex-hull-friendly link geometries.
I don't know what I was thinking here either ??? From the ABB naming rep:
This seems relevant considering we are naming with payload AND range. In the context of the KR 6/10 R900 example is this suggesting we note somewhere the equivalence? |
@BrettHemes wrote:
I'm always up for a discussion of development practices, whether current or best. If you feel something can and/or should be changed/improved, I welcome input. re: agilus: yes, that seems to be a non-optimal clustering that we should perhaps rethink.
Ok. I just wanted to be sure I understood you.
It depends a bit on your experience with doing this as well :) I can do a Fanuc variant in about an hour, if not faster. But then I do depend on Fanuc providing me with a SolidWorks or similar model.
well, if you don't know, I don't know how I'm supposed to know ;)
Yes. If they are indeed identical apart from the payload spec, then we should remove one and note that the remaining one should be used. Looking at the PDF you linked, it would seem that could make sense for at least the Agilus series. |
Have you thought about this more @BrettHemes? |
I don't know what the "right" answer is, and there probably isn't any just one. I do now however think that my proposal in the initial comment is most likely not in that group of right answers 😄 Shall we close this then? |
@BrettHemes wrote:
I'm not so sure about that. If KUKA groups their robot models differently from how we are doing it, it might make sense to re-evaluate our approach. Your suggestion makes sense. We just need to figure out whether it makes enough sense to reorganise the repository. |
I also think that from a package side of view having an agilus package makes sense. Especially since they share meshes and even the complete urdf structure (for the r900 at least). Sharing meshes across packages or even xacro-macros as in #134 is very confusing I think. |
I'm not sure I agree here, I would prefer having two (or n) description packages, one for each name and then just reusing meshes and kinematics as much as possible. (but maybe that is just what you meant ...) |
In #146 I posed the question whether to separate series or not. We currently have a request for a new Kuka Iontec KR70R2100 robot and I'm not sure whether it should be packaged as Kuka separates those lines/series (cybertec vs Iontec vs classical agilus) and they share not much besides payload that's why I'm in favor of including it ... but I'm fine either way |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
@gavanderhoorn
I feel there is some room for improvement regarding robot support package organization. ...but looking at Kuka's taxonomy I realized how many variants there actually are. I assume that the current procedure is to add support on a per-case/request basis but am wondering if we shouldn't plan organizationally now before moving things out of the experimental repo... at the very least we should adopt a strategy and stick with it (currently we are using two, AGILUS family-based and then all of the rest...).
Kuka has a brochure with (all?) of their current offerings with their organizational scheme here. From what I can deduce Kuka's organization is as follows:
Type
Rated Payload
Reach
I am not sure the above makes the most sense and was thinking about using the family name (if it exists) and then breaking out the versions in the meshes folder. One solution could be like the following where I have used the LBR iiwa and AGILUS families as examples:
Benefits:
Some issues:
Ideally what we would gain most is a hierarchical sorting of meshes that promotes sharing within families... but knowing if a particular geometry belongs in the "common" folder or in a reach-specific folder version is not straightforward and requires good Kuka family knowledge
I like the AGILUS repo folder approach but is this worth it to do across the whole repo? Ultimately I think we should pick a single strategy (i.e., flat OR family-based hierarchy) before moving out of experimental but am not sure about the best way to go. Ideas are welcome :)
The text was updated successfully, but these errors were encountered: