NVIDIA DriveOS Linux NSR SDK API Reference

7.0.3.0 Release
EgomotionTypes.h File Reference

Go to the source code of this file.

Data Structures

struct  dwEgomotionLinearAccelerationFilterParams
 Defines egomotion linear acceleration filter parameters. More...
 
struct  dwEgomotionSuspensionParameters
 Suspension model type and parameters. More...
 
struct  dwEgomotionSensorCharacteristics
 Sensor measurement noise characteristics. More...
 
struct  dwEgomotionParameters
 Holds initialization parameters for the Egomotion module. More...
 
struct  dwEgomotionQuality
 Egomotion quality: integrity and error bounds. More...
 
struct  dwEgomotionResultQuality
 Quality of instantaneous state estimate. More...
 
struct  dwEgomotionResult
 Instantaneous state estimate. More...
 
struct  dwEgomotionUncertainty
 Instantaneous state uncertainty estimates. More...
 
struct  dwEgomotionTransformationQuality
 Relative transformation validity and uncertainty. More...
 

Typedefs

typedef enum dwMotionModel dwMotionModel
 Defines the motion models. More...
 
typedef enum dwEgomotionIMUIdentifier dwEgomotionIMUIdentifier
 Defines IMU identifiers. More...
 
typedef enum dwMotionModelMeasurement dwMotionModelMeasurement
 Defines motion measurements. More...
 
typedef enum dwEgomotionSpeedMeasurementType dwEgomotionSpeedMeasurementType
 Defines speed measurement types. More...
 
typedef enum dwEgomotionSteeringMeasurementType dwEgomotionSteeringMeasurementType
 Defines steering measurement types. More...
 
typedef enum dwEgomotionLinearAccelerationFilterMode dwEgomotionLinearAccelerationFilterMode
 Defines egomotion linear acceleration filter mode. More...
 
typedef enum dwEgomotionSuspensionModel dwEgomotionSuspensionModel
 Defines egomotion suspension model. More...
 
typedef enum dwEgomotionDataField dwEgomotionDataField
 Defines flags that indicate validity of corresponding data in dwEgomotionResult and dwEgomotionUncertainty. More...
 
typedef enum dwEgomotionIntegrity dwEgomotionIntegrity
 Egomotion integrity levels. More...
 
typedef struct dwEgomotionLinearAccelerationFilterParams dwEgomotionLinearAccelerationFilterParams
 Defines egomotion linear acceleration filter parameters. More...
 
typedef struct dwEgomotionSuspensionParameters dwEgomotionSuspensionParameters
 Suspension model type and parameters. More...
 
typedef struct dwEgomotionSensorCharacteristics dwEgomotionSensorCharacteristics
 Sensor measurement noise characteristics. More...
 
typedef struct dwEgomotionParameters dwEgomotionParameters
 Holds initialization parameters for the Egomotion module. More...
 
typedef struct dwEgomotionQuality dwEgomotionQuality
 Egomotion quality: integrity and error bounds. More...
 
typedef struct dwEgomotionResultQuality dwEgomotionResultQuality
 Quality of instantaneous state estimate. More...
 
typedef struct dwEgomotionResult dwEgomotionResult
 Instantaneous state estimate. More...
 
typedef struct dwEgomotionUncertainty dwEgomotionUncertainty
 Instantaneous state uncertainty estimates. More...
 
typedef struct dwEgomotionTransformationQuality dwEgomotionTransformationQuality
 Relative transformation validity and uncertainty. More...
 

Enumerations

enum  dwMotionModel {
  DW_EGOMOTION_ODOMETRY = 1 << 0,
  DW_EGOMOTION_IMU_ODOMETRY = (1 << 2) - 1,
  DW_EGOMOTION_VEHICLE_MOTION_OBSERVER = 1 << 2
}
 Defines the motion models. More...
 
enum  dwEgomotionIMUIdentifier {
  DW_EGOMOTION_IMU_BASE = 0,
  DW_EGOMOTION_IMU_HIGH_A = 1,
  DW_EGOMOTION_IMU_HIGH_B = 2,
  DW_EGOMOTION_IMU_COUNT_MAX = 3
}
 Defines IMU identifiers. More...
 
