Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,24 @@ Observation sources parameters
Description:
Type of polygon shape. Could be ``scan``, ``pointcloud``, ``range`` or ``polygon``.

:``<source name>``.transport_type:

============== =============================
Type Default
-------------- -----------------------------
string "raw"
============== =============================

Description:
For ``pointcloud`` data, specify the transport plugin to use:

* raw: No compression. Default; highest bandwidth usage.
* draco: Lossy compression via Google.
* zlib: Lossless compression via Zlib compression.
* zstd: Lossless compression via Zstd compression.

See the `known transports <https://github.com/ros-perception/point_cloud_transport_plugins>`_ for more details.

:``<source name>``.topic:

============== =============================
Expand Down Expand Up @@ -361,6 +379,7 @@ Here is an example of configuration YAML for the Collision Detector.
pointcloud:
type: "pointcloud"
topic: "/intel_realsense_r200_depth/points"
transport_type: "raw" # raw or/ with compression (zlib, draco, zstd)
min_height: 0.1
max_height: 0.5
enabled: True
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,24 @@ Observation sources parameters
Description:
Type of polygon shape. Could be ``scan``, ``pointcloud``, ``range`` or ``polygon``.

:``<source name>``.transport_type:

============== =============================
Type Default
-------------- -----------------------------
string "raw"
============== =============================

Description:
For ``pointcloud`` data, specify the transport plugin to use:

* raw: No compression. Default; highest bandwidth usage.
* draco: Lossy compression via Google.
* zlib: Lossless compression via Zlib compression.
* zstd: Lossless compression via Zstd compression.

See the `known transports <https://github.com/ros-perception/point_cloud_transport_plugins>`_ for more details.

:``<source name>``.topic:

============== =============================
Expand Down Expand Up @@ -726,6 +744,7 @@ Here is an example of configuration YAML for the Collision Monitor.
pointcloud:
type: "pointcloud"
topic: "/intel_realsense_r200_depth/points"
transport_type: "raw" # raw or/ with compression (zlib, draco, zstd)
min_height: 0.1
max_height: 0.5
min_range: 0.2
Expand Down
1 change: 1 addition & 0 deletions configuration/packages/configuring-costmaps.rst
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,7 @@ Example
clearing: True
marking: True
data_type: "PointCloud2"
transport_type: "raw" # raw or/ with compression (zlib, draco, zstd)
static_layer:
plugin: "nav2_costmap_2d::StaticLayer"
map_subscribe_transient_local: True
Expand Down
18 changes: 18 additions & 0 deletions configuration/packages/costmap-plugins/obstacle.rst
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,24 @@ This costmap layer implements a plugin that uses 2D raycasting for 2D lidars, de
Description
Data type of input, LaserScan or PointCloud2.

:``<obstacle layer>``. ``<data source>``.transport_type:

====== ===========
Type Default
------ -----------
string "raw"
====== ===========

Description
For ``PointCloud2`` data, specify the transport plugin to use:

* raw: No compression. Default; highest bandwidth usage.
* draco: Lossy compression via Google.
* zlib: Lossless compression via Zlib compression.
* zstd: Lossless compression via Zstd compression.

See the `known transports <https://github.com/ros-perception/point_cloud_transport_plugins>`_ for more details.

:``<obstacle layer>``. ``<data source>``.min_obstacle_height:

====== =======
Expand Down
18 changes: 18 additions & 0 deletions configuration/packages/costmap-plugins/voxel.rst
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,24 @@ This costmap layer implements a plugin that uses 3D raycasting for depth, 3D, or
Description
Data type of input, LaserScan or PointCloud2.

:``<voxel layer>``. ``<data source>``.transport_type:

====== ===========
Type Default
------ -----------
string "raw"
====== ===========

Description
For ``PointCloud2`` data, specify the transport plugin to use:

* raw: No compression. Default; highest bandwidth usage.
* draco: Lossy compression via Google.
* zlib: Lossless compression via Zlib compression.
* zstd: Lossless compression via Zstd compression.

See the `known transports <https://github.com/ros-perception/point_cloud_transport_plugins>`_ for more details.

:``<voxel layer>``. ``<data source>``.min_obstacle_height:

====== =======
Expand Down
57 changes: 57 additions & 0 deletions migration/Kilted.rst
Original file line number Diff line number Diff line change
Expand Up @@ -232,3 +232,60 @@ Added PersistentSequence and PauseResumeController Control Nodes
In `PR #5247 <https://github.com/ros-navigation/navigation2/pull/5247>`_ two new Nav2 specific behavior tree control nodes have been added.

The `PauseResumeController <../configuration/packages/bt-plugins/controls/PauseResumeController.html>`_ adds services to pause and resume execution of the tree. Related to this, the `PersistentSequence <../configuration/packages/bt-plugins/controls/PersistentSequence.html>`_ control node allows the child index to be exposed to the behavior tree through a bidirectional port. This allows the sequence to be continued on resume where it was paused.

Option to use point_cloud_transport
-----------------------------------

In `PR #5264 <https://github.com/ros-navigation/navigation2/pull/5264>`_, option to use `point_cloud_transport <https://github.com/ros-perception/point_cloud_transport>`_ has been added.
This enables transporting PointClouds using compression libraries (such as Draco, Zstd, Zlib, etc.) to reduce network traffic and work around DDS limitations in low-bandwidth environments.

Default value:

- ``"raw"`` - Uses ``sensor_msgs/msg/PointCloud2`` with no compression.

Configuration guide
^^^^^^^^^^^^^^^^^^^

If your sensor already publishes compressed streams (e.g., `Seterolabs ZED X Cameras <https://www.stereolabs.com/docs/ros2/dds_and_network_tuning#use-compressed-topics>`_), you can enable this option in the costmap layers that ingest pointcloud sensor streams (i.e. obstacle, voxel) and in the collision monitor as well.

Example costmap layer configuration:

.. code-block:: yaml

<costmap_layer>:
observation_sources: pointcloud
pointcloud:
data_type: "PointCloud2"
topic: /intel_realsense_r200_depth/points # Change this to your topic
transport_type: "raw" # Change this to your compressed format (zlib, draco, zstd)

Similarly for the collision monitor config:

.. code-block:: yaml

collision_monitor:
ros__parameters:
observation_sources: ["pointcloud"]
pointcloud:
type: "pointcloud"
topic: /intel_realsense_r200_depth/points # Change this to your topic
transport_type: "raw" # Change this to your compressed format (zlib, draco, zstd)

See `transport_type` in :ref:`configuring_collision_monitor_node` for more information.

Performance Metrics
^^^^^^^^^^^^^^^^^^^

Below are measured bandwidth values for different transport types with default parameters:

+------------------+----------------+
| Transport Type | Bandwidth (KB) |
+==================+================+
| raw | 593.63 |
+------------------+----------------+
| draco | 443.28 |
+------------------+----------------+
| zstd | 64.33 |
+------------------+----------------+
| zlib | 121.95 |
+------------------+----------------+