I am really glad to announce a new implementation of Costmap Filters which we have all been waiting for: Speed Filter.
Imagine, you are operating in a warehouse with different items laid out on the floor. In one corner you discover the boxes with crystal vases inside. You should become very careful and do everything twice as slow as you could to not spoil someone’s celebration. This is usually an awkward situation but not for you, if you are a robot with Speed Filter onboard.
In a previous post we became familiar with Keepout Zones - a filter implemented in Costmap Filters framework. Speed Filter – is another one. It automatically decreases the maximum allowed speed in speed restricting areas you marked on map. This speed restriction map (aka “filter mask”) – is a usual OccupancyGrid map. Information on it is being encoded as a color lightness. This information is being read and linearly converted into a speed limit value inside the Speed Filter plugin. Once the robot enters the speed limit area, the plugin sends a message to a Controller to change its maximum allowed speed in accordance to the pixel on the map where the robot places.
This is a spatial-dependent feature. Speed-restricting areas might not have a clear shape and even boundaries. You can draw any clear border or gradient shaped area and set any speed restriction value there you can presume!
There are two kinds of speed restriction may be:
- Speed limit expressed in a percent from maximum robot speed.
This is good for single robot systems because of easy set-up (just set a % and go).
- Speed limit expressed in absolute values (e.g. in m/s).
This is suitable for heterogeneous systems with different kinds of robots running simultaneously, each having its own maximum allowed speed.
← This type of restriction is waiting for your vote (details are in the next post below in this thread).
Here is a demo video showing how Speed Filter works in a small warehouse:
If you are ready to start using Speed Filters, here are some documentation references that will allow you to step it easily:
- Overall concept of Costmap Filters framework: https://navigation.ros.org/concepts/index.html#costmap-filters
- Technical details about Costmap Filters architecture: https://navigation.ros.org/migration/Foxy.html#costmap-filters
- … and configuration of Speed Filter: https://navigation.ros.org/configuration/packages/costmap-plugins/speed_filter.html
Still have questions? Please write to us in the Navigation2 Slack group. There’s a link to our Slack group in the Navigation2 readme.
Also, a Speed Filter detailed tutorial is coming soon!
Thanks to Steve @smac for his thorough review and wise guidance which finally allowed this feature to come out!
And happy speed-limiting,