2 * Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved.
4 * NVIDIA Corporation and its licensors retain all intellectual property
5 * and proprietary rights in and to this software, related documentation
6 * and any modifications thereto. Any use, reproduction, disclosure or
7 * distribution of this software and related documentation without an express
8 * license agreement from NVIDIA Corporation is strictly prohibited.
11 @page pfc Pre-Flight Checker Tool (PFC)
14 @section pfc_tool_description Description
16 The NVIDIA<sup>®</sup> DriveWorks Pre-Flight Checker tool (PFC) ensures proper operation for all connected
17 sensors, and checks prerequisites before the car can be safely driven
19 The PFC can only be used in a stationary car.
21 The PFC checks the following items:
22 - System sanity checks for the NVIDIA DRIVE<sup>™</sup> AV component.
23 - Sensor sanity checks for the front camera, Radar, GPS, IMU, and CAN.
24 - Vehicle sanity checks for the steering, brake, and throttle.
26 You can run PFC in these modes:
27 - **Autonomous vehicle mode**: where PFC validates data from live sensors.
28 - **Bench mode**: where PFC validates data from recorded or live sensors.
30 During installation, PFC is initialized for the current configuration.
32 @note The PFC tool bench validation currently only supports data obtained directly from sensors. It does not support recorded data.
34 @subsection pfc_tool_features Features
36 The Pre-Flight Checker (PFC) tool performs the following in both
37 **autonomous vehicle mode** and **bench mode**:
39 #### Validates the Following Sensors:
41 - Camera sensors with data-validation based on histogram.
42 - CAN sensor-based steering, brake, throttle, and gear.
43 - IMU sensor with timestamp-based data validation (Xsense only).
44 - GPS sensor with timestamp- and DOP-based data validation (Xsense only).
45 - Ethernet Radar sensor.
47 #### Displays the Following Version Information:
49 - DriveWorks and NVIDIA DRIVE<sup>™</sup> AV.
52 - Provides the status for the disk storage space, including whether it is critically low.
54 #### Performs Data Validation:
56 PFC performs sensor validation by calculating the frequencies for which sensors provide data. It performs data validations specific for the following sensors:
59 captured data is good and contains valid frames. During camera validation, PFC
60 checks the captured data by examining histograms for RAW frames.<br>
61 It divides the histogram into low, medium, and high percentiles. It then compares the high and
62 low percentiles to ensure they exceed a threshold value, <br>and the mid-percentiles
63 lie within a lower and upper boundary.
64 - IMU: Uses timestamps and IMU frame flag correctness to
65 validate IMU data correctness.
66 - CAN: Uses timely receipt of CAN messages to verify functional
67 steering, brake, throttle, and gear.
68 - GPS: Determines the GPS data correctness based on timestamps, GPS
69 frame flag correctness, and dilution of precision. <br>If multiple GPS sensors are
70 defined, PFC also performs cross validation.
72 @section pfc_tool_prereq Prerequisites
74 This tool is available on NVIDIA DRIVE<sup>™</sup> OS Linux and NVIDIA DRIVE<sup>™</sup> OS QNX.
76 PFC runs on these hardware platforms:
77 - NVIDIA DRIVE<sup>™</sup> AGX Platform:
78 Bench setup with all sensors connected.
79 - NVIDIA DRIVE AGX Platform: In-Car.
81 For information related to the following, see the _NVIDIA DRIVE AV Release Notes_:
82 - Specifications on the supported NVIDIA DRIVE AGX Platform
83 - Software versions that PFC and NVIDIA DRIVE AV use
85 PFC must be installed with NVIDIA DRIVE<sup>™</sup> AV.
87 @subsection pfc_tool_prereq_bench Bench Mode Validation Prerequisites
89 Below are the prerequisites to ensure correct PFC results during **bench mode**
90 validation. In bench mode, sensor data can come from both recordings and sensors.
92 - The GPS sensor must have a clear sky. If PFC is executed in a garage or closed environment, the GPS data-validity may
94 - The Radar sensors must be separated from objects by at least 1-meter. Otherwise, Radar data-validity fails.
95 - All camera and Radar sensors must be exposed to a valid environment. Cameras must:
96 - Be exposed to appropriate lights.
97 - Have a valid, unobstructed view.\n
98 Cameras must not face a static view, e.g., a wall.\n
99 Cameras must not be obstructed by barriers, e.g., trees, cloth, or mud.
101 @subsection pfc_tool_prereq_av Autonomous Vehicle Mode Validation Prerequisites
103 Below are the prerequisites to ensure correct PFC results during **autonomous vehicle mode** validation.
105 - The prerequisites specified in @ref pfc_tool_prereq_bench.
106 - The following must be true, otherwise CAN sanity fails:
107 - Car engine must be ON.
108 - Transmission must be in Park.
109 - Steering wheel must be unlocked.
111 @section pfc_tool_usage Usage
113 Run this tool by navigating to:
115 /usr/local/driveworks/tools/preFlightChecker/config
121 @subsection pfc_tool_usage_av For Autonomous Vehicle Mode
123 Run the tool by executing:
125 ./pfc_run.sh --rig=[rig_file_path]
131 ./pfc_run.sh --rig=hyperion-7-1-release.json
135 For NVIDIA Hyperion 7.1, the config rig file is available at:
137 /usr/local/driveworks/tools/preFlightChecker/config/hyperion7-1-release.json
139 PFC updates the log output as specified in this file. For more information regarding this log, refer to @ref pfc_tool_log_output.
143 @subsection pfc_tool_usage_bench For Bench Mode
145 PFC performs the same checks in bench mode as it does in autonomous vehicle mode. However, CAN devices are unavailable in bench mode. These devices include <br> brake, throttle, gear, and steering. As a result, validation for these devices will always fail.
147 Run the tool by executing:
149 ./pfc_run.sh --rig=[rig_file_path]
153 ./pfc_run.sh --rig=hyperion-7-1-release.json
155 For NVIDIA Hyperion 7.1, the config rig file is available at:
157 /usr/local/driveworks/tools/preFlightChecker/config/hyperion7-1-release.json
159 @section pfc_tool_command_options Command Line Options
161 The following lists the required command line arguments for each mode.
163 @subsection pfc_tool_command_options_av Required Arguments for Autonomous Vehicle Mode
166 Parameter: --rig=[rig_file_path]
167 Description: The path of the rig.json file specifying each sensor to validate based on the setup configuration.
168 Example: --rig=hyperion7-1-release.json
171 Parameter: --car=[rig_file_path]
172 Description: Identifies the specific vehicle for PFC. For the NVIDIA AGX Platform, set this parameter to `agx-rel`.
174 Example: --car=agx-rel
176 @subsection pfc_tool_command_options_bench Required Arguments for Bench Mode
179 Parameter: --rig=[rig_file_path]
180 Description: The path of the rig.json file specifying each sensor to validate based on the setup configuration.
181 Example: --rig=hyperion7-1-release.json
183 @subsection pfc_tool_command_options_optional Optional Arguments
187 Description: Disables the PFC GUI, and displays only the result on the console.
189 @subsection pfc_tool_hyperion8 Usage on Hyperion 8 Platform
191 Run this tool by navigating to:
193 /usr/local/driveworks/tools/preFlightChecker/config
197 python3 hyp8_pfc_run.py --rig, -r [rig_folder_path]
198 --rigname, -rn [rig_folder_name]
200 --output, -o [output_folder_path]
201 --car, -c [car_designation]
204 @subsection pfc_tool_command_options_av Arguments for Hyperion 8 Execution
207 Parameter: --rig, -r [rig_folder_path]
208 Description: The path of the rig folder specifying the supported sensors attached to each tegra.
209 Example: --rig /usr/local/driveworks/tools/capture/configs/campaign/hyperion8-protoplus-dc
212 Parameter: --rigname, -rn [rig_folder_name]
213 Description: The rig folder name specifying the supported sensors attached to the platform.
214 Example: --rigname hyperion8-protoplus-dc
217 Parameter: --autorig, -a
218 Description: Runs PFC with automatically-selected rigs based on the vehicle BOM ID.
221 Parameter: --car, -c [car_designation]
222 Description: The designator for the given car. Used only to seperate outputs of PFC results.
226 Parameter: --output, -o [output_folder_path]
227 Description: Ouput folder to write logs from all tegras. An output file for each tegra will be generated in folder location.
228 Default: /tmp/pfc_logs.
229 Example: --output /home/nvidia/pfc_output
232 Parameter: --inspection, -i
233 Description: Run automated inspection process. Requires the 'car' argument to be set.
235 @section pfc_tool_log_output Output
237 This is an example of the log output specified in @ref pfc_tool_usage_av. It displays the current sensor status in a sequence of four pages: one **Summary** and three **Detail**.
241 Displays a status summary for all sensors. Press the LEFT-ARROW and RIGHT-ARROW keys to navigate between pages.
243 
247 Displays a detailed status log with sensor information. The log provides the following information:
249 | Information | Description|
250 |-------------|------------|
251 | SENSOR TYPE | The type of sensor. |
252 | SENSOR NAME | Sensor name and type as specified in rig file, i.e., camera, Lidar, or Radar. This field also displays the sensor position if available. |
253 | INIT | Sensor initialization status. |
254 | DATA-RATE (MP/s) | Rate for which the sensor feeds data to the PFC (in megapixels per second). Applies to camera sensors only. |
255 | FREQUENCY (Hz) | Number of frames available per second (in Hertz). |
256 | DATA-VALIDATE | Status of the data validity check performed on sensors. Possible values are: \n - **VALID**: Sensor provides valid data. \n - **NOT_IMPL**: Support for the specified sensor is not implemented. \n - **NA**: Indicates the attribute does not apply to the sensor. |
258 The following is an example of the detailed status log.
260 
262 If debug logs are enabled, there is a possibility of CAN Sanity and IMU/GPS data-validity failure. This failure is from the logging latency.
264 For information on how PFC determines data validity, please refer to @ref pfc_tool_features.
266 @section pfc_tool_additional_info Additional Information
268 This section explains how to interpret information in the detailed sensor log.
270 #### If the Sensor Frequency Is Zero
272 The `FREQUENCY` field for a sensor shows a value of zero when data is not available.
273 This can happen even though the sensor is connected properly.<br>
274 These symptoms can be due to:
275 - A weak GPS signal strength.
276 - A blocked Lidar or Radar sensor.
278 #### If the Sensor has an INVALID Status
280 The `DATA-VALIDATE` field for a camera shows `INVALID` when there are issues with
283 - To fix this in bench mode, re-align the camera sensor.
284 - To fix this in autonomous vehicle mode, move the vehicle to a different location.