Support multiple planning pipelines with MoveGroup via MoveItCpp#2127
Conversation
1a9895f to
ee81b31
Compare
|
I'm excited about this improvement! |
ee81b31 to
c255beb
Compare
|
@v4hn ping for review |
What's the rationale for using Historically, paths, parameters, namespaces, TF frames and similar concepts which can be "contained" in namespaces have used a forward slash (ie: |
Currently, it's technically not forbidden to use |
|
I would probably suggest to standardise naming here such that
it certainly separates things, but the pipe symbol has historically has quite a different use. It's actually more of a connecting symbol than a separating one. |
That's the point, it's already used for separating namespaces (pipeline config). Adding the planner id (which can consist of group name + algorithm or anything arbitrary defined by the planner) as a simple subnamespace would be a break in the representation, therefore I wouldn't use
Hm, the planner_id somehow represents a connection between algorithm and planner instance. |
Do I understand you correctly that this would essentially only be a problem if the string which identifies the planner and algorithm contains a What about decoupling this? I'm only a single voice here, and it's not a deal breaker for me, but using a |
I agree that a separate
True, it might seem more natural, but in the end it's just a delimiter with a specific convention. |
Changing the message is not what I meant. My suggestion was to not think of Internally, it would be decomposed and after some post-processing or mapping, could be used to refer to specific namespaces on the ROS parameter server. But it would not be a 1-to-1 mapping, which decouples the occurrence of |
|
I agree with Gijs. Using any other symbol than Concerning namespaces, I'm still not sure why you would require more There is a lot of merit in having all planner configurations supported from |
|
fun fact: I sent the previous message by mail, but github's mailserver rejected it stating: |
moveit_ros/planning/moveit_cpp/include/moveit/moveit_cpp/moveit_cpp.h
Outdated
Show resolved
Hide resolved
Makes sense, we just don't have a unique 'planner' here. We would have to generate or specify this pipeline id which would also require another parameter which maps to an actual config namespace.
The 1-to-1 mapping is exactly what should be provided imo, and ids need to be coupled to the parameter namespace. What I'm reading here is that we have to encode an actual namespace (pipeline config) into an id (pipeline name) so that we can represent an id (planner id) as a namespace (pipeline name + planner id). To me this just looks extra complicated and not straight forward at all. The more I think about this, the more I'm actually voting for adding an explicit pipeline field to the message. Especially, since pipeline is a property for MoveGroup/MoveItCpp and planner_id is a property for the planning plugin. Mixing both up in a single string doesn't smell right.
Hm, not convinced, sorry. To me
Well, it's supported and I don't see a convincing argument to remove support for it, as it can be very useful for specifying instances running on or using different resources. How is it harder to parse than anything else and with what is this representation ambiguous? I totally understand that it doesn't look pretty - too much information for a simple algorithm identifier - but for now it is the most explicit and still generic representation that supports all planners available with MoveItCpp.
I'm fine with a convention like this for MoveGroup and generate a valid MoveItCpp PlanningPipelineOptions with it (that would even make one the pipeline_names parameter redundant). It would be still nicer to just be able to use MoveItCpp parameters or yaml files directly.
That doesn't sound like it's better usable at all.
Agree, that's what I'm trying to do here ;) |
f6f0ca5 to
7d1ccc3
Compare
|
Before this gets stale: I feel like I remember there was some discussion about the architecture choices in this PR, but these notes don't seem to mention it. Could you summarize if you remember and maybe update on what is left to be done? |
This is stale, to my dismay. :( Henning, could you continue this work anytime soon to get this ready for noetic? The results of the discussion in the meeting where to take the best of both worlds:
|
7d1ccc3 to
76e0832
Compare
Deprecate namespace moveit::planning_interface:: in favor of moveit_cpp::
c4ed280 to
f6b0a3f
Compare
* Format default pipeline / planner as bold Co-Authored-By: Robert Haschke <rhaschke@users.noreply.github.com>
fe0ffbf to
5f486dd
Compare
|
@henningkayser assuming you did not just break everything in unexpected ways: Thank you so much! 🎆 I know a few people who might be annoyed by the config changes and broken messages, but it was worth it! 🥇 |
|
I wanted to write this the instant you pushed the update but I am *super
excited* about this and can’t wait to add PTP/LIN/CIRC to the Move Group
Interface. Now it was merged so fast that i didn’t even manage to review.
I will test this asap and won’t mind mild breakage at all. Big cheers
…On Thu, Mar 18, 2021 at 6:32 Michael Görner ***@***.***> wrote:
@henningkayser <https://github.com/henningkayser> assuming you did not
just break everything in unexpected ways: Thank you so much! 🎆
It is great to finally have support for, e.g., Pilz and OMPL running in
one setup. We had that debate already long before Pilz wrote their planner,
but there was clearly not enough incentive to see this through. Also it
turned out to be a lot more work than I predicted.
I know a few people who might be annoyed by the config changes and broken
messages, but it was worth it! 🥇
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2127 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABCTLOOLQISOTSR2AE4PGRLTEENVXANCNFSM4NQW2KDQ>
.
|
|
We should prepare a new release asap to minimize issue reports like moveit/moveit_tutorials#613. @tylerjw, what's your plan about this? |
moveit/moveit#2127 merged support for multiple planner plugins. As a result, the planner specification should include a pipeline name from now on. Support the new schema and provide a fallback for older configurations. While doing so, I moved the create methods to the class they actually belong to and introduced a clean options parameter
moveit/moveit#2127 merged support for multiple planner plugins. As a result, the planner specification should include a pipeline name from now on. Support the new schema and provide a fallback for older configurations. While doing so, I moved the create methods to the class they actually belong to and introduced a clean options parameter
- Moved Task::createPlanner into PipelinePlanner::create - Handle mutiple planner pipeline configs as introduced in moveit/moveit#2127
These two lines were moved here (from the `move_group` node section below) in #2507 as part of the Melodic backport of the Pilz planner, but were not changed to `arg`s. `include` elements do not support `param` children. Change these to `arg`s to make `roslaunch` pass them on to `planning_pipeline.launch.xml` as intended. Note: this is not a problem on `master` (and consequently `noetic-devel`), as #2127 rearranged things again (to move capabilities management to the per-pipeline launch files) and fixed it.
These two lines were moved here (from the `move_group` node section below) in #2507 as part of the Melodic backport of the Pilz planner, but were not changed to `arg`s. `include` elements do not support `param` children. Change these to `arg`s to make `roslaunch` pass them on to `planning_pipeline.launch.xml` as intended. Note: this is not a problem on `master` (and consequently `noetic-devel`), as #2127 rearranged things again (to move capabilities management to the per-pipeline launch files) and fixed it.
This effort adds support for running multiple planning pipeline instances with MoveGroup. This allows you to run OMPL, STOMP, CHOMP, etc at the same time or even multiple instances of the same planner (under different configuration namespaces).
The planning pipeline is specified by a prefixing the planner id -The planning pipeline is specified by passing a separate id with the MotionPlanRequest. These changes are backwards compatible (if pipeline is not defined, the default is used) and easy to setup For testing, see moveit/moveit_resources#47 for an example. While the old behavior still works, I added deprecation warnings that planning pipelines should be loaded in separate namespaces under<pipeline>|<planner_id>where is the parameter namespace of the pipeline used for MoveItCpp.~planning_pipelines/and that a default planning pipeline should be specified via '~default_planning_pipeline' .TODOs:
The MotionPlanning panel now allows selecting non-default planning pipelines loaded by MoveItCpp:
Fixes #2078