Compute Graph Framework SDK Reference  5.8
dwSelfCalibrationNode.hpp
Go to the documentation of this file.
1
2//
3// Notice
4// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
5// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
6// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
7// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8//
9// NVIDIA CORPORATION & AFFILIATES assumes no responsibility for the consequences of use of such
10// information or for any infringement of patents or other rights of third parties that may
11// result from its use. No license is granted by implication or otherwise under any patent
12// or patent rights of NVIDIA CORPORATION & AFFILIATES. No third party distribution is allowed unless
13// expressly authorized by NVIDIA. Details are subject to change without notice.
14// This code supersedes and replaces all information previously supplied.
15// NVIDIA CORPORATION & AFFILIATES products are not authorized for use as critical
16// components in life support devices or systems without express written approval of
17// NVIDIA CORPORATION & AFFILIATES.
18//
19// SPDX-FileCopyrightText: Copyright (c) 2019-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
20// SPDX-License-Identifier: LicenseRef-NvidiaProprietary
21//
22// NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
23// property and proprietary rights in and to this material, related
24// documentation and any modifications thereto. Any use, reproduction,
25// disclosure or distribution of this material and related documentation
26// without an express license agreement from NVIDIA CORPORATION or
27// its affiliates is strictly prohibited.
28//
30
31#ifndef DW_FRAMEWORK_SELF_CALIBRATION_NODE_HPP_
32#define DW_FRAMEWORK_SELF_CALIBRATION_NODE_HPP_
33
34#include <dwcgf/node/Node.hpp>
37#include <dwcgf/port/Port.hpp>
42/* Need to include the appropriate ChannelPacketTypes.hpp since port initialization requires
43 the parameter_trait overrides. Otherwise, it will be considered as a packet of generic type. */
45
46#include <dw/calibration/engine/Engine.h>
47#include <dw/calibration/engine/camera/CameraParamsExtra.h>
48
49namespace dw
50{
51namespace framework
52{
53
55{
58 uint32_t sensorIndex;
62 uint32_t calibrationSignals; // use uint32_t cause enum bitwise-or is not supported by codegen
63 dwCameraModelHandle_t cameraHandle;
64 dwCameraProperties cameraProps;
65 cudaStream_t cudaStream;
66};
67
69{
72 uint32_t sensorIndex;
74 dwRadarProperties radarProps;
75 cudaStream_t cudaStream;
76};
77
79{
82 uint32_t sensorIndex;
83 dwLidarProperties lidarProps;
84 cudaStream_t cudaStream;
85};
86
88{
89 dwRigHandle_t rigHandle;
91
95
103};
104
109{
110public:
111 static constexpr char LOG_TAG[] = "dwSelfCalibrationNode";
112
113 static constexpr auto describeInputPorts()
114 {
116 DW_DESCRIBE_PORT(dwEgomotionStateHandle_t, "EGOMOTION_STATE_ODO_IMU"_sv),
117 DW_DESCRIBE_PORT(dwIMUFrame, "IMU_FRAME"_sv),
118 DW_DESCRIBE_PORT(dwVehicleIOState, "VEHICLE_IO_STATE"_sv),
119 DW_DESCRIBE_PORT(dwVehicleIONonSafetyState, "VEHICLE_IO_NON_SAFETY_STATE"_sv),
120 DW_DESCRIBE_PORT_ARRAY(dwFeatureHistoryArray, SELF_CALIBRATION_NODE_MAX_CAMERAS, "CAMERA_FEATURE_DETECTION"_sv, PortBinding::OPTIONAL),
122 DW_DESCRIBE_PORT_ARRAY(dwRadarDopplerMotion, SELF_CALIBRATION_NODE_MAX_RADARS, "RADAR_DOPPLER_MOTION"_sv, PortBinding::OPTIONAL),
125 };
126 static constexpr auto describeOutputPorts()
127 {
136 DW_DESCRIBE_PORT(void*, "MODULE_HANDLE"_sv, PortBinding::REQUIRED));
137 };
138
139 static constexpr auto describePasses()
140 {
142 describePass("SETUP"_sv, DW_PROCESSOR_TYPE_CPU),
143 describePass("PROCESS_IMU"_sv, DW_PROCESSOR_TYPE_CPU),
144 describePass("PROCESS_VIO"_sv, DW_PROCESSOR_TYPE_CPU),
145 describePass("PROCESS_VEHICLE_IO_NON_SAFETY_STATE"_sv, DW_PROCESSOR_TYPE_CPU),
146 describePass("PROCESS_CAMERA_GPU_ASYNC"_sv, DW_PROCESSOR_TYPE_GPU),
147 describePass("PROCESS_CAMERA_CPU_SYNC"_sv, DW_PROCESSOR_TYPE_CPU),
148 describePass("PROCESS_RADAR"_sv, DW_PROCESSOR_TYPE_CPU),
149 describePass("PROCESS_LIDAR_GPU_ASYNC"_sv, DW_PROCESSOR_TYPE_GPU),
150 describePass("PROCESS_LIDAR_CPU_SYNC"_sv, DW_PROCESSOR_TYPE_CPU),
151 describePass("SEND_ROADCAST"_sv, DW_PROCESSOR_TYPE_CPU),
152 describePass("TEARDOWN"_sv, DW_PROCESSOR_TYPE_CPU));
153 };
154
155 static std::unique_ptr<dwSelfCalibrationNode> create(ParameterProvider& provider);
156
157 static constexpr auto describeParameters()
158 {
159 return describeConstructorArguments<dwSelfCalibrationNodeParam, dwContextHandle_t>(
162 dwRigHandle_t,
165 bool,
166 "enforceDependencies"_sv,
169 bool,
170 "calibrateVehicle"_sv,
173 int32_t,
174 "radarSensorWheelCalibration"_sv,
176
178 size_t,
179 "cameraSensorIndices"_sv,
182 size_t,
183 "cameraSensorStreamIndices"_sv,
186 bool,
187 "cameraEnabledMask"_sv,
190 uint32_t,
191 "cameraCalibrationMethod"_sv,
194 uint32_t,
195 "cameraCalibrationSignals"_sv,
197
199 size_t,
200 "radarSensorIndices"_sv,
203 size_t,
204 "radarSensorStreamIndices"_sv,
207 bool,
208 "radarEnabledMask"_sv,
210
212 size_t,
213 "lidarSensorIndices"_sv,
216 size_t,
217 "lidarSensorStreamIndices"_sv,
220 bool,
221 "lidarEnabledMask"_sv,
223
225 uint32_t,
226 "channelFifoSize"_sv,
230 dwContextHandle_t)));
231 }
232
233 dwSelfCalibrationNode(const dwSelfCalibrationNodeParam& param, const dwContextHandle_t ctx);
234};
235} // namespace framework
236} // namespace dw
237
238#endif //DW_FRAMEWORK_SELF_CALIBRATION_NODE_HPP_
#define DW_DESCRIBE_ABSTRACT_ARRAY_PARAMETER(TYPE_NAME, args...)
#define DW_DESCRIBE_UNNAMED_PARAMETER(TYPE_NAME, args...)
#define DW_DESCRIBE_PARAMETER(TYPE_NAME, args...)
#define DW_DESCRIBE_PORT(TYPE_NAME, args...)
#define DW_DESCRIBE_PORT_ARRAY(TYPE_NAME, ARRAYSIZE, args...)
The interface to access parameter values identified by name and/or (semantic) type.
static std::unique_ptr< dwSelfCalibrationNode > create(ParameterProvider &provider)
dwSelfCalibrationNode(const dwSelfCalibrationNodeParam &param, const dwContextHandle_t ctx)
dwSelfCalibrationNodeCameraParams cameraParams[SELF_CALIBRATION_NODE_MAX_CAMERAS]
dwSelfCalibrationNodeRadarParams radarParams[SELF_CALIBRATION_NODE_MAX_RADARS]
constexpr auto describePortCollection(Args &&... args)
CalibratedSteeringProperties { dwVehicleSteeringProperties steeringProperties dwCalibratedSteeringProperties
constexpr std::tuple< dw::core::StringView, dwProcessorType > describePass(dw::core::StringView const &&name, dwProcessorType processorType)
dwLidarPose { dwTime_t timeStampNow dwLidarPose
CalibratedExtrinsics { CalibrationExtrinsicProfileName extrinsicProfileName dwCalibratedExtrinsics
dwRoadCastNodeCalibrationDataArray { dwRoadCastNodeCalibrationData calibrationData[MAX_CALIBRATION_SENSORS] dwRoadCastNodeCalibrationDataArray
static constexpr uint8_t SELF_CALIBRATION_NODE_MAX_LIDARS
constexpr auto describeConstructorArgument(const Args &&... args)
dwSelfCalibrationNodeLidarParams lidarParams[SELF_CALIBRATION_NODE_MAX_LIDARS]
static constexpr uint8_t SELF_CALIBRATION_NODE_MAX_CAMERAS
constexpr auto describePassCollection(const Args &&... args)
CalibratedWheelRadii { float32_t currentWheelRadius[DW_VEHICLE_NUM_WHEELS] dwCalibratedWheelRadii
static constexpr uint8_t SELF_CALIBRATION_NODE_MAX_RADARS
Definition: Exception.hpp:47