Skip to content

Commit 59dc227

Browse files
Merge pull request #124 from NVIDIA-ISAAC-ROS/release-3.1
Isaac ROS 3.1
2 parents 6c93542 + bbc0972 commit 59dc227

File tree

32 files changed

+899
-29
lines changed

32 files changed

+899
-29
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[submodule "nvblox"]
1+
[submodule "nvblox_ros/nvblox_core"]
22
path = nvblox_ros/nvblox_core
33
url = https://github.com/nvidia-isaac/nvblox.git
44
branch = public

.lfsconfig

Lines changed: 0 additions & 2 deletions
This file was deleted.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,4 @@ Please visit the [Isaac ROS Documentation](https://nvidia-isaac-ros.github.io/re
153153

154154
## Latest
155155

156-
Update 2024-05-30: Multi-camera support, NITROS integration and performance improvements.
156+
Update 2024-09-26: Update for ZED compatibility

isaac_ros_nvblox/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
2222
<package format="3">
2323
<name>isaac_ros_nvblox</name>
24-
<version>3.0.1</version>
24+
<version>3.1.0</version>
2525
<description>Nvblox ROS 2 metapackage</description>
2626

2727
<maintainer email="[email protected]">Isaac ROS Maintainers</maintainer>

nvblox_examples/nvblox_examples_bringup/config/nvblox/nvblox_base.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
use_lidar: true
3939
lidar_width: 1800
4040
lidar_height: 31
41+
lidar_min_valid_range_m: 0.1
42+
lidar_max_valid_range_m: 50.0
4143
use_non_equal_vertical_fov_lidar_params: false
4244
# Input queues
4345
maximum_sensor_message_queue_length: 10
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**:
2+
ros__parameters:
3+
# Lidar settings
4+
use_lidar: false
5+
# QoS settings
6+
input_qos: "SENSOR_DATA"
7+
# Map clearing settings
8+
map_clearing_frame_id: "zed_camera_link"
9+
# Rviz visualization
10+
slice_visualization_attachment_frame_id: "zed_camera_link"
11+
12+
static_mapper:
13+
esdf_slice_height: 0.0
14+
esdf_slice_min_height: -0.1
15+
esdf_slice_max_height: 0.3
16+
17+
dynamic_mapper:
18+
esdf_slice_height: 0.0
19+
esdf_slice_min_height: -0.1
20+
esdf_slice_max_height: 0.3
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# NOTE(remos): This file was copied from stereolabs/zed-ros2-wrapper/zed_wrapper/config/zed2.yaml
2+
# and modified according to our needs.
3+
4+
# config/zed2_yaml
5+
# Parameters for Stereolabs ZED2 camera
6+
---
7+
/**:
8+
ros__parameters:
9+
general:
10+
camera_model: "zed2"
11+
camera_name: "zed2" # usually overwritten by launch file
12+
grab_resolution: 'HD720' # The native camera grab resolution. 'HD2K', 'HD1080', 'HD720', 'VGA', 'AUTO'
13+
grab_frame_rate: 60 # ZED SDK internal grabbing rate
14+
15+
depth:
16+
min_depth: 0.5 # Min: 0.2, Max: 3.0
17+
max_depth: 5.0 # Max: 40.0
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
# NOTE(remos): This file was copied from stereolabs/zed-ros2-wrapper/zed_wrapper/config/common.yaml
2+
# and modified according to our needs.
3+
4+
# config/common_yaml
5+
# Common parameters to Stereolabs ZED and ZED mini cameras
6+
#
7+
# Note: the parameter svo_file is passed as exe argumet
8+
---
9+
/**:
10+
ros__parameters:
11+
12+
general:
13+
svo_file: "live" # usually overwritten by launch file
14+
svo_loop: false # Enable loop mode when using an SVO as input source
15+
svo_realtime: true # if true the SVO will be played trying to respect the original framerate eventually skipping frames, otherwise every frame will be processed respecting the `pub_frame_rate` setting
16+
camera_timeout_sec: 5
17+
camera_max_reconnect: 5
18+
camera_flip: false
19+
zed_id: 0 # IMPORTANT: to be used in simulation to distinguish individual cameras im multi-camera configurations - usually overwritten by launch file
20+
serial_number: 0 # usually overwritten by launch file
21+
pub_resolution: 'CUSTOM' # The resolution used for output. 'NATIVE' to use the same `general.grab_resolution` - `CUSTOM` to apply the `general.pub_downscale_factor` downscale factory to reduce bandwidth in transmission
22+
pub_downscale_factor: 2.0 # rescale factor used to rescale image before publishing when 'pub_resolution' is 'CUSTOM'
23+
pub_frame_rate: 30.0 # frequency of publishing of visual images and depth images
24+
gpu_id: -1
25+
region_of_interest: '[]' # A polygon defining the ROI where the ZED SDK perform the processing ignoring the rest. Coordinates must be normalized to '1.0' to be resolution independent.
26+
#region_of_interest: '[[0.25,0.33],[0.75,0.33],[0.75,0.5],[0.5,0.75],[0.25,0.5]]' # A polygon defining the ROI where the ZED SDK perform the processing ignoring the rest. Coordinates must be normalized to '1.0' to be resolution independent.
27+
#region_of_interest: '[[0.25,0.25],[0.75,0.25],[0.75,0.75],[0.25,0.75]]' # A polygon defining the ROI where the ZED SDK perform the processing ignoring the rest. Coordinates must be normalized to '1.0' to be resolution independent.
28+
#region_of_interest: '[[0.5,0.25],[0.75,0.5],[0.5,0.75],[0.25,0.5]]' # A polygon defining the ROI where the ZED SDK perform the processing ignoring the rest. Coordinates must be normalized to '1.0' to be resolution independent.
29+
sdk_verbose: 1
30+
31+
video:
32+
brightness: 4 # [DYNAMIC] Not available for ZED X/ZED X Mini
33+
contrast: 4 # [DYNAMIC] Not available for ZED X/ZED X Mini
34+
hue: 0 # [DYNAMIC] Not available for ZED X/ZED X Mini
35+
saturation: 4 # [DYNAMIC]
36+
sharpness: 4 # [DYNAMIC]
37+
gamma: 8 # [DYNAMIC]
38+
auto_exposure_gain: true # [DYNAMIC]
39+
exposure: 80 # [DYNAMIC]
40+
gain: 80 # [DYNAMIC]
41+
auto_whitebalance: true # [DYNAMIC]
42+
whitebalance_temperature: 42 # [DYNAMIC] - [28,65] works only if `auto_whitebalance` is false
43+
qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
44+
qos_depth: 1 # Queue size if using KEEP_LAST
45+
qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT -
46+
qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE
47+
48+
depth:
49+
depth_mode: 'NEURAL' # Matches the ZED SDK setting: 'NONE', 'PERFORMANCE', 'QUALITY', 'ULTRA', 'NEURAL' - Note: if 'NONE' all the modules that requires depth extraction are disabled by default (Pos. Tracking, Obj. Detection, Mapping, ...)
50+
depth_stabilization: 1 # Forces positional tracking to start if major than 0 - Range: [0,100]
51+
openni_depth_mode: false # 'false': 32bit float [meters], 'true': 16bit unsigned int [millimeters]
52+
point_cloud_freq: 10.0 # [DYNAMIC] - frequency of the pointcloud publishing (equal or less to `grab_frame_rate` value)
53+
depth_confidence: 10 # [DYNAMIC]
54+
depth_texture_conf: 100 # [DYNAMIC]
55+
remove_saturated_areas: true # [DYNAMIC]
56+
qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
57+
qos_depth: 1 # Queue size if using KEEP_LAST
58+
qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT -
59+
qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE
60+
61+
pos_tracking:
62+
pos_tracking_enabled: true # True to enable positional tracking from start
63+
pos_tracking_mode: 'STANDARD' # Matches the ZED SDK setting: 'QUALITY', 'STANDARD'
64+
imu_fusion: true # enable/disable IMU fusion. When set to false, only the optical odometry will be used.
65+
publish_tf: true # [usually overwritten by launch file] publish `odom -> base_link` TF
66+
publish_map_tf: true # [usually overwritten by launch file] publish `map -> odom` TF
67+
base_frame: "base_link" # usually overwritten by launch file
68+
map_frame: "map"
69+
odometry_frame: "odom"
70+
area_memory_db_path: ""
71+
area_memory: true # Enable to detect loop closure
72+
depth_min_range: 0.0 # Set this value for removing fixed zones of the robot in the FoV of the camerafrom the visual odometry evaluation
73+
set_as_static: false # If 'true' the camera will be static and not move in the environment
74+
set_gravity_as_origin: true # If 'true' align the positional tracking world to imu gravity measurement. Keep the yaw from the user initial pose.
75+
floor_alignment: false # Enable to automatically calculate camera/floor offset
76+
initial_base_pose: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] # Initial position of the `base_frame` in the map -> [X, Y, Z, R, P, Y]
77+
init_odom_with_first_valid_pose: true # Enable to initialize the odometry with the first valid pose
78+
path_pub_rate: 2.0 # [DYNAMIC] - Camera trajectory publishing frequency
79+
path_max_count: -1 # use '-1' for unlimited path size
80+
two_d_mode: false # Force navigation on a plane. If true the Z value will be fixed to "fixed_z_value", roll and pitch to zero
81+
fixed_z_value: 0.00 # Value to be used for Z coordinate if `two_d_mode` is true
82+
transform_time_offset: 0.0 # The value added to the timestamp of `map->odom` and `odom->base_link`` transform being generated
83+
qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
84+
qos_depth: 1 # Queue size if using KEEP_LAST
85+
qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT
86+
qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE
87+
88+
gnss_fusion:
89+
gnss_fusion_enabled: false # fuse 'sensor_msg/NavSatFix' message information into pose data
90+
gnss_fix_topic: "/gps/fix" # Name of the GNSS topic of type NavSatFix to subscribe [Default: "/gps/fix"]
91+
gnss_init_distance: 5.0 # The minimum distance traveled by the robot required to initilize the GNSS fusion [SDK <= v4.0.5]
92+
gnss_zero_altitude: false # Set to `true` to ignore GNSS altitude information
93+
gnss_frame: "gnss_link" # [usually overwritten by launch file] The TF frame of the GNSS sensor
94+
publish_utm_tf: true # Publish `utm` -> `map` TF
95+
broadcast_utm_transform_as_parent_frame: false # if 'true' publish `utm` -> `map` TF, otherwise `map` -> `utm`
96+
enable_reinitialization: true # determines whether reinitialization should be performed between GNSS and VIO fusion when a significant disparity is detected between GNSS data and the current fusion data. It becomes particularly crucial during prolonged GNSS signal loss scenarios.
97+
enable_rolling_calibration: true # If this parameter is set to true, the fusion algorithm will used a rough VIO / GNSS calibration at first and then refine it. This allow you to quickly get a fused position.
98+
enable_translation_uncertainty_target: false # When this parameter is enabled (set to true), the calibration process between GNSS and VIO accounts for the uncertainty in the determined translation, thereby facilitating the calibration termination. The maximum allowable uncertainty is controlled by the 'target_translation_uncertainty' parameter.
99+
gnss_vio_reinit_threshold: 5 # determines the threshold for GNSS/VIO reinitialization. If the fused position deviates beyond out of the region defined by the product of the GNSS covariance and the gnss_vio_reinit_threshold, a reinitialization will be triggered.
100+
target_translation_uncertainty: 10e-2 # defines the target translation uncertainty at which the calibration process between GNSS and VIO concludes. By default, the threshold is set at 10 centimeters.
101+
target_yaw_uncertainty: 0.1 # defines the target yaw uncertainty at which the calibration process between GNSS and VIO concludes. The unit of this parameter is in radian. By default, the threshold is set at 0.1 radians.
102+
103+
mapping:
104+
mapping_enabled: false # True to enable mapping and fused point cloud pubblication
105+
resolution: 0.05 # maps resolution in meters [min: 0.01f - max: 0.2f]
106+
max_mapping_range: 5.0 # maximum depth range while mapping in meters (-1 for automatic calculation) [2.0, 20.0]
107+
fused_pointcloud_freq: 1.0 # frequency of the publishing of the fused colored point cloud
108+
clicked_point_topic: "/clicked_point" # Topic published by Rviz when a point of the cloud is clicked. Used for plane detection
109+
pd_max_distance_threshold: 0.15 # Plane detection: controls the spread of plane by checking the position difference.
110+
pd_normal_similarity_threshold: 15.0 # Plane detection: controls the spread of plane by checking the angle difference.
111+
qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
112+
qos_depth: 1 # Queue size if using KEEP_LAST
113+
qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT -
114+
qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE
115+
116+
sensors:
117+
publish_imu_tf: true # [usually overwritten by launch file] enable/disable the IMU TF broadcasting
118+
sensors_image_sync: false # Synchronize Sensors messages with latest published video/depth message
119+
sensors_pub_rate: 200. # frequency of publishing of sensors data. MAX: 400. - MIN: grab rate
120+
qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
121+
qos_depth: 1 # Queue size if using KEEP_LAST
122+
qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT -
123+
qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE
124+
125+
object_detection:
126+
od_enabled: false # True to enable Object Detection
127+
model: 'MULTI_CLASS_BOX_MEDIUM' # 'MULTI_CLASS_BOX_FAST', 'MULTI_CLASS_BOX_MEDIUM', 'MULTI_CLASS_BOX_ACCURATE', 'PERSON_HEAD_BOX_FAST', 'PERSON_HEAD_BOX_ACCURATE'
128+
allow_reduced_precision_inference: true # Allow inference to run at a lower precision to improve runtime and memory usage
129+
max_range: 20.0 # [m] Defines a upper depth range for detections
130+
confidence_threshold: 50.0 # [DYNAMIC] - Minimum value of the detection confidence of an object [0,99]
131+
prediction_timeout: 0.5 # During this time [sec], the object will have OK state even if it is not detected. Set this parameter to 0 to disable SDK predictions
132+
filtering_mode: 1 # '0': NONE - '1': NMS3D - '2': NMS3D_PER_CLASS
133+
mc_people: true # [DYNAMIC] - Enable/disable the detection of persons for 'MULTI_CLASS_X' models
134+
mc_vehicle: true # [DYNAMIC] - Enable/disable the detection of vehicles for 'MULTI_CLASS_X' models
135+
mc_bag: true # [DYNAMIC] - Enable/disable the detection of bags for 'MULTI_CLASS_X' models
136+
mc_animal: true # [DYNAMIC] - Enable/disable the detection of animals for 'MULTI_CLASS_X' models
137+
mc_electronics: true # [DYNAMIC] - Enable/disable the detection of electronic devices for 'MULTI_CLASS_X' models
138+
mc_fruit_vegetable: true # [DYNAMIC] - Enable/disable the detection of fruits and vegetables for 'MULTI_CLASS_X' models
139+
mc_sport: true # [DYNAMIC] - Enable/disable the detection of sport-related objects for 'MULTI_CLASS_X' models
140+
qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
141+
qos_depth: 1 # Queue size if using KEEP_LAST
142+
qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT
143+
qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE
144+
145+
body_tracking:
146+
bt_enabled: false # True to enable Body Tracking
147+
model: 'HUMAN_BODY_MEDIUM' # 'HUMAN_BODY_FAST', 'HUMAN_BODY_MEDIUM', 'HUMAN_BODY_ACCURATE'
148+
body_format: 'BODY_38' # 'BODY_18','BODY_34','BODY_38','BODY_70'
149+
allow_reduced_precision_inference: false # Allow inference to run at a lower precision to improve runtime and memory usage
150+
max_range: 20.0 # [m] Defines a upper depth range for detections
151+
body_kp_selection: 'FULL' # 'FULL', 'UPPER_BODY'
152+
enable_body_fitting: false # Defines if the body fitting will be applied
153+
enable_tracking: true # Defines if the object detection will track objects across images flow
154+
prediction_timeout_s: 0.5 # During this time [sec], the skeleton will have OK state even if it is not detected. Set this parameter to 0 to disable SDK predictions
155+
confidence_threshold: 50.0 # [DYNAMIC] - Minimum value of the detection confidence of skeleton key points [0,99]
156+
minimum_keypoints_threshold: 5 # [DYNAMIC] - Minimum number of skeleton key points to be detected for a valid skeleton
157+
qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
158+
qos_depth: 1 # Queue size if using KEEP_LAST
159+
qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT
160+
qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE
161+
162+
use_sim_time: false # EXPERIMENTAL (only for development) - Set to true to enable SIMULATION mode #
163+
sim_address: '192.168.1.90' # EXPERIMENTAL (only for development) - The local address of the machine running the simulator
164+
165+
advanced: # WARNING: do not modify unless you are confident of what you are doing
166+
# Reference documentation: https://man7.org/linux/man-pages/man7/sched.7.html
167+
thread_sched_policy: 'SCHED_BATCH' # 'SCHED_OTHER', 'SCHED_BATCH', 'SCHED_FIFO', 'SCHED_RR' - NOTE: 'SCHED_FIFO' and 'SCHED_RR' require 'sudo'
168+
thread_grab_priority: 50 # ONLY with 'SCHED_FIFO' and 'SCHED_RR' - [1 (LOW) z-> 99 (HIGH)] - NOTE: 'sudo' required
169+
thread_sensor_priority: 70 # ONLY with 'SCHED_FIFO' and 'SCHED_RR' - [1 (LOW) z-> 99 (HIGH)] - NOTE: 'sudo' required
170+
thread_pointcloud_priority: 60 # ONLY with 'SCHED_FIFO' and 'SCHED_RR' - [1 (LOW) z-> 99 (HIGH)] - NOTE: 'sudo' required
171+
172+
173+
debug:
174+
debug_common: false
175+
debug_video_depth: false
176+
debug_camera_controls: false
177+
debug_point_cloud: false
178+
debug_positional_tracking: false
179+
debug_gnss: false
180+
debug_sensors: false
181+
debug_mapping : false
182+
debug_terrain_mapping : false
183+
debug_object_detection : false
184+
debug_body_tracking : false
185+
debug_advanced: true
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# NOTE(remos): This file was copied from stereolabs/zed-ros2-wrapper/zed_wrapper/config/zedx.yaml
2+
# and modified according to our needs.
3+
4+
# config/zedx.yaml
5+
# Parameters for Stereolabs ZED X camera
6+
---
7+
/**:
8+
ros__parameters:
9+
general:
10+
camera_model: 'zedx'
11+
camera_name: 'zedx' # usually overwritten by launch file
12+
grab_resolution: 'HD1200' # The native camera grab resolution. 'HD1200', 'HD1080', 'SVGA', 'AUTO'
13+
grab_frame_rate: 30 # ZED SDK internal grabbing rate (HD1200/HD1080: 60, 30, 15 - SVGA: 120, 60, 30, 15)
14+
15+
video:
16+
exposure_time: 16000 # Defines the real exposure time in microseconds. Recommended to control manual exposure (instead of `video.exposure` setting)
17+
auto_exposure_time_range_min: 28 # Defines the minimum range of exposure auto control in micro seconds
18+
auto_exposure_time_range_max: 30000 # Defines the maximum range of exposure auto control in micro seconds
19+
exposure_compensation: 50 # Defines the Exposure-target compensation made after auto exposure. Reduces the overall illumination target by factor of F-stops. Values range is [0 - 100]. Default value is 50, i.e. no compensation applied
20+
analog_gain: 1255 # Defines the real analog gain (sensor) in mDB. Range [1000-16000]. Recommended to control manual sensor gain (instead of `video.gain` setting)
21+
auto_analog_gain_range_min: 1000 # Defines the minimum range of sensor gain in automatic control
22+
auto_analog_gain_range_max: 16000 # Defines the maximum range of sensor gain in automatic control
23+
digital_gain: 1 # Defines the real digital gain (ISP) as a factor. Range [1-256]. Recommended to control manual ISP gain (instead of `video.gain` setting)
24+
auto_digital_gain_range_min: 1 # Defines the minimum range of digital ISP gain in automatic control
25+
auto_digital_gain_range_max: 256 # Defines the maximum range of digital ISP gain in automatic control
26+
denoising: 50 # Defines the level of denoising applied on both left and right images. Range [0-100]
27+
28+
depth:
29+
min_depth: 0.5 # Min: 0.3, Max: 3.0
30+
max_depth: 5.0 # Max: 20.0

0 commit comments

Comments
 (0)