enum  dwMotionModelMeasurement {
  DW_EGOMOTION_MEASUREMENT_VELOCITY = 0,
  DW_EGOMOTION_MEASUREMENT_STEERINGANGLE = 1,
  DW_EGOMOTION_MEASUREMENT_STEERINGWHEELANGLE = 2
}
 Defines motion measurements. More...
 
enum  dwEgomotionSpeedMeasurementType {
  DW_EGOMOTION_FRONT_SPEED = 0,
  DW_EGOMOTION_REAR_WHEEL_SPEED = 1,
  DW_EGOMOTION_REAR_SPEED = 2
}
 Defines speed measurement types. More...
 
enum  dwEgomotionSteeringMeasurementType {
  DW_EGOMOTION_FRONT_STEERING = 0,
  DW_EGOMOTION_STEERING_WHEEL_ANGLE = 1
}
 Defines steering measurement types. More...
 
enum  dwEgomotionLinearAccelerationFilterMode {
  DW_EGOMOTION_ACC_FILTER_NO_FILTERING = 0,
  DW_EGOMOTION_ACC_FILTER_SIMPLE = 1
}
 Defines egomotion linear acceleration filter mode. More...
 
enum  dwEgomotionSuspensionModel {
  DW_EGOMOTION_SUSPENSION_RIGID_MODEL = 0,
  DW_EGOMOTION_SUSPENSION_TORSIONAL_SPRING_MODEL = 1
}
 Defines egomotion suspension model. More...
 
enum  dwEgomotionDataField {
  DW_EGOMOTION_ROTATION = 1 << 0,
  DW_EGOMOTION_LIN_VEL_X = 1 << 1,
  DW_EGOMOTION_LIN_VEL_Y = 1 << 2,
  DW_EGOMOTION_LIN_VEL_Z = 1 << 3,
  DW_EGOMOTION_ANG_VEL_X = 1 << 4,
  DW_EGOMOTION_ANG_VEL_Y = 1 << 5,
  DW_EGOMOTION_ANG_VEL_Z = 1 << 6,
  DW_EGOMOTION_LIN_ACC_X = 1 << 7,
  DW_EGOMOTION_LIN_ACC_Y = 1 << 8,
  DW_EGOMOTION_LIN_ACC_Z = 1 << 9,
  DW_EGOMOTION_ANG_ACC_X = 1 << 10,
  DW_EGOMOTION_ANG_ACC_Y = 1 << 11,
  DW_EGOMOTION_ANG_ACC_Z = 1 << 12,
  DW_EGOMOTION_CURVATURE = 1 << 13
}
 Defines flags that indicate validity of corresponding data in dwEgomotionResult and dwEgomotionUncertainty. More...
 
enum  dwEgomotionIntegrity {
  DW_EGOMOTION_INTEGRITY_INVALID = 0,
  DW_EGOMOTION_INTEGRITY_VALID_QM = 1,
  DW_EGOMOTION_INTEGRITY_VALID_A = 2,
  DW_EGOMOTION_INTEGRITY_VALID_B = 3,
  DW_EGOMOTION_INTEGRITY_VALID_C = 4,
  DW_EGOMOTION_INTEGRITY_VALID_D = 5
}
 Egomotion integrity levels. More...
 

Typedef Documentation

◆ dwEgomotionDataField

Defines flags that indicate validity of corresponding data in dwEgomotionResult and dwEgomotionUncertainty.

◆ dwEgomotionIMUIdentifier

Defines IMU identifiers.

◆ dwEgomotionIntegrity

Egomotion integrity levels.

Non-QM integrity levels are only applicable to vehicle platforms developed for NDAS. No guarantees are made for usage of egomotion as part of non-NDAS DriveWorks SDK.

Non-QM integrity levels are only provided for select egomotion modalities.

See also
dwEgomotionQuality

◆ dwEgomotionLinearAccelerationFilterMode

Defines egomotion linear acceleration filter mode.

◆ dwEgomotionLinearAccelerationFilterParams

Defines egomotion linear acceleration filter parameters.

◆ dwEgomotionParameters

Holds initialization parameters for the Egomotion module.

◆ dwEgomotionQuality

Egomotion quality: integrity and error bounds.

Egomotion provides (conservative) error bounds on its signals by leveraging an extensive monitoring framework and quantifying the impact of any input or internal error on its output. Not all egomotion modalities support this.

