-
Notifications
You must be signed in to change notification settings - Fork 110
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
Migrate to opw_kinematics for all supported robots #245
Comments
just came across one "small" issue ... Jmeyer1292/opw_kinematics#11 |
Hm. I had not noticed that. Let's see what @Jmeyer1292's response is. |
@Jmeyer1292 changed the license to Apache 2 so licensing would no longer seem to be an issue. |
the MoveIt! plugin by @JeroenDM is Apache since yesterday as well and a first quick test worked quite nicely |
Did you observe the "low performance" that @JeroenDM was complaining about some time ago? |
@gavanderhoorn it "feels sane" but I'm waiting for moveit/moveit#1272 to actually measure it. I have some other unrelated but huge performance issue that I need to profile first. |
@gavanderhoorn how do we get started with the migration? |
@simonschmeisser wrote:
We'd need "someone" to extract all the required parameters and/or update/check @JeroenDM's work to extract them from the xacros for all the supported robot variants. Then create pkgs out of those parameters and PR those. |
I have some time this weekend to work on the automatic extraction from the urdf / xacro files. But in the short term it is maybe faster to manually get the parameters from the robot and write a good test to check you work. (In any case I will do this for some robots to check the automatic conversion.) |
As much as I like extracting the parameters from urdfs -- as it would mean less work for users -- it might be best to actually do the work manually and hard-code the parameters in the various plugins / configurations. We've had users change base xacros in the past (adding tool frames and links, changing As OPW has quite strict requirements on the kinematics of a manipulator for the algorithm to work, supporting automated extraction would seem to increase chances that users try to use any plugin(s) on their own xacros/urdfs, which will most likely fail. From a maintenance / support perspective, a setup similar to the IKFast plugins (ie: hard-coded to match with one specific kinematic configuration) might actually be preferable. |
I see your point. I will focus the time I have on improving the moveit_opw_kinematics_plugin. Just wondering, should the pull request for the kinematic parameters be done at the fanuc repository, or first at fanuc_experimental (and then when it is stable migrated to the first one)? |
@gavanderhoorn I plan on doing the pull request for the kinematic parameter files on this repo, if that's ok with you? |
Can you describe a bit the way you want to approach this? New packages? A |
I propose the following pull request: WIP replace ikfast plugin with opw_kinematics for supported robots
I will test this locally by creating a workspace where I add By creating the pull request I can get feedback and comments of people who actually know the robots. Or do you think it's better to first create a pull request for the opw plugin at moveit to get it integrated and properly tested before moving on in this repo? |
So iiuc, Both plain Seeing as Users of plain The robot support packages already have a mechanism (and a folder) for this: the
Testing would definitely be needed, and automated testing would be even better, but the IKFast plugins currently are also not tested, nor is there infrastructure to do that. I would be ok with a (first) PR just adding the parameters. We can then do a manual test with a MoveIt configuration package we configure to use the
Getting the package released -- whether as part of MoveIt or stand-alone for now -- would certainly makes things easier from a maintainer point-of-view. We could simply update the package manifests of the affected MoveIt packages and dependency resolution would do the right thing when running For a first test here with the robots in this repository it'd probably be fine to have to build it all from source though. Releasing the plugin can then be done in parallel. |
@gavanderhoorn right now kinematics.yaml is a "standalone" file and we can simply load the file from a robot specific (eg fanuc-experimental) generic (debian)package in the planning_context.launch of a site/project/installation "instance" package. Splitting the information in two files would require some sort of abstraction layer? An extra launch file? Currently |
I'm not sure I completely understand: I don't really like using
That's why I suggested hosting a new file in For use with MoveIt: add a For other use: Seems like the most flexible way to do this, no?
I would say extending But we don't necessarily absolutely require |
Just as an example: I'm essentially suggesting we store these parameters in variant-specific files (from here): kinematics_solver_geometric_parameters:
a1: 0.025
a2: -0.035
b: 0.000
c1: 0.400
c2: 0.315
c3: 0.365
c4: 0.080
kinematics_solver_joint_offsets: [0.0, -1.57079632679, 0, 0, 0, 0] I would probably not use those names though (as |
Do you suggest In any case I'm in favor of a MoveIt! independent setup as I (ironically) never use the opw_kinemtics plugin myself. (I do use MoveIt! for collision checking.) (And therefore, thank you for your feedback as a user, @simonschmeisser) Also, I probably won't have time the next two weekend to work on it as I'm going on a holiday. I have generated parameters for all supported fanuc robots already and tested some of them. |
I'll respond to the rest later, but: @JeroenDM wrote:
could you make those available somewhere, so I can take a look? |
Certainly, but I don't have my work laptop with me today and they somehow didn't make it in to my online backup system. I hope tomorrow is ok. |
@gavanderhoorn https://github.com/JeroenDM/wip_fanuc_opw_parameters |
Thanks. I'll take a look when I have some time. Edit:
hah. I wouldn't be so sure :) |
the second part using I somewhat worry about having the group name in a third place besides srdf and |
Yes, I could do that. It's how
I don't like it too much either, but:
I'm starting to think the "make
it's really just a convention we have in ros-i. |
the 'loading a yaml file' approach could also be fairly generic and just load the file to the param server and then use the existing 'lookupParam' code |
I'm going to do an initial release into Melodic without the IKFast plugins, as I'd like to only release an OPW based set of packages. Have you made any progress here @simonschmeisser? Or are you waiting on me to implement this? |
My long term memory has this tagged as 'status unclear', have we decided on something? Will look into it tomorrow |
so by user_moveit_setup_package/config/kinematics.yaml:
fanuc_m10ia_support:config/opw_configuration_m10ia7l.yaml
(I removed the and then the plugin loads the I can implement this during the week I just thought it would be cool if pluginlib had a way to put arguments into the xml file and pass them to the plugin, then this could be completely transparent to moveit setup assistent |
My apologies: I seemed to remember we wanted to test some alternatives before deciding on a particular way forward.
Not necessarily the part that loads a re: loading the
hm. With 'parameters' you mean the path to the How would you configure a particular group to use a particular plugin + set of parameters in that case? |
Should have elaborated a bit more, my idea was to have a model specific xml file containing the path to the specific yaml file and then you would just load this in kinematics.yaml/select it in moveit setup assistant eg
|
Would the That would require But would we then host those If we'd have to create packages to host those files in that would be quite some overhead (essentially replacing IKFast packages with OPW Kinematics ones). |
exactly
but it would be plug 'n play with current moveit setup assistant and co
I would be fine with/prefer having those plugin.xml files in the |
yes, there is no support for that indeed. But I like the idea of giving different names to the same type of plugin. That may be something to look into. |
Just did a quick test with Just the solver itself increased in size from ~150KB to ~550KB. Not sure what changed in IKFast, but there wasn't a measurable performance increase or better IK results. I believe the plan to migrate everything over to OPW makes sense from this alone. |
550KB of generated code? Sounds hard to sell given that opw is 270 lines of code ... also I might be mistaken but I think moveit_opw_kinematics_plugin handles special cases like seeds outside +-180° better by now I'm a bit afraid we're running circles here trying to find a solution that
I would personally go for one of
But I'd happy to implement/support anything else as well :) |
Yes. For this particular robot that's an increase of about 400KB. Assuming similar increases for other models and variants, that would lead to a 25MB increase just to update the IKFast plugins.
Exactly. All the more reason to use OPW. As for the rest: MSA compatibility for many other IK plugins essentially comes down to being able to select it from the dropdown. Any solver-specific parameters need to be added/loaded by hand. As to the rest: someone will need to come up with something acceptable and provide an implementation. Only then can we start evaluating the pros and cons. |
I have another idea I would like to throw in here: Do you think this idea is worth a prototype? |
hm. That may actually be an idea. Not sure about attaching them to |
The plugin gets the following information: robot_model, group_name, base_frame and tip_frame(s) group_name is not part of the URDF but rather SRDF which typically is not composed/composable so we basically have the choice between base_frame and tip_frame (eg. Note that with this scheme we still need to guess/default value |
I went ahead and create the pull request (#284 ) to add the parameters to the support packages. In going forward, it appears to me that we have three design goals.
The pull request addresses the first point. |
With #284 merged, we're finally making some progress here. Thanks @simonschmeisser and @JeroenDM for pushing this forward. |
I was kind of surprised/embarrassed to see when this issue was opened (aka when I started working on the plugin). I did not work particularly fast. I'm happy to see to some progress too :) |
Thanks again @JeroenDM for the work 👍 We'll keep this open until all support packages have OPW parameters and we've switched the MoveIt configurations to use the OPW plugin. |
This for sure will be amazing. I am working on experimental automated OPW parameter extraction from URDF. The biggest problem so far, we have not enough robots with both verified URDF and verified OPW parameters to build a descent testing suite. |
You can find more examples in kuka-experimental, abb, doosan ... Im some cases only in our isys-vision forks Also the self check should tell you if it works ( comparig forward kinematics via urdf and via opw parameters for two poses) |
Instead of IKFast use Jmeyer1292/opw_kinematics for all robot models and variants we support.
Current status:
The text was updated successfully, but these errors were encountered: