-
Notifications
You must be signed in to change notification settings - Fork 218
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
kr210: update xacro to comply with actual kinematic chain #98
Comments
I have been dabbling in robot model creation to learn the process. I thought of doing this one, but am not having luck on the Kuka website to obtain the CAD models. Specifying Kuka Robotics and product name "KR 210 L150" only yields one CAD model, and it's not a robot (part is called a SolidWorks doesn't let me import the existing Could someone point in the direction of the correct CAD files for this robot? |
Asking KUKA for these directly is most likely the best way. Unless someone has these lying around, of course. Getting the models from KUKA would also be a guarantee that you'd get the correct model. |
I just checked the KUKA download site, and if you filter for the |
@jwhendy wrote:
No, that won't work. For modifying Collada, I always use Blender. |
I noticed that (and downloaded the CAD) when I posted my comment, but I wasn't confident that the KR 210 L150 == KR 210 L150-2. I looked at each manual and they appear identical, minus joint limit definitions. Lettered dimensions are the same, with the exception of F:
The joint positions appear identical, so the kinematics should be the same, and I would define this with respect to the actual L150 limit conventions. Would you advise to proceed with the L150-2 CAD model? I would also be happy to contact Kuka for the L150 CAD. |
Contacted Kuka, who pointed me to the KR 210 L150-2 CAD model. To that, I asked:
They replied:
I will use the CAD for the L150-2 and the joint limits as defined in the drawing above for the L150 to take a shot at this robot definition. |
Actually, I wonder if I should make the L150 and L150-2 at the same time? I'll create separate .xacro files with different limit definitions, linking to the same visual/collision models. |
Always preferable to get this sort of info from the mfg itself. +1 for asking them. re: create both variants: yes, that would be an option, although it would lead to a lot of duplication to only change on joint limit. I've been playing with the ability of This would probably require some experimentation to get it just right (yaml structure, who is responsible for loading the yaml: the macro or the consumer, etc), so if you're not up for that @jwhendy, I can understand. In that case just go ahead and duplicate the file. |
See ubi-agni/human_hand/model/human_hand.urdf.xacro for a very good example of how to exploit |
@gavanderhoorn Finally got to this. I'm about ready to commit the KR210 L150 and submit a PR. One unforeseen catch was the definition of their joint limits. If you compare the two pictures above, the L150 uses Could you guide me on these routes (or suggest another)?
The first option preserves the limit conventions (you can go from -209 to 65 for Lastly, a caveat on all of the above is that I'm going by the drawings alone. I don't have the robot, so I don't know if the true controller zero configuration differs from what is shown. |
Sorry for my late reply (too much to do). I'm not entirely sure I completely understand what you're describing/suggesting here. Could you perhaps explain again what is the reason you can't reuse the meshes for both variants? |
🏅 for working on this btw. Much appreciated. |
No problem, and it took me two weeks to do this anyway :) It's nuanced... the .stl files themselves contain the origins, so based on how the Kuka limits are defined per the L150 vs. L150-2, we either give up all but translation in the joint translations, or we use separate meshes. At least that's the only options I see. Here's another attempt to call out the two joints of interest, and how I defined them via CAD to preserve only one non-zero entry in the It's crude, but hopefully makes sense. I see two scenarios:
The L150 doesn't have this problem as they updated the +/- reference for
Does that make anymore sense? I like option 2 the best... but I don't know when people are programming if they would get surprised by thinking they can go from -219 to +65 when really it's -119 to +155... |
It seems the zero positions are different. That said, reading through the above, I feel the situation is being overly complicated... Ultimately, the urdf should result in a model with the same zero-position and joint limits as defined in the manual. As @gavanderhoorn alluded to, you have several approaches on how to do that varying in complexity.
The joint limits in the urdf are with respect to the relative poses defined in the joint element (about the axis defined by the axis child element). The frame assignment in the meshes can be arbitrary but should be meaningful. The "x forward / z up" is a suggested approach (~standard) for ROS-Industrial. I think in this case you share the meshes, have separate OR reconfigurable urdf(s) where one deviates from the "standard". You can even put in a comment to say why you made the decisions you made.
Yes, don't do this... it should match the actual hardware/controller/pendant conventions. |
Thanks for the clarification. I think I'll prefer the L150-2, which in my opinion looks to be more "standard" (z up, x out for all joints). The L150 would have one additional RPY entry for |
I admit that the hand model is a bit over my head, but I'm willing to dig in more. That said, it dawned on me that the
I added a model param, and if a 2 is passed (intended to represent specifying L150-2), we change the offsets for
It seemed like overkill to specify all the joint values in a |
As reported in #97, the KR 210 L150 xacro in
kuka_kr210_support
is not correct, in that the origins of the joints don't correspond to the internal model of the robot. This leads to deviations between what the controller reports as the Cartesian pose of the robot (tool, links) and what TF calculates.This should be fixed.
Easiest is probably to redo transforms in the xacro based on the workspace reachability diagram included in the KR210 datasheet(s).
The text was updated successfully, but these errors were encountered: