Multiple lidars calibration

Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.10.0
DRIVE OS 6.0.8.1
DRIVE OS 6.0.6
DRIVE OS 6.0.5
DRIVE OS 6.0.4 (rev. 1)
DRIVE OS 6.0.4 SDK
other

Target Operating System
Linux
QNX
other

Hardware Platform
DRIVE AGX Orin Developer Kit (940-63710-0010-300)
DRIVE AGX Orin Developer Kit (940-63710-0010-200)
DRIVE AGX Orin Developer Kit (940-63710-0010-100)
DRIVE AGX Orin Developer Kit (940-63710-0010-D00)
DRIVE AGX Orin Developer Kit (940-63710-0010-C00)
DRIVE AGX Orin Developer Kit (not sure its number)
other

SDK Manager Version
2.1.0
other

Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager
native Ubuntu Linux 20.04 Host installed with DRIVE OS Docker Containers
native Ubuntu Linux 18.04 Host installed with DRIVE OS Docker Containers
other

Issue Description
Hello,
I would like to calibrate two lidars using driveworks, but i have a problem with finding any information about it. I have a ouster OS1-128 and OS2-128 lidars. I tried to use the sample_calibration_lidar sample, but im not sure how to define in the Rig FIle the IMU that is build in the ouster lidar (it is accessible by port 7503). When i run the sample i get error when the code is trying to create the imu sensor. Can you give me some guidance on this problem? Does drivework have a already build solution or i should develop it myself using the Driveworks API?

Error String
nvidia@tegra-ubuntu:~$ sudo /usr/local/driveworks/bin/sample_calibration_lidar --rig /home/nvidia/calibration_rig.json --output-rig /home/nvidia/rig_out.json

ProgramArguments: Missing argument ‘dwTracePath’ requested

[27-08-2025 14:59:20] Platform: Detected Drive Orin P3710

[27-08-2025 14:59:20] TimeSource: monotonic epoch time offset is 1756289266230146

[27-08-2025 14:59:20] TimeSourceVibranteLinux: detect valid PTP interface mgbe2_0

[27-08-2025 14:59:20] TimeSource Nvpss : PTP ioctl returned error. Synchronized time will not be available from this timesource.

[27-08-2025 14:59:20] TimeSource: Could not detect valid PTP time source at nvpps. Fallback to mgbe2_0

[27-08-2025 14:59:20] PTP Time is available from Eth Driver

[27-08-2025 14:59:20] Adding variable DW_Base:DW_Version

[27-08-2025 14:59:20] Added variable DW_Base:DW_Version

[27-08-2025 14:59:20] Platform: number of GPU devices detected 1

[27-08-2025 14:59:20] Platform: currently selected GPU device 0, Resource Data Dir: trt_08_05_10_03, Arch: ga10b

[27-08-2025 14:59:20] Platform: currently selected GPU device integrated ID 0

[27-08-2025 14:59:20] CUDLAEngine:getDLACount: CUDLA version is = 1003000

[27-08-2025 14:59:20] CUDLAEngine:getDLACount: Number of DLA devices = 2

[27-08-2025 14:59:20] Context::mountResourceCandidateDataPath resource FAILED to mount from ‘./resources’: VirtualFileSystem: Failed to mount ‘./resources/resources.pak’

[27-08-2025 14:59:20] Context::mountResourceCandidateDataPath resource FAILED to mount from ‘/home/nvidia/data’: VirtualFileSystem: Failed to mount ‘/home/nvidia/data/resources.pak’

[27-08-2025 14:59:20] Context::findDataRootInPathWalk data/DATA_ROOT found at: /usr/local/driveworks-5.10/bin/../data

[27-08-2025 14:59:20] Context::mountResourceCandidateDataPath resource FAILED to mount from ‘/usr/local/driveworks-5.10/bin/../data’: VirtualFileSystem: Failed to mount ‘/usr/local/driveworks-5.10/bin/../data/resources.pak’

[27-08-2025 14:59:20] Context::findDataRootInPathWalk data/DATA_ROOT found at: /usr/local/driveworks-5.10/data

[27-08-2025 14:59:20] Context::mountResourceCandidateDataPath resource FAILED to mount from ‘/usr/local/driveworks-5.10/data’: VirtualFileSystem: Failed to mount ‘/usr/local/driveworks-5.10/data/resources.pak’

[27-08-2025 14:59:20] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks-5.10/bin/../lib/libdw_base.so.5.10

[27-08-2025 14:59:20] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks-5.10/targets/aarch64-Linux/lib/libdw_base.so.5.10

[27-08-2025 14:59:20] SDK: No resources(.pak) mounted, some modules will not function properly

[27-08-2025 14:59:20] SDK: use EGL display as provided

