PlanningScene::isPoseColliding#847
Conversation
0a9ab78 to
bc986a0
Compare
|
CI failed |
|
@v4hn I know. And I explicitly asked for feedback on this PR before I tackle all those issues due to the API change. |
henningkayser
left a comment
There was a problem hiding this comment.
What is the reason to move enableGroup() to CollisionRequest/DistanceRequest?
Since the robot model is known inside collision_world_fcl I also don't know why anything else but the group or link names should be passed by the corresponding requests. Wouldn't it be better to allow setting both? All combinations of group_name and active_components_only could be easily specified.
moveit_core/collision_detection/include/moveit/collision_detection/collision_common.h
Show resolved
Hide resolved
|
@henningkayser, thanks for looking into this PR!
I don't get your question. Currently, it's not possible to specify an arbitrary set of links. This only becomes possible when active_components_only becomes publicly accessible. |
I see, that makes sense!
My thought was that the requests could have public |
|
@henningkayser I still don't get your point. My proposal was to augment the public request with the list of robot links to be considered for collision. Up to now, you can only provide the group name and from that, the link list is generated in private code. So I guess, we agree that it would be useful to specify links directly and to have a convenience function ( Do you suggest to use link names instead of link pointers in the public interface to avoid passing invalid link pointers? |
Yes exactly this. On top of that we could keep the |
|
Using link names vs. link pointers is much more costly: To get the the actual link pointers, one needs to lookup the links in a map. Keeping the existing interface, i.e. the group_name, and adding the list of link names creates an ambiguity: If both of them are filled, which one should be considered? |
|
Fair enough. One could filter for both parameters, i.e. if |
|
|
||
| namespace collision_detection | ||
| { | ||
| void CollisionRequest::enableGroup(const std::string& group_name, const moveit::core::RobotModelConstPtr& model) |
There was a problem hiding this comment.
if CollisionRequest is going to have actual functionality in functions it should be a class (Google style guidelines)
I like the simplicity of doing everything with just JMGs. An alternative idea would be to allow JMGs to be constructed at realtime. I ran into this limitation recently - you have to create a string-based SRDF and load it at startup currently. Just a thought. |
That would be great. However, I don't want to name the group.
This is not an option. There should be a programmatic API. |
|
I procrastinated by reading this. I'm not familiar enough with the code to have an opinion on a624ef5, just some comments as a first time reader:
|
|
I just reviewed all the comments - it seems to me we were so close to getting this merged in, but then it got dropped. Can you resolve the conflicts and we finish this? |
DLu
left a comment
There was a problem hiding this comment.
This PR currently has conflicts. Do we want to keep it open, or resolve the changes?
|
Yes, I should address the open issues so that we can finally merge this. I will add a corresponding TODO to my list. |
This adds a convenience method
isPoseCollidingthat warps an (end-effector) link to a given pose and subsequently checks for collisions of all warped links with the rest of the world + robot.This method is useful for grasp planning, to check whether an end-effector can be safely placed somewhere without the need to do IK beforehand.
As a preparation of this, a624ef5 lifts the definition of
active_componentsfrom to the public API. Usually this set is initialized from the planning group, but I want to use an arbitrary set.Finally, 0a9ab78 does some cleanup, removing all
planning_scene::namespace prefixes by putting everything into a namespace.Obviously a624ef5 requires many more changes throughout the code base. Hence, I want to get some feedback first, whether you think this generalization to allow for collision checking of arbitrary link groups (in contrast to only pre-defined JMGs) is desired or not.