1 # Copyright (c) 2019-2020 NVIDIA CORPORATION. All rights reserved.
3 @page sensormanager_usecase1 Sensor Manager Workflow
7 Before we can instantiate Sensor Manager, we need to declare and instantiate
8 NVIDIA<sup>®</sup> DriveWorks @ref core_usecase5 , Sensor Abstration Layer and @ref rig_mainsection :
11 dwContextHandle_t ctx = DW_NULL_HANDLE;
12 dwSALHandle_t sal = DW_NULL_HANDLE;
13 dwRigHandle_t rc = DW_NULL_HANDLE;
14 dwSensorManagerHandle_t sm = DW_NULL_HANDLE;
16 dwContextParameters ctxParams = {};
17 constexpr size_t poolSize = 16;
18 const dwSensorEvent * event = nullptr;
19 dwStatus ret = DW_SUCCESS;
21 ret = dwInitialize(&ctx, DW_VERSION, &ctxParams);
24 ret = dwSAL_initialize(&sal, ctx);
27 ret = dwRig_initializeFromFile(&rc, ctx, "rig.json");
31 Now we can initialize Sensor Manager and start the underlying sensors:
34 ret = dwSensorManager_initializeFromRig(&sm, rc, poolSize, sal);
37 ret = dwSensorManager_start(sm);
41 Once Sensor Manager object initialized and sensors are started, it is possible
42 to read events in a loop:
45 while (ret == DW_SUCCESS) {
46 ret = dwSensorManager_acquireNextEvent(&event, 0, sm);
49 switch (event->type) {
50 case DW_SENSOR_RADAR: /* Process Event */ break;
51 case DW_SENSOR_LIDAR: /* Process Event */ break;
52 case DW_SENSOR_CAN: /* Process Event */ break;
53 case DW_SENSOR_GPS: /* Process Event */ break;
54 case DW_SENSOR_IMU: /* Process Event */ break;
55 case DW_SENSOR_CAMERA: /* Process Event */ break;
58 ret = dwSensorManager_releaseAcquiredEvent(event, sm);
63 Clean-up procedure consists of stopping Sensor Manager and releasing the memory:
66 ret = dwSensorManager_stop(sm);
69 ret = dwSensorManager_release(&sm);
73 Similarly, DriveWorks @ref core_usecase5, SAL and @ref rig_mainsection objects must be
76 Sensor Manager is used in multiple samples:
77 - @ref dwx_camera_calibration_sample
78 - @ref dwx_imu_calibration_sample
79 - @ref dwx_lidar_calibration_sample
80 - @ref dwx_struct_from_motion_sample