Lower and upper error bounds are given relative to the estimated quantity and only valid if status indicates ASIL level. Absolute angular quantities are subject to [-PI, PI] limits and error bounds do not wrap around.

For example, linear velocity upper and lower bounds of +1 m/s, -2 m/s respectively indicate that the true velocity is within this range from the current estimate, with corresponding integrity. If the velocity estimated by egomotion is 10 m/s, the bounds translate to a guarantee that the true velocity is between 8 and 11 m/s. In other words, the velocity is at most under estimated by 10/11=~9%, or over estimated by 10/8=25%.

◆ dwEgomotionResult

Instantaneous state estimate.

Note
Validity of data fields indicated by flags in dwEgomotionResultQuality

◆ dwEgomotionResultQuality

Quality of instantaneous state estimate.

See also
dwEgomotionResult

◆ dwEgomotionSensorCharacteristics

Sensor measurement noise characteristics.

◆ dwEgomotionSpeedMeasurementType

Defines speed measurement types.

◆ dwEgomotionSteeringMeasurementType

Defines steering measurement types.

◆ dwEgomotionSuspensionModel

Defines egomotion suspension model.

◆ dwEgomotionSuspensionParameters

Suspension model type and parameters.

◆ dwEgomotionTransformationQuality

Relative transformation validity and uncertainty.

Note
Covariances are provided "as is" for usage in fusion algorithms depending on egomotion estimation but no accuracy claims are made. Review the disclaimer on covariances provided in dwEgomotionUncertainty.

◆ dwEgomotionUncertainty

Instantaneous state uncertainty estimates.

Data in these fields represent the uncertainties of the corresponding fields in dwEgomotionResult. The uncertainties are represented as covariance matrix when appropriate, or in standard deviation around the estimate otherwise. These values are provided "as is" for usage in fusion algorithms depending on egomotion estimation but no accuracy claims are made (see below).

Note
The uncertainties do not represent estimate accuracy, only the precision of the estimate, under the classical filtering assumptions and limitation of the state and models used in internal estimators:
  • error distributions are zero mean
  • error distributions are Gaussian Neither exactly hold in practice, at least not in all cases. Errors that do not fit the zero mean Gaussian distribution might include calibration errors, model inaccuracies and limitations, input signal degradations or outlier measurements. Such errors are unobservable (or the estimator would correct for them) and result in biased error distributions. Covariances are therefore not a suitable signal to assess egomotion accuracy (i.e. “quality”), particularly in safety-relevant context. Use dwEgomotionResultQuality instead.
Units are identical to those used in dwEgomotionResult. Units in covariance matrices are squared.
Rotation is represented as a quaternion; however, here a 3x3 covariance of the equivalent euler angles is given (order: roll, pitch, yaw) in [rad].

◆ dwMotionModel

Defines the motion models.

◆ dwMotionModelMeasurement

Defines motion measurements.

Enumeration Type Documentation

◆ dwEgomotionDataField

Defines flags that indicate validity of corresponding data in dwEgomotionResult and dwEgomotionUncertainty.

Enumerator
DW_EGOMOTION_ROTATION 

indicates validity of rotation,

See also
limitations of selected dwMotionModel
DW_EGOMOTION_LIN_VEL_X 

indicates validity of linearVelocity[0]

DW_EGOMOTION_LIN_VEL_Y 

indicates validity of linearVelocity[1]

DW_EGOMOTION_LIN_VEL_Z 

indicates validity of linearVelocity[2]

DW_EGOMOTION_ANG_VEL_X 

indicates validity of angularVelocity[0]

DW_EGOMOTION_ANG_VEL_Y 

indicates validity of angularVelocity[1]

DW_EGOMOTION_ANG_VEL_Z 

indicates validity of angularVelocity[2]

DW_EGOMOTION_LIN_ACC_X 

indicates validity of linearAcceleration[0]

DW_EGOMOTION_LIN_ACC_Y 

indicates validity of linearAcceleration[1]

DW_EGOMOTION_LIN_ACC_Z 

indicates validity of linearAcceleration[2]

DW_EGOMOTION_ANG_ACC_X 

indicates validity of angularAcceleration[0]

DW_EGOMOTION_ANG_ACC_Y 

indicates validity of angularAcceleration[1]

