Skip to content

Commit 8b899bd

Browse files
authored
Generalizes ViewpointSampling to all kind of sensor data (#6)
# Description **Added** - Enhanced Sensor Data Sampling: Added sampling support to other sensor data (such as RayCasters) to nav_suite.collectors.SensorDataSampling for sampling sensor data from the environment - RayCaster Implementation: Added nav_suite.collectors.sensors.RayCasterSensor for RayCaster functionality **Changed** - Class Renaming: Renamed nav_suite.collectors.ViewpointSampling to nav_suite.collectors.SensorSampling and nav_suite.collectors.ViewpointSamplingCfg to nav_suite.collectors.SensorSamplingCfg - Modular Sensor Architecture: Sensor data extraction is now done in individual classes for each sensor type. The logic for camera data previously included in nav_suite.collectors.ViewpointSampling is now extracted in nav_suite.collectors.sensors.CameraSensor ## Type of change - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./formatter.sh` - [ ] I have made corresponding changes to the documentation (will come shortly) - [x] My changes generate no new warnings - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
1 parent d23d01d commit 8b899bd

19 files changed

+991
-559
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ data-sampling approaches, typical RL terms and a benchmarking environment. Curre
4444
This extension lets you load realistic terrains complete with rich semantic annotations, run fast traversability analysis, and render large batches of multi-modal data. It exposes three core modules:
4545

4646
- **Environment Importer** – load Matterport, Unreal/Carla, generated or USD terrains and expose all geometric / semantic domains [Details](exts/nav_suite/docs/README.md#environment-importer)
47-
- **Data Collectors** – sample trajectories, viewpoints and render multi-modal data from any imported world [Details](exts/nav_suite/docs/README.md#data-collectors)
47+
- **Data Collectors** – sample trajectories and render multi-modal sensor data from any imported world [Details](exts/nav_suite/docs/README.md#data-collectors)
4848
- **Terrain Analysis** – build traversability height-maps and graphs for path planning and curriculum tasks [Details](exts/nav_suite/docs/README.md#traversabilty-analysis)
4949

5050
## `nav_tasks` Extension
@@ -177,7 +177,7 @@ Here we provide a set of examples that demonstrate how to use the different part
177177
- [Import the Nvidia Warehouse Environment](scripts/nav_suite/terrains/warehouse_import.py)
178178
- ``collector``
179179
- [Sample Trajectories from Matterport](scripts/nav_suite/collector/matterport_trajectory_sampling.py)
180-
- [Sample Viewpoints and Render Images from Carla (Unreal Engine)](scripts/nav_suite/collector/carla_viewpoint_sampling.py)
180+
- [Sample Camera Viewpoints and Render Images from Carla (Unreal Engine)](scripts/nav_suite/collector/carla_sensor_data_sampling.py)
181181

182182
## Citing
183183

exts/nav_suite/config/extension.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22

33
# Note: Semantic Versioning is used: https://semver.org/
4-
version = "0.2.4"
4+
version = "0.2.5"
55

66
# Description
77
title = "IsaacLab Navigation Suite"

exts/nav_suite/docs/CHANGELOG.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,27 @@
11
Changelog
22
---------
33

4+
5+
0.2.5 (2025-08-13)
6+
~~~~~~~~~~~~~~~~~~
7+
8+
Added
9+
^^^^^
10+
11+
- Added sampling support to other sensor data (such as RayCasters) to :class:`nav_suite.collectors.SensorDataSampling`
12+
for sampling sensor data from the environment
13+
- RayCaster implementation in :class:`nav_suite.collectors.sensors.RayCasterSensor`
14+
15+
Changed
16+
^^^^^^^
17+
18+
- Renamed :class:`nav_suite.collectors.ViewpointSampling` to :class:`nav_suite.collectors.SensorSampling` and
19+
:class:`nav_suite.collectors.ViewpointSamplingCfg` to :class:`nav_suite.collectors.SensorSamplingCfg`
20+
- Sensor data extraction is now done in individual classes for each sensor type. The logic for camera data prev.
21+
included in :class:`nav_suite.collectors.ViewpointSampling` is now extracted in
22+
:class:`nav_suite.collectors.sensors.CameraSensor`.
23+
24+
425
0.2.4 (2025-08-08)
526
~~~~~~~~~~~~~~~~~~
627

exts/nav_suite/docs/README.md

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,35 +92,21 @@ This extensions allows to collect data from the previously loaded environments a
9292

9393
The trajectory sampling can be executed multiple times with different number of sampled trajectories as well as different minimum and maximum lengths.
9494

95-
- `Viewpoint sampling and image rendering`:
95+
- `Sensor data sampling and rendering`:
9696

97-
For the viewpoint sampling the same terrain analysis as for the trajectory sampling is executed. The graph and traversability parameters are defined in corresponding [config file](../nav_suite/terrain_analysis/terrain_analysis_cfg.py).
97+
For the sensor data sampling the same terrain analysis as for the trajectory sampling is executed. The graph and traversability parameters are defined in corresponding [config file](../nav_suite/terrain_analysis/terrain_analysis_cfg.py).
9898

9999
**Important** for the analysis also regarding the semantic domain, a semantic class to cost mapping has to be defined in the config. Per default, an example cost map for ``matterport`` environments is selected.
100100

101-
Each node of the prah is a possible viewpoint, with the orientation uniformly sampled between variable bounds. The exact parameters of the sampling can be defined [here](../nav_suite/collectors/viewpoint_sampling_cfg.py). You can define the ``module`` and the ``class`` of the parameters config that is used for the sampling. An example is provided that is optimized for the legged robot ANYmal and a matterport environment. Please not that this configuration assumes that two cameras are added where the first one has access to semantic information and the second to geoemtric information.
102-
103-
The number of viepoints that are sampled can be directory defined in the GUI. With the button ``Viewpoint Sampling`` the viewpoints are saved as ``camera_poses`` under the defined directory. Afterwards, click ``Viewpoint Renedering`` to get the final rendered images. The resulting folder structure is as follows:
104-
105-
``` graphql
106-
cfg.data_dir
107-
├── camera_poses.txt # format: x y z qw qx qy qz
108-
├── cfg.depth_cam_name # required
109-
| ├── intrinsics.txt # K-matrix (3x3)
110-
| ├── distance_to_image_plane # annotator
111-
| | ├── xxxx.png # images saved with 4 digits, e.g. 0000.png
112-
├── cfg.depth_cam_name # optional
113-
| ├── intrinsics.txt # K-matrix (3x3)
114-
| ├── distance_to_image_plane # annotator
115-
| | ├── xxxx.png # images saved with 4 digits, e.g. 0000.png
116-
```
101+
Each node of the graph is a possible data sampling point, with the orientation uniformly sampled between variable bounds. The exact parameters of the sampling can be defined [here](../nav_suite/collectors/sensor_data_sampling_cfg.py). How the individual sensor data is treated is defined in individual sensor modules, i.e., [Camera](../nav_suite/collectors/sensors/camera_cfg.py), [RayCaster](../nav_suite/collectors/sensors/raycaster_cfg.py).
102+
An example is provided that is optimized for the legged robot ANYmal and a matterport environment. Please note that this configuration assumes that two cameras are added where the first one has access to semantic information and the second to geometric information.
117103

118104
### Standalone scripts
119105

120106
Standalone scripts are provided to demonstrate the loading of different environments:
121107

122108
- [Sample Trajectories from Matterport](../../../scripts/nav_suite/collector/matterport_trajectory_sampling.py)
123-
- [Sample Viewpoints and Render Images from Carla (Unreal Engine)](../../../scripts/nav_suite/collector/carla_viewpoint_sampling.py)
109+
- [Sample Camera Viewpoints and Render Images from Carla (Unreal Engine)](../../../scripts/nav_suite/collector/carla_sensor_data_sampling.py)
124110

125111

126112
> [!NOTE] **Matterport Sensors**: \

exts/nav_suite/nav_suite/collectors/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
#
44
# SPDX-License-Identifier: Apache-2.0
55

6+
from .sensor_data_sampling import SensorDataSampling
7+
from .sensor_data_sampling_cfg import SensorDataSamplingCfg
8+
from .sensors import * # noqa: F401, F403
69
from .trajectory_sampling import TrajectorySampling
710
from .trajectory_sampling_cfg import TrajectorySamplingCfg
8-
from .viewpoint_sampling import ViewpointSampling
9-
from .viewpoint_sampling_cfg import ViewpointSamplingCfg

0 commit comments

Comments
 (0)