Skip to content

Commit 829090c

Browse files
Merge branch 'feature/vector_object_server' of github.com:Sushant-Chavan/docs.nav2.org into feature/vector_object_server
2 parents 31aeff5 + 399a2c9 commit 829090c

2 files changed

Lines changed: 12 additions & 11 deletions

File tree

configuration/packages/configuring-vector-object-server.rst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Vector Object Server
66
The Vector Object Server implements a server that puts vector objects (such as polygons and circles) on OccupancyGrid raster map. The output raster map is being published by Vector Object server, and it could be used anywhere in the Nav2 stack or outside it.
77

88
The main application of Vector Object server is to combine output raster maps with existing costmaps of environment, targeting for robot navigation purposes (for example for dynamic obstacles simulation/highlighting, sensors noise removal, black-out areas on maps, synthetic testing purposes, and much more).
9+
Rather than rastering vector objects each iteration or at run-time, it is done one-time on startup, and served to costmap layers or other consumers improving performance.
910
A typical setup model for this is a Nav2 stack with Costmap Filters enabled, running in conjunction with a Vector Object server, which produces vectorised OccupancyGrid maps as input masks for the Costmap Filters:
1011

1112
.. image:: images/vector_object_server/vo_design.png
@@ -14,9 +15,9 @@ A typical setup model for this is a Nav2 stack with Costmap Filters enabled, run
1415

1516
These vector shapes could be added by using ROS input parameters as well as being handled by the following service calls: ``AddShapes.srv`` which adds new shapes or modifies existing ones, ``RemoveShapes.srv`` which removes any or all shapes from the map ``GetShapes.srv`` which returns all shapes on the map.
1617

17-
Each vector shape is being handled by its UUID, which is of ``unique_identifier_msgs/UUID`` type. Final developer could choose whether to specify it manually for a new shape, or have it generated automatically by the Vector Object server. The UUID can always be obtained by making a ``GetShapes.srv`` request and getting the response with all shapes' UUIDs and their properties.
18+
Each vector shape is being handled by its ``unique_identifier_msgs/UUID``. Developers can choose whether to specify it manually for a new shape, or have it generated automatically by the Vector Object server. The UUID can always be obtained by making a ``GetShapes.srv`` request and getting the response with all shapes' UUIDs and their properties.
1819

19-
During its work, Vector Object server places shapes on the map. Each vector object has its own value in the range from ``{-1}, [0..100]``, which matches the OccupancyGrid values. Vector objects can be overlapped with each other by using one of the global overlapping rules: sequential overlapping in the same order as vector objects arrived on the server, or taking the maximum / minimum value from all vector objects and the map background (if it is known).
20+
The Vector Object server places shapes on the map. Each vector object has its own value in the range from ``{-1}, [0..100]``, which matches the OccupancyGrid values. Vector objects can be overlapped with each other by using one of the global overlapping rules: (a) **sequential overlapping** in the same order as vector objects arrived on the server, or (b) taking the **maximum / minimum value** from all vector objects and the map background (if it is known).
2021

2122
This page describes all the configuration parameters of the Vector Object server. For more information on how to navigate with your own Vector Object server, please refer to the :ref:`navigation2_with_vector_objects` tutorial.
2223

@@ -58,12 +59,12 @@ Features
5859
Covered use-cases
5960
*****************
6061

61-
Using Vector Object server publishing an output map as input mask to :ref:`Costmap Filters <costmap_filters>` allows covering following (not restricted only to) use-cases:
62+
Using Vector Object server publishing an output map as input mask to :ref:`Costmap Filters <costmap_filters>` allows the following example use-cases using polygon, vector representations of areas rather than rastered masks:
6263

6364
- No-access zone
6465
- Speed-restriction areas
6566
- Virtual obstacles on costmap
66-
- Flying zone for UAV-s with outer boundary and inner virtual obstacles
67+
- Geofence / outer boundary and inner virtual obstacles
6768
- Robot footprint (or any other moving objects) replacement
6869
- Hiding some areas from costmap
6970
- Sensors noise removal

tutorials/docs/navigation2_with_vector_objects.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@ Overview
1717
========
1818

1919
This tutorial shows how to navigate with vector objects added to raster costmaps.
20-
They can be used for various purposes, such as hiding some areas or sticking-out robot parts, for adding virtual obstacles on maps, or like Costmap Filters do - adding keep-out or maximum speed restricted areas, but on a vector basis.
21-
In the current tutorial, the added vector objects will be treated as obstacles in costmaps.
22-
To do this, we need to prepare the Navigation2 stack with the Keepout Filter enabled, operating along with Vector Object server that publlishes an OccupancyGrid map with rasterized vector objects as an input mask for the Keepout Filter.
20+
They can be used for various purposes, such as hiding some areas or sticking-out robot parts, for adding virtual obstacles on maps, or like Costmap Filters do - adding keep-out or maximum speed restricted areas, but on a vector (polygon or shape) basis.
21+
In this tutorial, the added vector objects will be treated as obstacles in costmaps using a Keepout Filter.
22+
To do this, we need to prepare the Nav2 stack with the Keepout Filter enabled, along with the Vector Object server which publishes an ``OccupancyGrid`` map with the rasterized vector objects as an input mask for the Keepout Filter.
2323
Other use cases use similar principles and could be easily adapted after finishing this tutorial.
2424

2525
.. note::
2626

27-
Using with Keepout Filter is the choice for adding virtual obstacles or removing some areas from costmaps. However, the Vector Object server is not restricted to use with the Keepout Filter only. It could also be used with different Costmap Filters for other use cases. For example, to have a speed restriction area defined by a vector shape, one could choose Speed Filter; or for a polygon-defined room where the camera is to be turned off, Vector Object server could be used with Binary Filter.
27+
Using with Keepout Filter is a good choice for adding virtual obstacles or removing some areas from costmaps. However, the Vector Object server is not restricted to this application. It can be paired with different Costmap Filters for other use cases or even other applications entirely. For example, to represent polygonal speed restriction areas, a polygon-defined room where the camera is to be turned off using the Binary Filter, or using custom spatial / polygon applications.
2828

2929
Requirements
3030
============
3131

32-
It is assumed ROS2 and Nav2 dependent packages are installed or built locally.
33-
Please make sure that Nav2 project is also built locally as it was made in :ref:`build-instructions`.
32+
It is assumed ROS 2 and Nav2 dependent packages are installed or built locally.
33+
Please follow the instructions in :ref:`build-instructions`.
3434
For the best understanding how Keepout Filter works (which is the part of current configuration), it is also recommended to pass through the :ref:`navigation2_with_keepout_filter` tutorial.
3535

3636

@@ -40,7 +40,7 @@ Configuring Vector Object Server
4040
Vector Object server has its own ``vector_object_server.launch.py`` launch-file and preset parameters in the ``vector_object_server_params.yaml`` file for demonstration, though its trivial to add this to Nav2's main launch file if being used in practice.
4141

4242
In this tutorial, we are focusing on the application how to utilize the simple setup allowing to add virtual obstacles on costmaps.
43-
For demonstration of Vector Object server capabilities, let's specify two obstacle shapes: triangle polygon and circle filled with "occupied" value, in order to don't allow the robot to go through them. The YAML-part for polygon and circle will look as follows:
43+
For demonstration purposes, let's specify two obstacle shapes: triangle polygon and circle filled with "occupied" value, in order to prevent the robot to go through them. The YAML-part for polygon and circle will look as follows:
4444

4545
.. code-block:: yaml
4646

0 commit comments

Comments
 (0)