-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Discussion: modularizing nav2_collision_monitor #3184
Comments
Hi, @tonynajjar. From the perspective of use-cases that it would be a nice functionality expansion, to have general information about shapes triggered that will be back to user; and action based on the decision of what we should do in any particular case in a separate logic. The set of additional use-cases for that would be activating LED-s, making warning/information signals, telling the operator what is going on, etc... So, this might be a nice-to-have solution, if it won't brake current functionality/performance of CM. From the perspective of the design and a quick glance: it could be a separate topic with publishing of triggered shapes; or shared library function call. Currently the CM is sticked the to work with @SteveMacenski, do you have more thoughts on this? |
I would like to not have them separated into separate nodes mostly because of the safety-ish nature of this node, but I totally see your point that the checks in a polygon are very useful for other folks as well. I think it would be sensible to move some of that logic into abstracted utilities in |
This would already be useful for many people but I think the most accessible and easily-integrable form would be a standalone node.
Then again this makes sense for this particular application. Perhaps we can have both: move the logic to abstracted utilities in nav2_utils and make a node using these utilities. CM would stay as is, just change it to use the utilities. |
Yeah, that would make sense. I'm not sure where though we'd have this standalone node |
Any thoughts where that could live? Potentially even outside of this repo? |
I guess it's not necessarily a great fit for Nav2, to my mind it's independant enough (I do still wonder why e.g. the BT ROS wrapper or amcl is still in Nav2) On the other hand, browsing around in the ROS ecosystem, I struggle to find another suitable place. Perhaps a new repo in https://github.com/ros-perception? |
I suppose we could add it as a node in Nav2 utils, its not like there haven't been other standalone nodes there historically. I just don't like to leave things around that aren't going to get immediate use. ros-perception could work -- that then asks questions like
|
Hi! In its current state, Collision Monitor has the
This API is enough to build the CM node logic and should be enough to build any other logic (e.g. LED as we've discussed above) you can create upon it. So, the separation slice, we are talking about, could be started from this point. So, developing this idea, the separation is likely to be utilized
Regarding movement of this package into separate project in ros perception, it will definitely work. But as @SteveMacenski mentioned, I have the same questions, like who will be responsible for this package and how it will be maintaned? So, in my opinion, we could plan to remain it inside Nav2 stack, as it is for today. But if we will think about separation logic (moreover, like AMCL and other packages separation), this might be a good subject for another separate issue. To summarize-up: I suggest to make the separation into two parts (agree with naming as @tonynajjar suggested):
The one question still remain open here for me: is what should we do with this all countless set of ROS-parameters belonging to Polygon and Source classes, and being set to the referenced node in there? |
Once there's an application that can make use of this work, we can break it out - but going to close for now since we don't have something along those lines currently planned and its equally as easy for a user to grab the library from |
We might have an application coming up soon, will get back to you |
Feature request
Feature description
Great work on the collision monitor, I've been looking into the implementation and was wondering whether we could detach/modularize it into two parts to use them separately.
The Sensing: detection of an obstacle inside a polygon using different sources. I could imagine this part being a standalone package to be useful for other applications, e.g. activating LEDs if an object comes within range
Basically a node that subscribes to the sources and output a custom msg that contains the information for which polygons are triggered.
The Action: subscribing to part 1 and limiting the velocity accordingly
Do you see part 1 as generally useful? We could ask that question on ROS Discourse.
The text was updated successfully, but these errors were encountered: