ROS Parameters
This page contains all parameters exposed to ROS 2. For the provided
examples in the nvblox_example_bringup
package, parameters are set
using YAML configuration files under
nvblox_examples/nvblox_examples_bringup/config
.
The base parameters are set in nvblox_base.yaml
and there exist
multiple specialization files that overwrite parameters from the
base file depending on the configuration of the launched example/mode.
File tree:
config
├── nvblox
├── nvblox_base.yaml
└── specializations
├── nvblox_sim.yaml
├── nvblox_realsense.yaml
├── nvblox_multi_realsense.yaml
├── nvblox_segmentation.yaml
├── nvblox_detection.yaml
└── nvblox_dynamics.yaml
Loaded specializations for each example/mode:
Parameter file |
Example/mode |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Renamed Isaac ROS Nvblox parameters
The following parameters have been removed or renamed since ISAAC 3.0. If you are re-using any customized parameter files from a previous release, make sure to update the parameters listed below.
Removed parameters
Removed Parameter |
Note |
---|---|
|
Mesh markers not supported anymore. |
|
Value is now hard-coded. |
|
Human debug output is published on receiving a depth frame now. |
Renamed parameters
Old Parameter |
New Parameter |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
General Parameters
ROS Parameter |
Type |
Default |
Description |
---|---|---|---|
|
|
The path used to save the map after shutdown. |
|
|
|
|
Only back project and publish every n-th depth image. |
|
|
|
The desired rate for clearing the map from blocks far away from the robot. |
|
|
|
Connected components smaller than this threshold will be removed from the mask image. |
|
|
|
The CUDA stream type nvblox ROS node will create. Default option is a blocking asynchronous stream(1), we can also use CUDA default stream(0) or non blocking asynchronous stream(2) or per thread default stream(3) |
|
|
|
The desired rate for decaying the dynamic occupancy layer. |
|
|
|
The desired rate for decaying the TSDF layer. |
|
|
|
The distance inside the distance map for unknown value. |
|
|
|
The distance inside the distance map for unknown value. |
|
|
|
This value will be used for for unobserved voxels in the dense output grid. |
|
|
|
Whether to compute the ESDF in 2d or 3d. |
|
|
|
Frame to which the ESDF slice bounds visualization is centered on the |
|
|
|
Side length of the ESDF slice bounds visualization plane. |
|
|
|
The name of the TF frame in which the map is built. For the RealSense examples, this parameter is exposed as a launch argument. |
|
|
|
|
|
|
|
The desired integration frequency of color images. |
|
|
|
The desired integration frequency of depth images. |
|
|
|
The desired integration frequency of lidar scans. |
|
|
|
Bandwidth limit for streaming layer visualizations (over WiFi) in mega-bits per second. |
|
|
|
Voxels with a z coordinate above this value are not visualized. |
|
|
|
Voxels further from the robot than this value are not visualized. |
|
|
|
TSDF voxels with a weight lower than this value are not visualized. |
|
|
|
Apply a undo-gamma operation on the RGB values of the visualized layer. Usable if the rendering pipeline includes gamma correction, which is the case when rendering mesh markers in Foxglove. |
|
|
|
Height of the LIDAR scan, in number of beams. Default works for the VLP16. |
|
|
|
The maximum valid range of the lidar. |
|
|
|
The minimum valid range of the lidar. |
|
|
|
The vertical field of view of the LIDAR scan, in radians (assuming beams are centered around 0 elevation). Default is for the VLP16. |
|
|
|
Width of the LIDAR scan, in number of beams. Default works for the VLP16. |
|
|
|
The name of the TF frame around which we clear the map. |
|
|
|
Radius around the |
|
|
|
Type of mapper to use. See docs for description |
|
|
|
The angle above zero elevation of the highest beam (specified as a positive number in radians). Default is for the Hesai PandarXT32. |
|
|
|
The maximum depth in meters when visualizing the back-projected point cloud. |
|
|
|
How many items to store in the input queues (depth, color, lidar, services) before deleting oldest items. |
|
|
|
The angle below zero elevation of the lowest beam (specified as a positive number in radians). Default is for the Hesai PandarXT32. |
|
|
|
Number of cameras supported (number of subscribers created) |
|
|
|
Whether or not to output the pessimistic distance map. |
|
|
|
Only used if use_topic_transforms is set to true. Pose and transform messages will be interpreted as being in this pose frame, and the remaining transform to the sensor frame will be looked up on the TF tree. |
|
|
|
Whether to print delay stats to the console. |
|
|
|
Whether to print rate stats to the console. |
|
|
|
Specified how often to print timing and rate statistics to the terminal. |
|
|
|
Whether to print timing stats to the console. |
|
|
|
The desired rate for publishing debug visualization messages. |
|
|
|
Whether to output a distance slice of the ESDF to be used for path planning. |
|
|
|
The desired rate for publishing layer visualization messages. |
|
|
|
QoS policy {depth} for publisher {/parameter_events} Constraints: Read only: true |
|
|
|
QoS policy {durability} for publisher {/parameter_events} Constraints: Read only: true |
|
|
|
QoS policy {history} for publisher {/parameter_events} Constraints: Read only: true |
|
|
|
QoS policy {reliability} for publisher {/parameter_events} Constraints: Read only: true |
|
|
|
If set to true, small connected components will be removed from the segmentation mask. |
|
|
|
Specifies How often the main tick function of the node is ticked. |
|
|
|
The desired ESDF update frequency. |
|
|
|
The desired mesh update frequency. |
|
|
|
Whether to integrate color images to color the mesh. |
|
|
|
Whether to integrate depth images. |
|
|
|
Whether to integrate LiDAR scans. |
|
|
|
Whether to use non equal vertical FoV for the LiDAR (not centered around 0 elevation). Should be set to false for a VLP16 and to true for Hesai PandarXT32. The LiDAR model will use the |
|
|
|
Whether to integrate segmentation masks. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Voxel size (side of cube in meters) to use for the map. |
|
|
|
Frame to which the workspace height bounds visualization is centered on the |
|
|
|
Side length of the workspace height bounds visualization plane. |
Mapping Type Parameter
The nvblox node holds two individual mappers (contained in a multi-mapper object). Depth frames received by nvblox are passed to the multi-mapper and split into a static and dynamic part based on a mask image. While the static part is processed by the static_mapper, the dynamic part is handled by the dynamic_mapper.
Depending on the mapping_type
parameter these mappers update different layers:
static_tsdf
:static_mapper: mapping static obstacles using a TSDF layer
dynamic_mapper: disabled
static_occupancy
:static_mapper: mapping static obstacles using an occupancy layer
dynamic_mapper: disabled
dynamic
:static_mapper: mapping static obstacles using a TSDF layer and updating a freespace layer (needed for dynamic mapping)
dynamic_mapper: mapping dynamic obstacles in an occupancy layer
human_with_static_tsdf
:static_mapper: mapping static obstacles using a TSDF layer
dynamic_mapper: mapping people in an occupancy layer
human_with_static_occupancy
:static_mapper: mapping static obstacles using an occupancy layer
dynamic_mapper: mapping people in an occupancy layer
The mapping_type
must be specified as a string and defaults to static_tsdf
.
Note
The mapping types [static_tsdf
, static_occupancy
, dynamic
] are only
valid when running the nvblox_node
.
In contrast, the mapping types [human_with_static_tsdf
, human_with_static_occupancy
]
can only run with the nvblox_human_node
.
The nvblox_human_node
is adding additional topic subscriptions
for the mask image containing the people semantic segmentation.
Mapper Parameters
The static and dynamic mappers share the same parameter set.
By specifying the parent parameter name <mapper_name>
,
the parameters can be set for the corresponding mapper (i.e. static_mapper
or dynamic_mapper
).
ROS Parameter |
Type |
Default |
Description |
---|---|---|---|
|
|
|
Whether to check the occupancy of the neighboring voxels for the high confidence freespace update. |
|
|
|
Whether or not to deallocate fully decayed blocks. |
|
|
|
Number of times to run the invalid region dilation in the depth preprocessing pipeline (if do_depth_preprocessing is enabled). |
|
|
|
Whether or not to run the preprocessing pipeline on the input depth image. Currently, this preprocessing only consists of dilating invalid regions in the input depth image. |
|
|
|
Maximum distance to compute the ESDF up to, in meters. |
|
|
|
Maximum distance to consider a voxel within a surface for the ESDF calculation. |
|
|
|
Minimum weight of the TSDF to consider for inclusion in the ESDF. |
|
|
|
The output slice height for the distance slice and ESDF pointcloud. Does not need to be within min and max height below. In units of meters. |
|
|
|
The maximum height, in meters, to consider obstacles part of the 2D ESDF slice. |
|
|
|
The minimum height, in meters, to consider obstacles part of the 2D ESDF slice. |
|
|
|
Whether contributions from the last depth frame should be excluded when decaying |
|
|
|
The decay probability that is applied to the free region on decay. Must be in [0.5, 1.0]. |
|
|
|
The inverse sensor model occupancy probability for voxels observed as free space. |
|
|
|
Blocks above this height will not be streamed. |
|
|
|
Blocks outside this radius (centered on the robot) will not be streamed. |
|
|
|
The maximum distance, in meters, to integrate the depth values for LiDAR scans. |
|
|
|
TSDF distance below which we assume a voxel to be occupied (non freespace). |
|
|
|
Maximum duration of no observed occupancy to keep consecutive occupancy alive. |
|
|
|
Minimum weight of the TSDF to consider for inclusion in the mesh. |
|
|
|
Whether to weld identical vertices together in the mesh. |
|
|
|
Minimum duration of consecutive occupancy to turn a high confidence free voxel back to occupied. |
|
|
|
Minimum duration since last observed occupancy to consider voxel as free. |
|
|
|
The decay probability that is applied to the occupied region on decay. Must be in [0.0, 0.5]. |
|
|
|
Half the width of the region which is considered as occupied. |
|
|
|
The inverse sensor model occupancy probability for voxels observed as occupied. |
|
|
|
The maximum distance, in meters, to integrate the depth or color image values. |
|
|
|
Maximum weight for the TSDF and color integrations. Setting this number higher will lead to higher-quality reconstructions but worse performance in dynamic scenes. |
|
|
|
Decay factor that is applied to the TSDF weigh to voxels projecting into pixels with invalid depth. |
|
|
|
The truncation distance, in units of voxels, for the TSDF or occupancy map. |
|
|
|
The weighting mode, applied to TSDF and color integrations. Options: [0:constant, 1:constant drop-off, 2:inverse square, 3:inverse square drop-off, 4:inverse square TSDF distance penalty] |
|
|
|
The rate at which we subsample pixels to raycast. Note that we always raycast the extremes of the frame, no matter the subsample rate. |
|
|
|
Decay factor that is applied to the TSDF weight when the TSDF decay is called. |
|
|
|
The distance in voxels that we give to fully decayed voxels (if requested). |
|
|
|
The weight of a TSDF voxel below which we consider it fully decayed. |
|
|
|
If true we set fully decayed voxels to the free distance. |
|
|
|
The inverse sensor model occupancy probability for unobserved voxels. |
|
|
|
The x-component of the maximal corner of the workspace bounds. Only used if workspace_bounds_type:=bounding_box. |
|
|
|
The y-component of the maximal corner of the workspace bounds. Only used if workspace_bounds_type:=bounding_box. |
|
|
|
The maximal height of the workspace bounds. |
|
|
|
The x-component of the minimal corner of the workspace bounds. Only used if workspace_bounds_type:=bounding_box. |
|
|
|
The y-component of the minimal corner of the workspace bounds. Only used if workspace_bounds_type:=bounding_box. |
|
|
|
The minimal height of the workspace bounds. |
|
|
|
The type of bounds we limit the workspace with (unbounded, height bounds or bounding box). |
Note
Decay of the occupancy layer is needed to handle dynamic objects like people. Without the decay observed dynamic objects stay in the map even if not seen for a long time period. In that time the object might have moved and the map is therefore invalid. Using the decay we simulate the loss of knowledge about parts of the dynamic map currently not observed over time.