DW_EGOMOTION_ANG_ACC_Z 

indicates validity of angularAcceleration[2]

DW_EGOMOTION_CURVATURE 

indicates validity of curvature

Definition at line 205 of file EgomotionTypes.h.

◆ dwEgomotionIMUIdentifier

Defines IMU identifiers.

Enumerator
DW_EGOMOTION_IMU_BASE 

Base IMU used in L2 and L3 products.

DW_EGOMOTION_IMU_HIGH_A 

High IMU (A) used in L3 product.

DW_EGOMOTION_IMU_HIGH_B 

High IMU (B) used in L3 product.

DW_EGOMOTION_IMU_COUNT_MAX 

Max number of IMUs supported.

Invalid value.

Definition at line 98 of file EgomotionTypes.h.

◆ dwEgomotionIntegrity

Egomotion integrity levels.

Non-QM integrity levels are only applicable to vehicle platforms developed for NDAS. No guarantees are made for usage of egomotion as part of non-NDAS DriveWorks SDK.

Non-QM integrity levels are only provided for select egomotion modalities.

See also
dwEgomotionQuality
Enumerator
DW_EGOMOTION_INTEGRITY_INVALID 

Signal is invalid, do not use.

DW_EGOMOTION_INTEGRITY_VALID_QM 

Signal is valid without guarantees (no error bounds provided).

DW_EGOMOTION_INTEGRITY_VALID_A 

Signal is valid and within error bounds with ASIL A guarantee.

DW_EGOMOTION_INTEGRITY_VALID_B 

Signal is valid and within error bounds with ASIL B guarantee.

DW_EGOMOTION_INTEGRITY_VALID_C 

Signal is valid and within error bounds with ASIL C guarantee.

DW_EGOMOTION_INTEGRITY_VALID_D 

Signal is valid and within error bounds with ASIL D guarantee.

Definition at line 233 of file EgomotionTypes.h.

◆ dwEgomotionLinearAccelerationFilterMode

Defines egomotion linear acceleration filter mode.

Enumerator
DW_EGOMOTION_ACC_FILTER_NO_FILTERING 

no filtering of the output linear acceleration

DW_EGOMOTION_ACC_FILTER_SIMPLE 

simple low-pass filtering of the acceleration

Definition at line 189 of file EgomotionTypes.h.

◆ dwEgomotionSpeedMeasurementType

Defines speed measurement types.

Enumerator
DW_EGOMOTION_FRONT_SPEED 

Indicates that speed is linear speed [m/s] measured at front wheels (along steering direction).

Steering angle [rad] is used internally to compute longitudinal speed.

  • Positive speed corresponds to a forward motion of the vehicle.
  • Positive steering angle corresponds to a left turn.
Note
: estimation quality is dependent on measurement accuracy, resolution and sampling rate. We recommend the following:
  • speed signal at >=50Hz sampling rate and resolution of 0.02 m/s or higher.
  • steering angle signal at >=50Hz sampling rate and resolution of 0.01 deg or higher.

Provide front speed measurement and steering angle with the dwEgomotion_addVehicleState API where the dwVehicleIOState struct contains speed, frontSteeringAngle, speedTimestamp and steeringTimestamp or with dwEgomotion_addVehicleIOState API where at least one of dwVehicleIOSafetyState, dwVehicleIONonSafetyState or dwVehicleIOActuationFeedback contain valid values of speed, frontSteeringAngle, speedTimestamp and frontSteeringTimestamp.

DW_EGOMOTION_REAR_WHEEL_SPEED 

Indicates that speeds are angular speeds [rad/s] measured at rear wheels.

  • Positive angular speeds correspond to a forward motion of the vehicle.
Note
This mode requires valid dwEgomotionParameters.dwVehicle.wheelRadius otherwise incorrect estimation of the longitudinal speed will be made.
It is expected that both rear wheel speed measurements are not far apart in time, otherwise degradation in estimation quality is expected.
: estimation quality is dependent on measurement accuracy, resolution and sampling rate. We recommend the following:
  • speed signal at >=50Hz sampling rate and resolution of 0.05 rad/s or higher.
: Egomotion supports steered rear axles.

