Loading [MathJax]/extensions/tex2jax.js
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>

  • DriveWorks SDK Reference
    5.6.215 Release
    For Test and Development only

    All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    Radar Self-Calibration

    Radar Calibration - Operating Principle

    Radar calibration estimates the current sensor orientation (yaw angle) with respect to the vehicle's coordinate frame. This yaw angle is estimated by first using the Doppler signal of radar detections to estimate the radar's motion. Subsequently, the radar motion is matched with vehicle yawrate estimates to estimate the yaw angle. Calibration measurements require a sufficiently large speed of driving.

    The Doppler motion observed by a radar can also be used to calibrate odometry speed factors, i.e., a factor which maps measured longitudinal speed to the actual driven speed. In addition the method can be used to calibration individual wheel radii by looking for the radius which maps wheel's rotational velocity to the longitudinal velocity measured by radar. If requested, this calibration will be performed during straight driving maneuvers.

    Radar yaw (top) and wheel radii / velocity speed factor estimation histograms (bottom), collected over a period of time

    Requirements

    Initialization Requirements

    • Nominal values on radar calibration
      • Orientation(roll/pitch/yaw): less than 10 degree error
      • Position(x/y/z): x and y are not used for now, z is less than 10 cm error

    Input Requirements

    • Sensors: radar calibration requires data from radar and CAN sensors.
    • dwVehicleIOState: to perform radar calibration, dwCalibrationEngine has to be fed with dwVehicleIOState, with information parsed from received CAN events.
    • Assumption: Vehicle performs normal driving maneuvers until calibration convergence.

    Output Requirements

    • Corrected yaw value: less than 0.1 degrees
    • Time to correction: less than 2 minutes for radar sensor with 15HZ spinning frequency

    Cross-validation KPI

    Several hours of data are used to produce a reference calibration value for cross-validation. Then, short periods of data are evaluated for whether they can recover the same values. For example, the graph below shows precision/recall curves of radar self-calibration. Precision indicates that an accepted calibration is within a fixed precision threshold from the reference calibration, and recall indicates the ratio of accepted calibrations in the given amount of time.

    Workflow

    The following code snippet shows the general structure of a program that performs Radar self-calibration

    dwCalibrationEngine_initialize(...); // depends on sensor from rig configuration module
    dwCalibrationEngine_initializeRadar(...); // depends on nominal calibration from rig configuration
    dwCalibrationEngine_startCalibration(...); // runtime calibration dependencies need to be met
    while (true) // main loop
    {
    // code to get CAN measurement
    // code to add vehicle IO state to calibration engine
    // code to get radar motion
    // feed radar sweep into self-calibration
    // retrieve calibration status
    // retrieve self-calibrated result
    {
    // radar orientation
    dwTransformation3f radar2rig;
    // odometry speed factor
    float32_t speedFactor;
    // wheel radius
    {
    float32_t radius;
    }
    }
    }
    DW_API_PUBLIC dwStatus dwRadarDopplerMotion_getMotion(dwRadarDopplerMotion *motion, dwRadarDopplerMotionHandle_t obj)
    Gets the available radar motion estimation result.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_getVehicleWheelRadius(float32_t *radius, dwVehicleWheels wheel, dwCalibrationRoutineHandle_t routine, dwCalibrationEngineHandle_t engine)
    Get currently estimated wheel radius of a vehicle.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_getCalibrationStatus(dwCalibrationStatus *status, dwCalibrationRoutineHandle_t routine, dwCalibrationEngineHandle_t engine)
    Returns the current status of a calibration routine.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_addVehicleIOActuationFeedback(dwVehicleIOActuationFeedback const *vioActuationFeedback, uint32_t sensorIndex, dwCalibrationEngineHandle_t engine)
    Adds dwVehicleIOActuationFeedback to calibration engine.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_initialize(dwCalibrationEngineHandle_t *engine, dwRigHandle_t rig, dwContextHandle_t context)
    Creates and initializes a Calibration Engine.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_addVehicleIONonSafetyState(dwVehicleIONonSafetyState const *vioNonSafetyState, uint32_t sensorIndex, dwCalibrationEngineHandle_t engine)
    Adds dwVehicleIONonSafetyState to calibration engine.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_getSensorToRigTransformation(dwTransformation3f *sensorToRig, dwCalibrationRoutineHandle_t routine, dwCalibrationEngineHandle_t engine)
    Returns the current sensor to rig transformation of a calibration routine estimating this transformat...
    DW_API_PUBLIC dwStatus dwCalibrationEngine_startCalibration(dwCalibrationRoutineHandle_t routine, dwCalibrationEngineHandle_t engine)
    Starts a calibration routine associated with a calibration engine.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_addRadarDopplerMotion(dwRadarDopplerMotion const *radarMotion, uint32_t sensorIndex, dwCalibrationEngineHandle_t engine)
    Adds Radar Doppler motion to the calibration engine.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_getOdometrySpeedFactor(float32_t *odometrySpeedFactor, dwCalibrationRoutineHandle_t routine, dwCalibrationEngineHandle_t engine)
    Returns odometry speed factor, mapping speed as reported by odometry to actual speed.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_stopCalibration(dwCalibrationRoutineHandle_t routine, dwCalibrationEngineHandle_t engine)
    Stops a calibration routine associated with a calibration engine.
    DW_API_PUBLIC dwStatus dwCalibrationEngine_initializeRadar(dwCalibrationRoutineHandle_t *routine, uint32_t radarIndex, uint32_t canIndex, const dwCalibrationRadarParams *params, dwCalibrationEngineHandle_t engine)
    Initializes a radar calibration routine designated by the sensor provided to the method.
    @ DW_CALIBRATION_STATE_ACCEPTED
    The routine has accepted an estimate and calibration continues.
    Defines the current status of an individual calibration.
    float float32_t
    Specifies POD types.
    Definition: Types.h:70
    Specifies a 3D rigid transformation.
    Definition: Types.h:536
    @ DW_VEHICLE_WHEEL_REAR_LEFT
    Definition: Vehicle.h:303
    @ DW_VEHICLE_WHEEL_REAR_RIGHT
    Definition: Vehicle.h:304
    @ DW_VEHICLE_WHEEL_FRONT_LEFT
    Definition: Vehicle.h:301
    @ DW_VEHICLE_WHEEL_FRONT_RIGHT
    Definition: Vehicle.h:302

    This workflow is demonstrated in the following sample: Radar Calibration Sample

    人人超碰97caoporen国产