Table of Contents |
---|
Introduction
FusionHub is a software application that has the purpose of combining various sensor data inputs to create a higher level data output. There are 3 basic versions of FusionHub:
...
Code Block |
---|
// Sensor fusion config "vehicularFusion": { "echoFusedPose": false, "endpoint": "tcp://*:8801", "fuser": { "fitModel": "SimpleCarModel", "driveModel": "Differential", "velError": 0.277777778, "omegaError": 0.5, "measurementError": 0.1, "smoothFit": true } } |
This filter needs as input:
...
...
CAN bus and vehicle decoder source
This Filter outputs:
fusedVehiclePose (see description below)
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. At the moment only | SimpleCarModel |
driveModel | Model to use to calculate car trajectory from CAN bus data. At the moment only | Differential |
velError | Velocity error for Kalman filter. Keep default value. | 0.277777778 |
omegaError | Omega error for Kalman filter. Keep default value. | 0.5 |
measurementError | Measurement error for Kalman filter. Keep default value. | 0.1 |
smoothFit | Enable this option to prevent filter output from jumping between odometry data and GPS measurement. Keep enabled. | true |
This filter needs as input:
LPMS-IG1P data source for IMU and GPS data
Code Block |
---|
"imuP": { "type": "DualRtk", "settings": { "sensor1": { // If specification needed, insert first IG1 sensor name here //"name": "ig1p232800650050", "autodetectType": "ig1p" }, "rtcm": true, "imuEndpoint": "tcp://*:8802" } } |
CAN bus and vehicle decoder source
Code Block |
---|
"vehicle": {
"type": "Automotive",
"vehicleStateEndpoint": "tcp://*:8999",
"settings": {
"canInterface": "PeakCAN",
"vehicleType": "R56"
}
} |
This Filter outputs:
fusedVehiclePose
Output data format
Code Block |
---|
{ "fusedVehiclePose": { "acceleration": { "x": -0.4263402493894084, "y": -0.14872631710022688, "z": 9.790632347106932 }, "globalPosition": { "x": 1.8985360999771979, "y": 41.50585830111033 }, "lastDataTime": { "timestamp": 0 }, "position": { "x": 0, "y": 0 }, "timestamp": { "timestamp": 48347424440200 }, "utmZone": "31T", "yaw": 0 } } |
Info |
Parameter name | Description | Unit |
---|---|---|
acceleration | 3D acceleration vector as measured by IMU. Describes the orientation of the vehicle |
...
. | m/s^2 | |
globalPosition | Longitude and latitude in degrees | degrees |
lastDataTime | Ignore | s |
position | Position within UTM zone | m |
timestamp | Timestamp of data acquisition | ns |
utmZone | UTM zone | UTM string |
yaw | Globally referenced yaw angle | rad |
High-Dynamics Filter (IMU + GPS)
Node name: gnssImuFusion
Configuration block example (in sinks
section)
Code Block |
---|
"gnssImuFusion": { "echoFusedPose": false, "endpoint": "tcp://*:8803", "fuser": { "fitModel": "ModelGnssImu", "accelError": 0.01, "omegaError": 0.02, "measurementError": 0.05, "imuToCarRotation": { "w": 1, "x": 0, "y": -1, "z": 0 } } } |
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. At the moment only | SimpleCarModel |
accelError | Model to use to calculate car trajectory from CAN bus data. At the moment only | Differential |
omegaError | Omega error for Kalman filter. Keep default value. | 0.5 |
measurementError | Measurement error for Kalman filter. Keep default value. | 0.1 |
imuToCarRotation | Orientation quaternion of IMU relative to car frame | 1, 0, -1, 0 |
This filter needs as input:
LPMS-IG1P data source for IMU and GPS data
Code Block |
---|
"imuP": {
"type": "DualRtk",
"settings": {
"sensor1": {
// If specification needed, insert first IG1 sensor name here
//"name": "ig1p232800650050",
"autodetectType": "ig1p"
},
"rtcm": true,
"imuEndpoint": "tcp://*:8802"
}
} |
CAN bus and vehicle decoder source
Code Block |
---|
"vehicle": {
"type": "Automotive",
"vehicleStateEndpoint": "tcp://*:8999",
"settings": {
"canInterface": "PeakCAN",
"vehicleType": "R56"
}
} |
This Filter outputs:
fusedVehiclePose
fusedPose
Output data format
Code Block |
---|
{ "fusedVehiclePose": { "acceleration": { "x": 0.0, "y": 0.0, "z": 0.0 }, "globalPosition": { "x": 1.8982356601544925, "y": 41.50544434418204 }, "lastDataTime": { "timestamp": 0 }, "position": { "x": -25.38332083641826, "y": -36.403733501197635 }, "timestamp": { "timestamp": 48910226723400 }, "utmZone": "31T", "yaw": 0.1555754684457767 } } |
Parameter name | Description | Unit |
---|---|---|
acceleration | 3D acceleration vector as measured by IMU. Describes the orientation of the vehicle. | m/s^2 |
globalPosition | Longitude and latitude in degrees | degrees |
lastDataTime | Unused | s |
position | Position within UTM zone | m |
timestamp | Timestamp of data acquisition | ns |
utmZone | UTM zone | UTM string |
yaw | Globally referenced yaw angle | rad |
Code Block |
---|
{ "fusedPose": { "lastDataTime": { "timestamp": 0 }, "orientation": { "w": 0.4437907292666558, "x": 0.5659687502206026, "y": -0.4749652416904733, "z": 0.5070869566224411 }, "position": { "x": -25.383320836418306, "y": -36.403733501197166, "z": 163.98272320756405 }, "timestamp": { "timestamp": 48910226723400 } } } |
Info |
Parameter name | Description | Unit |
---|---|---|
| Unused | s |
| Orientation quaternion | n/a |
position | Unused | m |
timestamp | Time of data acqusition | ns |
Release Notes
Version 1.1
Release date: 2022/11/21
New graphical user interface
Added GPS-odometry fusion for automobile localization
Version 1.0
Release date: 2022/8/25
First full release
Added IMU-optical fusion