Provide rear wheel speed measurements with the dwEgomotion_addVehicleState API where the dwVehicleIOState struct contains wheelSpeed and wheelSpeedTimestamp or with dwEgomotion_addVehicleIOState API where at least one of dwVehicleIOSafetyState, dwVehicleIONonSafetyState or dwVehicleIOActuationFeedback contain valid values of wheelSpeed and wheelTickTimestamp.

DW_EGOMOTION_REAR_SPEED 

Indicates that speed is linear speed [m/s] measured at rear axle center (along steering direction).

Rear steering angle [rad] given by dwVehicleIOState.rearWheelAngle is used internally to compute longitudinal speed.

  • Positive speed corresponds to a forward motion of the vehicle.
  • Positive steering angle corresponds to a lateral motion towards the left at the rear axle.
Note
: estimation quality is dependent on measurement accuracy, resolution and sampling rate. We recommend the following:
  • speed signal at >=50Hz sampling rate and resolution of 0.02 m/s or higher.

Provide rear speed measurement with the dwEgomotion_addVehicleState API where the dwVehicleIOState struct contains speed, rearWheelAngle and speedTimestamp or with dwEgomotion_addVehicleIOState API where at least one of dwVehicleIOSafetyState, dwVehicleIONonSafetyState or dwVehicleIOActuationFeedback contain valid values for speed, rearWheelAngle and speedTimestamp.

Definition at line 117 of file EgomotionTypes.h.

◆ dwEgomotionSteeringMeasurementType

Defines steering measurement types.

Enumerator
DW_EGOMOTION_FRONT_STEERING 
See also
dwVehicleIOState frontSteeringAngle
DW_EGOMOTION_STEERING_WHEEL_ANGLE 
See also
dwVehicleIOState steeringWheelAngle

Definition at line 181 of file EgomotionTypes.h.

◆ dwEgomotionSuspensionModel

Defines egomotion suspension model.

Enumerator
DW_EGOMOTION_SUSPENSION_RIGID_MODEL 

No suspension model.

Equivalent to perfectly rigid suspension.

DW_EGOMOTION_SUSPENSION_TORSIONAL_SPRING_MODEL 

Models suspension as single-axis damped torsional spring.

Definition at line 197 of file EgomotionTypes.h.

◆ dwMotionModel

Defines the motion models.

Enumerator
DW_EGOMOTION_ODOMETRY 

Given odometry information, estimates motion of the vehicle using a bicycle model.

The following parameters are required for this model:

  • dwEgomotionParameters
    • vehicle
      • wheelbase, mass, inertia3D, frontCorneringStiffness, rearCorneringStiffness, centerOfMassToRearAxle, wheelRadius (1), steeringWheelToSteeringMap (2), maxSteeringWheelAngle (2), frontSteeringOffset (2)
    • speedMeasurementType

This model is capable of providing the following estimates:

Uncertainty estimates are not supported at this time.

DW_EGOMOTION_IMU_ODOMETRY 

Fuses odometry model with IMU measurements to estimate motion of the vehicle.

The following parameters are required for this model:

  • dwEgomotionParameters
    • vehicle
      • wheelRadius (1), steeringWheelToSteeringMap (2), maxSteeringWheelAngle (2), wheelbase (3, 4), mass (3, 4), centerOfMassHeight (3), inertia3D (3), centerOfMassToFrontAxle (4) rearCorneringStiffness (4)
    • imu2rig
    • speedMeasurementType

This model is capable of providing the following estimates:

Uncertainty estimates are provided for all state estimates listed above.

DW_EGOMOTION_VEHICLE_MOTION_OBSERVER 

Egomotion estimation based on IMU and RoV sensors (wheel encoders, steering, suspension, drive status, ...) targeted for NDAS production.

Not officially supported as part of DriveWorks SDK, backwards compatibility and deprecation process will not be followed. See disclaimer in dw/egomotion/2.0/Egomotion2.h for more information.

Definition at line 32 of file EgomotionTypes.h.

◆ dwMotionModelMeasurement

Defines motion measurements.

Enumerator
DW_EGOMOTION_MEASUREMENT_VELOCITY 

Vehicle velocity [m/s].

DW_EGOMOTION_MEASUREMENT_STEERINGANGLE 

Steering angle [rad].

DW_EGOMOTION_MEASUREMENT_STEERINGWHEELANGLE 

Steering wheel angle [rad].

Definition at line 108 of file EgomotionTypes.h.