[27-08-2025 14:59:20] TimeSource: monotonic epoch time offset is 1756289266230146

[27-08-2025 14:59:20] TimeSourceVibranteLinux: detect valid PTP interface mgbe2_0

[27-08-2025 14:59:20] TimeSource Nvpss : PTP ioctl returned error. Synchronized time will not be available from this timesource.

[27-08-2025 14:59:20] TimeSource: Could not detect valid PTP time source at nvpps. Fallback to mgbe2_0

[27-08-2025 14:59:20] PTP Time is available from Eth Driver

[27-08-2025 14:59:20] Initialize DriveWorks SDK v5.10.87

[27-08-2025 14:59:20] Release build with GNU 9.3.0 from buildbrain-branch-0-g9a5b4670e12 against Drive PDK v6.0.6.0

[27-08-2025 14:59:20] SensorFactory::createSensor() → time.nvpps, nvpps-device=/dev/nvpps0

[27-08-2025 14:59:20] TimeSensor: failed to set NVPPS parameters. Error: Invalid argument

[27-08-2025 14:59:20] This platform does not support NVPPS GPIO mode. Fallback to timer mode

[27-08-2025 14:59:20] TimeSensor: initialized with no UTC time reference.

[27-08-2025 14:59:20] EndpointNVPPS: started on /dev/nvpps0

[27-08-2025 14:59:20] Initialize DriveWorks VisualizationSDK v5.10.87

[27-08-2025 14:59:20] Initialize DriveWorksGL SDK v5.10.87

[27-08-2025 14:59:21] fromFile: Loading rig file: /home/nvidia/calibration_rig.json

[27-08-2025 14:59:21] rig::DatabaseOverlayer: Failed to open a file ‘/tmp/car_vin’ - file likely does not exist - skipping overlay

[27-08-2025 14:59:21] Rig: missing centerOfMassToFrontAxle parameter

[27-08-2025 14:59:21] RigConfiguration: rig file contains old 1d throttle and brake maps. Use rig version 6 with the new throttle and brake maps for a more accurate throttle map.

[27-08-2025 14:59:21] No valid data file found for lidar:OS1 in parameter string: device=ouster,log_level=INFO,ip=192.168.0.132,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,lidar_port=7502,imu_port=7503 (using configuration folder /home/nvidia/)

[27-08-2025 14:59:21] No valid data file found for imu in parameter string: device=ouster,log_level=INFO,ip=192.168.0.132,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,imu_port=7503 (using configuration folder /home/nvidia/)

[27-08-2025 14:59:21] No valid data file found for lidar:OS0 in parameter string: device=ouster,log_level=INFO,ip=192.168.0.119,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,lidar_port=7502,imu_port=7503 (using configuration folder /home/nvidia/)

[27-08-2025 14:59:21] No valid data file found for imu:OS0 in parameter string: device=ouster,log_level=INFO,ip=192.168.0.119,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,imu_port=7503 (using configuration folder /home/nvidia/)

[27-08-2025 14:59:21] No valid data file found for can:vehicle in parameter string: device=can,log_level=INFO (using configuration folder /home/nvidia/)

[27-08-2025 14:59:21] rig::DatabaseOverlayer: Failed to open a file ‘/tmp/car_vin’ - file likely does not exist - skipping overlay

[27-08-2025 14:59:21] Rig: missing centerOfMassToFrontAxle parameter

[27-08-2025 14:59:21] RigConfiguration: rig file contains old 1d throttle and brake maps. Use rig version 6 with the new throttle and brake maps for a more accurate throttle map.

Found sensor lidar:OS1 with sensor ID: 0

Found sensor imu with sensor ID: 1

Found sensor can:vehicle with sensor ID: 4

[27-08-2025 14:59:21] SensorFactory::createSensor() → lidar.custom, device=ouster,log_level=INFO,ip=192.168.0.132,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,lidar_port=7502,imu_port=7503

[27-08-2025 14:59:21] log_level set to invalid value: INFO

[27-08-2025 14:59:21] Parameter “device” set to value different than CUSTOM_EX, currently DRIVEWORKS requires device to be CUSTOM_EX for custom plugins.

[27-08-2025 14:59:21] SensorManager::addSensor DW_SAL_CANNOT_CREATE_SENSOR: DecoderCustom: Cannot link shared library call: _dwSensorPlugin_createHandle

[27-08-2025 14:59:21] SensorManager::addSensorsFromRig() failed to add sensor from rig: imu.custom device=ouster,log_level=INFO,ip=192.168.0.132,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,imu_port=7503 (Error: DW_SAL_CANNOT_CREATE_SENSOR)

