You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* [feat] Complete Multisensor mode integration
Align the depth-or-overlap contract across APIs and tools, document experimental tracking limitations, and add focused configuration and tracking coverage.
* [clean] Trim Multisensor release documentation
Remove unnecessary standalone artifacts and keep wheel guidance version-independent.
* [clean] Extract Multisensor tools integration
Keep the API and documentation change focused while tool support receives separate validation.
* [test] Use distinct Multisensor stereo buffers
Match the tracker input contract by giving each camera its own image allocation.
* [fix] Address Multisensor review feedback
Clarify runtime behavior and make tests and YAML validation enforce the documented input contracts.
* [fix] Align timestamp docs with implementation
Document non-decreasing cross-sensor ordering while retaining strict camera-frame ordering.
Copy file name to clipboardExpand all lines: README.md
+16-5Lines changed: 16 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ cuVSLAM is the library by NVIDIA, providing various Visual Tracking Camera modes
29
29
# Tracking modes
30
30
31
31
cuVSLAM's tracker supports several odometry modes selected via `Odometry::Config::odometry_mode`
32
-
(C++) / `cuvslam.Odometry.OdometryMode` (Python). Modes differ in which sensors they require, which
32
+
(C++) / `cuvslam.Tracker.OdometryMode` (Python). Modes differ in which sensors they require, which
33
33
ones they can additionally fuse, and how they handle scale. Pick the mode that matches the most
34
34
informative sensor set on your rig:
35
35
@@ -39,18 +39,23 @@ informative sensor set on your rig:
39
39
|`RGBD`| 1 RGB-D camera (aligned RGB + depth) | — |`RGBDSettings`| Single depth-aligned camera (e.g. RealSense, TUM RGB-D). |
40
40
|`Multicamera`| ≥2 cameras with at least one overlapping pair (a stereo pair) | up to 32 cameras total | — | Stereo or multi-stereo rigs. Most accurate purely-visual mode. |
|`Multisensor`|At least one camera pair with overlapping frustums; cuNLS-enabled build | RGB-D cameras (any subset), 0 or 1 IMU |`MultisensorSettings`| Any-mix RGB / RGB-D rigs with optional IMU. Use when the legacy modes don't fit: ≥3 cameras of mixed RGB and RGB-D types; a multi-camera rig where only a subset provides depth; or RGB-D + IMU fusion (note that `Inertial` mode is stereo-only). |
42
+
|`Multisensor`|≥1 RGB-D camera **or** ≥1 overlapping camera pair; cuNLS-enabled build |Additional RGB/RGB-D cameras, 0 or 1 IMU |`MultisensorSettings`| Any-mix RGB / RGB-D rigs with optional IMU, including one RGB-D camera with IMU. |
43
43
44
44
Notes:
45
45
-`Multisensor` is the only mode that requires a cuNLS-enabled build — see
46
-
[Optional: cuNLS](#optional-cunls). All other modes work with the default build.
46
+
[cuNLS](#cunls). All other modes work with the default build.
47
47
- IMU fusion is available in `Inertial` (always on) and `Multisensor` (auto-enabled when
48
48
`Rig::imus` is non-empty).
49
49
- For a runnable Multisensor walkthrough on a multi-RGB-D + IMU rig, see
50
-
[examples/multisensor/](examples/multisensor/README.md). For the full per-field API reference,
51
-
see the [C++](https://nvidia-isaac.github.io/cuVSLAM/cpp/) or
50
+
[examples/multisensor/](examples/multisensor/README.md). For the full per-field API reference, see the
51
+
[C++](https://nvidia-isaac.github.io/cuVSLAM/cpp/) or
| Monocular |`OdometryMode.Mono` (3) | Single camera (no scale) |
129
-
| Multisensor |`OdometryMode.Multisensor` (4) |Any-mix RGB / RGB-D cameras with optional IMU. Requires cuNLS-enabled build. Configure via `MultisensorSettings`. See `examples/multisensor/`. |
130
+
| Multisensor |`OdometryMode.Multisensor` (4) |At least one RGB-D camera or one overlapping camera pair, with optional IMU. Requires cuNLS and currently supports pinhole cameras only. Configure via `MultisensorSettings`. See `examples/multisensor/`. |
Copy file name to clipboardExpand all lines: cuvslam-skills/cuvslam-troubleshoot/SKILL.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,7 +80,11 @@ If the user has not provided a config, say:
80
80
> "To root cause this accurately I need the cuVSLAM configuration you were using. Please share the parameters file (for Isaac ROS) or the relevant `OdometryConfig` / `CUVSLAM_Configuration` settings you had set when the issue occurred."
81
81
82
82
Key parameters to note once you have the config:
83
-
-`tracking_mode` (Isaac ROS) / `OdometryMode` (Python) — determines whether IMU is used (`0`/`Multicamera`=VO only, `1`/`Inertial`=VIO). Knowing this up front directs the diagnosis toward vision or IMU root causes.
83
+
-`tracking_mode` (Isaac ROS) / `OdometryMode` (Python) — `0`/`Multicamera` is VO-only, while
84
+
`1`/`Inertial` requires and uses an IMU. `Multisensor` is different: it automatically enables IMU fusion only when
85
+
`Rig.imus` is non-empty, so the mode value alone does not determine IMU use. Verify the rig's IMU list alongside
86
+
cuNLS availability, `depth_camera_ids`, and pinhole calibration.
87
+
Knowing this up front directs the diagnosis toward vision, depth, or IMU root causes.
84
88
-`rectified_images` (Isaac ROS) / `rectified_stereo_camera` (C++ API) — wrong value flips the entire stereo pipeline
85
89
-`image_jitter_threshold_ms` — tolerated timestamp jitter between left/right images; too tight a value causes frames to be dropped silently
Copy file name to clipboardExpand all lines: examples/euroc/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ PyCuVSLAM supports multiple visual tracking modes. You can specify the desired t
14
14
15
15
***Monocular**: Visual tracking using a monocular camera. This mode provides accurate camera rotation estimation but does not estimate scale. (set as `OdometryMode(3)` or `OdometryMode.Mono`)
16
16
17
-
***Multisensor**: Unified mode that accepts any mix of plain RGB and RGB-D cameras with an optional single IMU (set as `OdometryMode(4)` or `OdometryMode.Multisensor`). Requires a cuNLS-enabled buildand is configured via `MultisensorSettings`; see[examples/multisensor/](../multisensor/README.md) for a runnable walkthrough.
17
+
***Multisensor**: Unified mode that accepts at least one RGB-D camera or one overlapping camera pair, with optional additional RGB/RGB-D cameras and one IMU (set as `OdometryMode(4)` or `OdometryMode.Multisensor`). Requires a cuNLS-enabled build, currently supports pinhole cameras only, and is configured via `MultisensorSettings`. See[examples/multisensor/](../multisensor/README.md) for a runnable walkthrough.
18
18
19
19
PyCuVSLAM exercises three modes on the EuRoC MAV dataset — Stereo (`Multicamera`), Stereo-Inertial (`Inertial`), and Monocular (`Mono`) — because *Mono-Depth* has no aligned depth stream (see the [TUM-RGBD dataset example](../tum/README.md)) and *Multisensor* has its own [example](../multisensor/README.md). You can try different tracking modes by modifying the following line in `track_euroc.py`:
0 commit comments