Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The high dynamics filter works well for scenarios with agressive driving maneuvers such as drifting and cornering. During such maneuvers the turning motion of the wheels generally doesn’t directly correspond with the direction of the vehicle. Therefore for this filter doesn’t rely on wheel velocity measurements for localization like the low-dynamics (LD) filter. This filter uses information from the wheels to determine if the car has come to a full stop.

...

  • fusedVehiclePose (2D pose): Output equivalent to the LD filter output. Includes position in meters relative to starting point, global position (lon, lat) and heading.

  • fusedPose (3D pose): relative to starting point, x, y (in meters) + z (height in meters) + 3D orientation quaternion

  • globalFusedPose: globally referenced 3D position (longitude, latitude, height in meters) + 3D orientation quaternion in ENU frame

...

You can find more information regarding the ENU coordinate system here.

Notes on IMU Arrangement

The used For the car frame is we use the Volkswagen (VW) coordinate frame convention:

...

And the orientation quaternion woud be [w, x, y, z, w] = [ 0, 0, 0, 1 , 0 ] which can be specified in the configuration like below:

Code Block
"imuToCarRotation": {
    "w": 0,
    "x": 0,
    "y": 0,
    "z": 1
}  

Check this page for more information on how to calculate the orientation quaternion.

Note: The orientation of the IMU for a unity quaternion [ 1, 0, 0, 0 ] would be

Code Block
IMU mounting
x: backwards
y: right
z: up

Configuration Block

Insert the following configuration block into your config.json file in the sinks section to activate the HD filter. The filter's node name is gnssImuFusion.

Code Block
..
  "sinks": {
    ..,
    "gnssImuFusion": {
        "echoFusedPose": false,
        "endpoint": "tcp://*:8803",
        "fuser": {
            "fitModel": "ModelGnssImu",
            "accelError": 0.01,
            "omegaError": 0.02,
            "measurementError": 0.05,
            "imuToCarRotation": {
                "w": 1,
                "x": 0,
                "y": 0,
                "z": 0
            },
            }
 "outputWhenFilterNotReady": false,
            "retainStateWhenStopped": true,
  }
..

See below a description of the parameter options for the HD filter.

...

Parameter name

...

Description

...

Default

          "smoothFit": true,
            "globalOrigin": {
                "longitude": 139.73226516666668,
                "latitude": 35.657632
            }
        }
    }
..

See below a description of the parameter options for the HD filter.

Parameter name

Description

Default

echoFusedPose

fusedVehiclePose output is printed to command line

false

endpoint

Output port for the fusion result

8801

fitModel

Model to use for fusion.

ModelGnssImu

accelError

Acceleration error for Kalman filter. Keep default value.

0.01

omegaError

Omega error for Kalman filter. Keep default value.

0.02

measurementError

Measurement error for Kalman filter. Keep default value.

0.05

imuToCarRotation

Orientation quaternion of IMU relative to car frame

1, 0, 0, 0

smoothFit

Enable this option to prevent filter output from jumping between IMU data and GPS measurement. Keep enabled.

true

singleEndpoint

  • If enabled, the different fusion output messages will be published to the same port "endpoint"

  • If disabled, the "endpoint" parameter above, is the output port for the FusedVehiclePose msg type only.

true

poseEndpoint

Output port for the FusedPose msg type.

8804 if singleEndpoint=false

globalPoseEndpoint

Output port for the GlobalFusedPose msg type.

8805 if singleEndpoint=false

outputRawGnssData

Publishes raw Gnss data position instead of the fusion output. Useful for debugging.

false

outputWhenFilterNotReady

Publishes a temporary raw Gnss data output while the filter is initializing. Useful for a minimal sanity check before moving the vehicle.

false

retainStateWhenStopped

If the vehicle is detected to be stationary by looking at data from CAN bus, then the current filter state (position, rotation etc.) will be automatically retained until motion is detected.

true

globalOrigin

A global position as longitude and latitude: For fusedPose output this will be the starting point. All position outputs will be relative to this point.

{ 0, 0 }

Output Data Format

FusedVehiclePose

...