[Nav2] Keep Out Zone Support Now Available (And meeting Oct 15 cancelled)!

Hi all, friendly neighborhood navigator here.

I’m super happy to announce a new feature that everyone and their mother has wanted for a long time now: Keepout zones. Thanks to my colleague’s (@amerzlyakov) diligent work (and letting me pester him endlessly in design and code reviews), its been added to the navigation stack as part of an architectural update to costmap_2d.

We now support a new option of plugins called “costmap filters”. A costmap filter is a mask-based costmap layer that will take in some pixel mask representing some information and change your robot’s behavior based on it. For example:

  • we have a mask of the map with a zone blacked out for keep-out and loaded as a costmap filter to force your robot not to plan or enter a specific area. If you invert the color scheme, they act as non-directional marked lanes the robot should stay within.
  • we have a mask of a map annotated with maximum speeds and loaded into a costmap filter. This will run every costmap update, read the current cell, and it will publish a topic to limit your robot’s maximum speed in different areas of a space.

The first layer implemented in this framework is the keepout layer, allowing you to create custom masks of any side, origin, scale, or content to either weight zones your robot should optionally not enter, absolutely not enter, or mark lanes the robot should stay within. The speed restricted plugin is being developed as we speak.

Any other mask-based plugins we should consider? Let us know in the comments below!

Moreover, if you haven’t gotten the theme yet, its also very well documented, and 90%+ test coverage, with a tutorial for how to set up your first costmap filter and keep out layer from scratch and get keep-out-zoning in less than an hour. Check out the new tutorial and video explaining how to set it up and showing demonstrations using this new feature.

As a general announcement, the working group meeting Oct 15 will be cancelled, the next meeting will be Oct 29.

Edit: As a general reminder, if you’re interested in mobile robots or navigation, please reach out to us! If you’d like to learn about navigation systems, working on a product, or implementing research, please let us know and we can help you get involved and meet your goals! The navigation working group is a really diverse group of researchers, students, engineers, and executives that are working on our own separate applications but offer community support and working on solutions for everyone in open source. There’s a link to our Slack group in the Navigation2 readme.

Happy keeping-out,

S

13 Likes

That’s pretty cool. I’m currently busy having my old Neato robot interfaced with ROS2, now I can make it not fall of ledges etc :slight_smile: .

The opposite if this would also be handy: specifying a goal region(s) as indicated by a mask. How to specify the goal orientation then is not so obvious though.

Specifying eg. a room to go to means just coloring in all the corresponding cells. If the room has multiple entrances, just pick the closest cell. Much more flexible than a goal tolerance.

And now there’s a video showing how to set everything up!

I am sorry for a naive question, but I have just joined ROS discourse. How would one be part of the nav group as mentioned by @smac in this post?

You can use this link: https://join.slack.com/t/navigation2/shared_invite/zt-hu52lnnq-cKYjuhTY~sEMbZXL8p9tOw