JeroenDM / moveit_opw_kinematics_plugin

An attempt at writing a MoveIt! plugin for opw_kinematics.
http://wiki.ros.org/moveit_opw_kinematics_plugin
Apache License 2.0
7 stars 7 forks source link

Robot on rail plugin #52

Closed marip8 closed 4 years ago

marip8 commented 4 years ago

This PR implements a new OPW kinematics plugin specifically for OPW robots mounted on a single external axis. The plugin samples the external axis at the specified discretization and uses the OPW kinematics plugin to solve IK at each discrete joint position, returning the solution closest to the seed in joint space.

This plugin is configured with the existing OPW parameters as well as a string for the planning group of the OPW robot. The assumption is that a separate planning group exists which defines only the OPW robot joints. Currently only a single external axis is supported, but this plugin could be modified relatively easily to work with an arbitrary number of external axis joints

JeroenDM commented 4 years ago

Really nice extension, thank you! It's going to make the plugin so much more useful.

If it's ok with you, I will go through it and try it out this weekend. At first glance, I have some questions:

marip8 commented 4 years ago

This package is a really useful addition to MoveIt, so I'm happy to contribute. In response to your questions:

  • Is there a specific reason you targeted kinetic? Just out of curiosity. #53

I happen to still be developing on a Kinetic machine, so it was mostly out of convenience. If the melodic-devel branch is the "official" branch, I can submit a PR against that instead.

  • You made quite some improvements that are unrelated to the railed plugin, could you maybe split those out into a separate pull request that we can merge first?

No problem. They're already separated into independent commits, so that shouldn't be difficult.

  • Could you add an example urdf to kuka_test_resources so I can easily add some tests. (It does not have to be a kuka robot, I should change the name...).

Will do

JeroenDM commented 4 years ago

I happen to still be developing on a Kinetic machine, so it was mostly out of convenience. If the melodic-devel branch is the "official" branch, I can submit a PR against that instead.

No problem, you can leave it here, I can port it to melodic when finished. You're just the first kinetic user I heard of, so I was curious :)

simonschmeisser commented 4 years ago

I wonder why your plugin is specific to opw? couldn't you just write a generic wrapper that uses any ik for the robot and sampling for the rail? See https://github.com/ros-planning/moveit/pull/612/files for an example

marip8 commented 4 years ago

@simonschmeisser interesting point; I hadn't thought about it that way. That makes a lot of sense, and I don't think there is anything specific from the OPW plugin that I am using (other than some easily reproducible utility functions). I'll look into that a little more and see what I can come up with. Thanks for the idea and reference

marip8 commented 4 years ago

It ended up being fairly straightforward to implement the sampling kinematics plugin suggested by @simonschmeisser, so I created a new repository for it here. Feel free to check it out or give feedback about the implementation. There is still some work to be done, but it's in a functional state for my current use-case. I'll close this PR since this ended up being better suited as a "stand-alone" feature.

simonschmeisser commented 4 years ago

That looks really nice indeed! I'll bookmark it for when the next customer comes around with a rail!