Versions Compared

Key

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

...

Which filter output works best depends on your application. For augmented reality applications we reommend using globalFusedPose.

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

Notes on IMU Arrangement

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

...

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

Output

...

Data Format

FusedVehiclePose

JSON
Code Block
{
    "fusedVehiclePose": {
        "acceleration": {
            "x": 0.0,
            "y": 0.0,
            "z": 0.0
        },
        "globalPosition": {
            "x": 0.0,
            "y": 0.0
        },
        "lastDataTime": {
            "timestamp": 0
        },
        "position": {
            "x": 0.0,
            "y": 0.0
        },
        "timestamp": {
            "timestamp": 0
        },
        "utmZone": "31T",
        "yaw": 0.0
    }
}

...

Parameter name

Description

Unit

lastDataTime

Unused

s

orientation

Orientation quaternion in ENU coordinate frame

without unit

position

X, y position + height

m

timestamp

Time of data acqusition

ns

GlobalFusedPose

JSON
Code Block
{
    "globalFusedPose" {
        "orientation": {
			"w": 1.0,
			"x": 0.0,
			"y": 0.0,
			"z": 0.0
		},
        "timestamp": {
			"timestamp": 0
		},
        "position": {
            "longitude": 0.0,
            "latitude": 0.0,
            "height": 0.0
		}
	}
}

...

Protobuf

...

Description

...

Unit

...

orientation

...

Orientation quaternion

...

without unit

...

position

...

Longitude, latitude, height

...

deg, deg, m

...

timestamp

...

Time of data acqusition

...

ns

Information regarding the ENU coordinate system is here: https://en.wikipedia.org/wiki/Local_tangent_plane_coordinates

Data Playback [DEPRECATED, switch over to ReplayExecutable]

Data from a log file can played back and forwarded to a fusion filter using the fileReader block. An example of how to use this node we are showing below:

"sources":
Code Block
Code Block
syntax = "proto3";

package Fusion.proto;

message Quaternion {
  double w "filereader": {= 1;
  double x = 2;
  "filename": "sampleDriveData.json",
 double y = 3;
  double z =  "playbackInterval": 0.001
 4;
}

message GpsPoint {
  }
},

...

Parameter name

...

Description

...

Unit

...

filename

...

Name of the file to be played back

...

n/a

...

playbackInterval

...

Time interval between each line of the playback file

...

s

Replay Node [DEPRECATED, switch over to ReplayExecutable]

Replay data from disk file.

Code Block
  "sources": {
    "replay": {
      "filename": "./MiniRide10.json",
      "replaySpeed": 1,          // replay speed is adjustable
      "readMultipleLines": 10    // disk reader would read in multiple lines every time.
    }
  }

...

Key

...

Description

...

Type

...

Example value

...

filepath

...

Path to read in file

...

String

...

“log.json”

...

replaySpeed

...

Speed to the actual recording

...

Double

...

1

...

readMultipleLines

...

Number of lines to read each time

...

Integer

...

10

Replay Executable

This is a separate executable that can be built from FusionHub project. In Visual Studio build target dropdown there will be an option to build ReplayExecutable.exe.

The replay executable will read in from file, push data to replay queue and send them to the network (tcp://localhost:9921 by default). To run the ReplayExecutable,

Code Block
ReplayExecutable.exe -r <path/to/file.json> [--replay-speed 1] [--queue-size 100] [--echo-data] [--verbose]

...

Key

...

Description

...

Type

...

Example value

...

-r

...

Path to read in file

...

String

...

“log.json”

...

--replay-speed

...

Speed to the actual recording

...

Double

...

1

...

--queue-size

...

The size of queue that file reader would stop pushing new data to the replay queue.

Increase this value when you see lots of data is published at the same time when running with --verbose

...

Integer

...

100

...

--echo-data

...

Listen to the publishing endpoint and display the replayed data

...

N/A

...

N/A

...

--verbose

...

double longitude = 2;
  double latitude = 3;
  double height = 4;
}

message GlobalFusedPose {
  int64 timecode = 5; // Optional: if 0 not set.
  int64 timestamp = 1;
  GpsPoint position = 2;
  Quaternion orientation = 3;
}

message StreamData {
  int32 sequence_number = 1;
  GlobalFusedPose global_fused_pose = 10;
}

Parameter name

Description

Unit

orientation

Orientation quaternion

without unit

position

Longitude, latitude, height

deg, deg, m

timestamp

Time of data acqusition

ns

Recording and Replaying Data

Data Recording

You can record the output from FusionHub to a file by adding the following lines to the sink section of config.json. All JSON output that's printed to the screen during the operation of FusionHub will be written into the log file.

Code Block
"record": {
    "filename": "driveData.json",
    "format": "json"
}

Parameter name

Description

Default

filename

Filename of the file to be recorded.

driveData.json

format

The file format. At the moment only JSON is possible.

json

Data Replay

In order to replay data from a JSON file a separate application ReplayExecutable.exe that we deliver with LPVR-POS is used. The replay executable reads the JSON data from a defined file, pushes the data to a replay queue and sends them to the network (tcp://localhost:9921 by default). To run the ReplayExecutable use the following command:

Code Block
ReplayExecutable.exe -r <path/to/file.json> [--replay-speed 1] [--queue-size 100] [--echo-data] [--verbose]

Key

Description

Type

Example value

-r

Path to read in file

String

“log.json”

--replay-speed

Speed to the actual recording

Double

1

--queue-size

The size of queue that file reader would stop pushing new data to the replay queue.

Increase this value when you see lots of data is published at the same time when running with --verbose

Integer

100

--echo-data

Listen to the publishing endpoint and display the replayed data

N/A

N/A

...

--verbose

Print the debugging information, i.e., the timestamp a packet is added to the replay queue, replayed from the replay queue, and discarded from the replay queue.

N/A

N/A

FusionHub can receive data from the replay application by adding the replay application’s endpoint source to the configuration file:

Code Block
languagejson
{
  ...,
  "sources": {
    "endpoints": ["tcp://localhost:9921"]
  }
}

Graphical User Interface

Map View

...

Data Playback and Recording

Data playback and recording works in the same way for all FusionHub versions. It has been described in the previous chapters, but I’ll add a recap here to give it its dedicated chapter, as it’s a very important feature for data analysis and serialization.

Data Recording

Record node

You can record the output from FusionHub to a file by adding

Code Block
"record": {
    "filename": "driveData.json",
    "format": "json"
}

to the sink section of config.json.

File Logger

Code Block
"logger": {
    // "endpoints": ["inproc://file_reader_1"],  // from file reader
    "endpoints": ["tcp://localhost:9921"],  // from Replay executable
    "format": "json",
    "filename": "recTest" // this will become the postfix of the filename
}

Data Playback

Data from a log file can played back and forwarded to a fusion filter using the fileReader block. An example of how to use this node we are showing below:

code
"sources": {
    "filereader": {
    ...,
    "filenamesources": "driveData.json",{
        "playbackIntervalendpoints": 0.001["tcp://localhost:9921"]
    }
},

...

Parameter name

...

Description

...

Unit

...

filename

...

Name of the file to be played back

...

n/a

...

playbackInterval

...

Time interval between each line of the playback file

...

Graphical User Interface

Connection Address

...

Dashboard Elements

...

Sensor Fusion Configuration and Calibration Status

...

General Settings

...

Map View

...

Communication with External Applications

...