Troubleshooting

Fusion error code: MODULE_NOT_ENABLED #

Associated message #

Positional tracking not enabled for the GeoTracking module. Did you call the enablePositionalTracking method on the sl::Fusion object?

What is happening ? #

VPS functions cannot be used without enabling the module. Please enable the module before attempting to call these functions.

Impact on my application and how to solve this ? #

The fusion process cannot proceed with the requested function until Global Localization was not enabled. To resolve this, please ensure that you call the enablePositionalTracking function on the sl::Fusion object, providing the necessary parameters.

Fusion error code: INVALID_COVARIANCE #

Associated message #

You have ingested GNSS data with a very low covariance value (less than 1 millimeter). Such low covariance values appear to be too good to be true. To ensure stability, the covariance will be clamped to 1 millimeter. Please verify the covariance values of the GNSS data you have provided.

What is happening ? #

The covariance value for sl::GNSSData ingested in the ingestGNSSData function is below the acceptable threshold of 1e-6. Please ensure that the covariance value is greater than or equal to the minimum requirement. The fusion clamped the covariance to 1e-6 .

Impact on my application and how to solve this ? #

This is a warning message. The fusion process will proceed with clamped covariance for sl::GNSSData. To prevent this warning message, please ensure that the covariance of your sl::GNSSData is properly checked and adjusted before ingestion.

Fusion error code: INVALID_TIMESTAMP #

Associated message #

Could be one of:

  • You ingested GNSS data without timestamp (timestamp field set to 0). Please include a valid timestamp for your GNSS data.
  • You ingested GNSS data with a timestamp far from the current timestamp (timestamp difference ms). This could be a unit error on the provided timestamp (milliseconds instead of microseconds). Please double-check the unit of the timestamp set in the GNSS.

What is happening? #

The fusion process involves synchronizing data from multiple ZED cameras and GNSS for accurate processing. In order to achieve this, it is necessary to group together data with closely matched timestamps. The diagram below shows sample data that needs synchronization. Each colored bar represents data that needs to be synchronized.

Then synchronization is performed by grouping data together based on the provided timestamp. Data are synchronized based on the current synchronization cursor. The figure below illustrates this:

The error INVALID_TIMESTAMP happens when your ingested data timestamp is invalid. Especially, this error happens when:

  • The ingested data timestamp is equal to zero (field not set).
  • The ingested data timestamp is in the past, as illustrated below:

  • The ingested data timestamp is far from the current synchronization cursor, as illustrated below:

Impact on my application and how to solve this ? #

The fusion will ignore this data since it could not be synchronized. To resolve this, please check your sl::GNSSData timestamp before ingesting it. The current synchronization cursor timestamp could be retrieved thanks to getCurrentTimeStamp method of sl::Fusion .

Fusion error code: NO_NEW_DATA_AVAILABLE #

Associated message #

No associated messages.

What is happening ? #

The fusion data synchronization consumed all data from the camera. It is waiting for new data. This usually happens when the fusion process method runs (subscriber) at a higher FPS than the grab method of the camera (publisher).

Impact on my application and how to solve this ? #

This is a warning message. Most of the time nothing is wrong, your fusion process is waiting for new data from camera. Once new data will be available your fusion .process() should return a SUCCESS error code. If no SUCCESS error code appears after several seconds, this is a synchronization problem, please refer to synchronization documentation for help.

Fusion error code: GNSS_DATA_NEED_FIX #

Associated message #

It seems that you did not fill the gnss_status attribute of your GNSSData. Please fill it for improving fusion accuracy. Please check your GNSS configuration or set gnss_status to SINGLE.

What is happening ? #

The field gnss_status attribute of your GNSSData is set to sl::GNSS_STATUS::UNKNOWN. This could be due to a bad gnss report, or you did not set this field.

Impact on my application and how to solve this ? #

This is a warning message. If you want more accurate geo-tracking fusion, set the gnss_status attribute. Otherwise, fusion will still process data but in degraded mode. Please check your GNSS configuration or set gnss_status to SINGLE

Fusion error code: GNSS_DATA_COVARIANCE_MUST_VARY #

Associated message #

You ingested GNSS data with the same covariance multiple times. Are you sure that you are filling it with the good values? If you are confident about your ingested covariance you can ignore this message.

What is happening ? #

You ingested more than fifteen sl::GNSSData data with the same covariance values. If you are confident about the ingested covariance there is no problem, this message is present to prevent the user from ingesting fixed “hand-crafted” covariance.

Impact on my application and how to solve this ? #

This is a warning message. Fusion will still process data, this message is present only to prevent you from inserting fixed “hand-crafted” covariance. This message can be deactivated by setting

FUSION_SDK_DISABLE_GNSS_COVARIANCE_CHECK to 1, for example on Linux:

export FUSION_SDK_DISABLE_GNSS_COVARIANCE_CHECK=1

Error code: SENSORS_DATA_REQUIRED #

Associated message #

  • Positional Tracking GEN2 with IMU fusion enabled requires high frequency sensors data (available with Streaming version 2, with ZED SDK >=4.1).
  • Positional Tracking GEN2 with IMU fusion enabled requires high frequency sensors data (available with SVO version 2, with ZED SDK >=4.1).

What is happening ? #

Positional tracking GEN 2 needs high-frequency IMU data when enable_imu_fusion is activated. The provided input does not provide such information. This could be due to the fact that your provided input is SVO gen 1 or streaming gen 1. You can check the version of your SVO thanks to the ZED_SVO_Editor tool:

ZED_SVO_Editor --version <path_of_your_svo>

Impact on my application and how to solve this ? #

This is a fatal error. The Positional tracking will be deactivated. If you still want to use your data source with positional tracking gen 2, you can deactivate IMU fusion by setting enable_imu_fusion to false.