Prerequisites
- Supported platform: Jetson AGX Orin, Orin NX 16GB, or x86_64 Linux (Ubuntu 22.04)
- CUDA 12.x installed (Jetson: JetPack 6.0+; x86: standard CUDA toolkit)
- A valid PathVynt evaluation license key (requested from the signup page)
- At minimum: one LiDAR sensor with a UDP stream and ROS 2 Humble installed
Step 1: Install the SDK
bash
Install via apt
# Add the PathVynt APT repository
$ curl -fsSL https://packages.pathvynt.com/gpg | sudo gpg --dearmor \
-o /usr/share/keyrings/pathvynt-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/pathvynt-archive-keyring.gpg] \
https://packages.pathvynt.com/apt stable main" \
| sudo tee /etc/apt/sources.list.d/pathvynt.list
$ sudo apt update && sudo apt install pathvynt-sdk
Step 2: Activate your license
bash
$ pvctl license activate --key YOUR_LICENSE_KEY
Step 3: Write your first fusion node
The minimal C++ integration requires a FusionConfig, a PathVyntRuntime instance, and a callback to receive the fused output on each sensor cycle.
C++
minimal_fusion.cpp
#include <pathvynt/runtime.hpp>
int main() {
pv::FusionConfig cfg;
cfg.lidar_model = pv::LiDARModel::MID_16;
cfg.camera_mode = pv::CameraMode::NONE;
cfg.drift_model = pv::DriftModel::WAREHOUSE_INDOOR;
pv::PathVyntRuntime rt(cfg);
rt.on_fusion_ready([](const pv::FusionFrame& frame) {
// frame.occupancy_grid, frame.risk_scores, frame.pose_estimate
printf("Fusion OK | latency %dms\n", frame.latency_ms);
});
rt.start();
while (true) rt.spin_once();
return 0;
}
Step 4: Verify output
bash
$ pvctl status
FUSION_OK
PRED_OK
LOC_DEGRADED
Runtime: v1.4.2 | License: eval 87d remaining
No map loaded? The localization module will report
LOC_DEGRADED until you pass a .pvmap keyframe file. See the Localization Config section. Fusion and prediction work without a map.
Next steps
- API Reference — full
FusionConfigandFusionFrametype documentation - Configuration Guide — tuning guide for your specific hardware and deployment context
- Warehouse AMR use case — recommended config for indoor AMR deployments