[27-08-2025 14:59:21] Driveworks exception thrown: DW_SAL_CANNOT_CREATE_SENSOR: SensorManager::SensorManager() Failed to add sensors from rig

terminate called after throwing an instance of ‘std::runtime_error’

what(): [2025-08-27 14:59:21] DW Error DW_SAL_CANNOT_CREATE_SENSOR executing DW function:

dwSensorManager_initializeFromRigWithParams(&m_sensorManager, m_rigConfig, &smParams, 1024, m_sal)

at samples/calibration/lidar/main.c

pp:523

Aborted

Logs
Here is the Rig file i used:

{

“rig”: {

“sensors”: [

{

“name”: “lidar:OS1”,

“protocol”: “lidar.custom”,

“nominalSensor2Rig_FLU”: {

“roll-pitch-yaw”: [0.0, 0.0, 0.0],

“t”: [0.64, 0.0, 0.0]

},

“correction_sensor_R_FLU”: {

“roll-pitch-yaw”: [0.0, 0.0, 0.0]

},

“correction_rig_T”: [0.0, 0.0, 0.0],

“parameter”: “device=ouster,log_level=INFO,ip=192.168.0.132,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,lidar_port=7502,imu_port=7503”,

“properties”: null

},

{

“name”: “imu”,

“protocol”: “imu.custom”,

“nominalSensor2Rig_FLU”: {

“roll-pitch-yaw”: [0.0, 0.0, 0.0],

“t”: [0.64, 0.0, 0.0]

},

“correction_sensor_R_FLU”: { “roll-pitch-yaw”: [0.0, 0.0, 0.0] },

“correction_rig_T”: [0.0, 0.0, 0.0],

“parameter”: “device=ouster,log_level=INFO,ip=192.168.0.132,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,imu_port=7503”,

“properties”: null

},

{

“name”: “lidar:OS0”,

“protocol”: “lidar.custom”,

“nominalSensor2Rig_FLU”: {

“roll-pitch-yaw”: [0.0, 0.0, -2.0],

“t”: [0.0, 0.0, 0.0]

},

“correction_sensor_R_FLU”: {

“roll-pitch-yaw”: [0.0, 0.0, 0.0]

},

“correction_rig_T”: [0.0, 0.0, 0.0],

“parameter”: “device=ouster,log_level=INFO,ip=192.168.0.119,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,lidar_port=7502,imu_port=7503”,

“properties”: null

},

{

“name”: “imu:OS0”,

“protocol”: “imu.custom”,

“nominalSensor2Rig_FLU”: {

“roll-pitch-yaw”: [0.0, 0.0, -2.0],

“t”: [0.0, 0.0, 0.0]

},

“correction_sensor_R_FLU”: { “roll-pitch-yaw”: [0.0, 0.0, 0.0] },

“correction_rig_T”: [0.0, 0.0, 0.0],

“parameter”: “device=ouster,log_level=INFO,ip=192.168.0.119,dip=192.168.0.206,decoder-path=/home/nvidia/ouster-driveworks-dist-5.10-x86-arm64/arm/lib/libouster_lidar_plugin_arm.so,session_id=run01,imu_port=7503”,

“properties”: null

},

{

“name”: “can:vehicle”,

“protocol”: “can.custom”,

“nominalSensor2Rig_FLU”: {

“roll-pitch-yaw”: [0.0, 0.0, 0.0],

“t”: [0.0, 0.0, 0.0]

},

“correction_sensor_R_FLU”: { “roll-pitch-yaw”: [0.0, 0.0, 0.0] },

“correction_rig_T”: [0.0, 0.0, 0.0],

“parameter”: “device=can,log_level=INFO”,

“properties”: null

}

],

“vehicle”: {

“valid”: true,

“value”: {

“name”: “vehicle_base”,

“axlebaseFront”: 1.582,

“axlebaseRear”: 1.575,

“bumperFront”: 0.912,

“bumperRear”: 1.109,

“centerOfMassToRearAxle”: 1.564,

“frontCorneringStiffness”: 30654.0,

“height”: 1.473,

“inertia”: 1780.8,

“length”: 4.872,

“mass”: 1779.4,

“rearCorneringStiffness”: 36407.0,

“steeringCoefficient”: 14.8,

“wheelDiameter”: 0.673,

“wheelbase”: 2.85,

“width”: 1.852,

“widthWithMirrors”: 2.121

}

}

},

“version”: 2

}

Dear @ales.gabrhelik1 ,
Did you check lidar replay sample with ouster lidars? Is it working? Could you share the logs?

Dear @SivaRamaKrishnaNV ,

I tried these replay samples, both lidars work with the sample. I talked to my colleages about it and we decided to implement the calibration in our pipeline, but thanks for the reply. You can close this question.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.