...
For details about the overall configuration of the RTK-GPS system refer to this section.
GNSS Output Format
JSON
Code Block |
---|
"gnssData": {
"altitude": 0.0,
"hdop": 0.0,
"heading": 0,
"latitude": 0.0,
"longitude": 0.0,
"height": 0.0,
"nSat": 0,
"orientation": {
"w": 1.0,
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"quality": 0,
"sensorName": "",
"timestamp": 0,
"tmg": 0.0,
"undulation": 0.0
} |
Protobuf
Code Block |
---|
message GnssData {
int64 timestamp = 1;
double latitude = 3;
double longitude = 4;
double period = 5;
int32 frame_count = 6;
double latency = 8;
string sensor_name = 11;
Quaternion orientation = 12;
double height = 13;
double vertical_accuracy = 14;
double horizontal_accuracy = 15;
int32 quality = 16;
int32 n_sat = 17;
double hdop = 18;
double tmg = 19;
double heading = 20;
double altitude = 21;
double undulation = 22;
} |
Odometry
The vehicle source is the data source that reads raw CAN data messages from a given CAN bus interface and parses the vehicle data using to the provided CAN protocol.
...
Configuration example
Code Block |
---|
"vehicle": { "type": "Automotive", "vehicleStateEndpoint": "tcp://*:8999", ", "settings": { "canInterface": "Internal", "canEndpoint": "tcp://localhost:9921", "vehicleType": "Minimal", "canProtocol": { "velocityCanId": 209, "velocityScale": 0.015625012, "endianness": "little", "velocityBitsLength": 16, "velocityStartBit": 0 } } 0 } } } |
Vehicle Parsing with Separate Wheel Velocities
Anchor | ||||
---|---|---|---|---|
|
...
Configuration example
Code Block |
---|
"vehicle": { "type": "Automotive", "vehicleStateEndpoint": "tcp://*:8999", "settings": { "canInterface": "PeakCAN", "canEndpoint": "tcp://localhost:9921", "vehicleType": "External", "wheelBase": 2.750, "trackWidth": 1.595, "canProtocol": { "velocityCanId": 212, "velocityScale": 0.015625012, "endianness": "little", "velocityStartBits": { "FrontLeftWheel": 0, "FrontRightWheel": 16, "RearLeftWheel": 32, "RearRightWheel": 48 } } } } } } |
Additional Parameters
Gear Stick Position for Velocity Sign
...
Configuration template
Code Block |
---|
"vehicle": { ... { ... "settings": { ... "vehicleType": "External", ... "canProtocol": { ... }, "gearCanId": 1, "gearStartBit": 2, "gearBitslength": 3, "gearReverseValue": 4 4 } } } } |
Steering information for Ackermann model
...
The steeringTable
configuration block would look something like below.
Code Block |
---|
"vehicle": { ... "settings": { ... "vehicleType": "ExternalWithSteering", ... "canProtocol": { ... }, "steeringTable": { "steeringWheelAngles": [ -360, -340, -320, -300, ... 300, 320, 340, 360], "wheelAngleType": "Right", "wheelAngles": [ -30.0, -25.5, -20.0, -15.0, ... 19.0, 26.0, 35.5, 40.0 ] } } } } } } |
Predefined Vehicle Parsing
...
See a technical description of FusionHub’s communication interface in one of the following chapters.
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, "y": 0 }, "timestamp": { "timestamp": 0 }, "utmZone": "31T", "yaw": 0 } } |
Protobuf
Code Block |
---|
syntax = "proto3"; package Fusion.proto; message Vector2 { double x = 2; double y = 3; } message Vector { double x = 2; double y = 3; double z = 4; } message FusedVehiclePose { int64 timestamp = 1; Vector2 position = 2; Vector2 global_position = 3; double yaw = 4; string utm_zone = 5; int64 timecode = 6; // Optional: if 0 not set. Vector acceleration = 7; } message StreamData { int32 sequence_number = 1; FusedVehiclePose fused_vehicle_pose = 9; } |
...
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 } } |
Protobuf
Code Block |
---|
syntax = "proto3"; package Fusion.proto; message Vector2 { double x = 2; double y = 3; } message Vector { double x = 2; double y = 3; double z = 4; } message FusedVehiclePose { int64 timestamp = 1; Vector2 position = 2; Vector2 global_position = 3; double yaw = 4; string utm_zone = 5; int64 timecode = 6; // Optional: if 0 not set. Vector acceleration = 7; } message StreamData { int32 sequence_number = 1; FusedVehiclePose fused_vehicle_pose = 9; } |
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 |
FusedPose
JSON
Code Block |
---|
{ "fusedPose": { "lastDataTime": { "timestamp": 0 }, "orientation": { "w": 1.0, "x": 0.0, "y": 0.0, "z": 0.0 }, "position": { "x": 0.0, "y": 0.0, "z": 0.0 }, "timestamp": { "timestamp": 0 } } } |
Protobuf
Code Block |
---|
syntax = "proto3"; package Fusion.proto; message Quaternion { double w = 1; double x = 2; double y = 3; double z = 4; } message Vector { double x = 2; double y = 3; double z = 4; } message FusedPose { int64 timestamp = 1; Vector position = 2; Quaternion orientation = 3; Vector angular_velocity = 4; int64 timecode = 5; // Optional: if 0 not set. } message StreamData { int32 sequence_number = 1; FusedPose fused_pose = 4; } |
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
Code Block |
---|
syntax = "proto3"; package Fusion.proto; message Quaternion { double w = 1; double x = 2; double y = 3; double z = 4; } message GpsPoint { 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; } |
...