Select Git revision
CompleteTTCProcess.scala
SimpleScene.proto 5.72 KiB
syntax = "proto3";
package ipos.models;
message IposConfigWrapper { // wrapper-message for configuration-topic
repeated IposFrameConfig frames = 1;
repeated IposObject objects = 2; // an object must be either in this list
repeated IposObjectConfig objectConfigs = 3; // or in this list, not in both
repeated POI pois = 4;
repeated RefSystem refSystems = 5;
repeated IposMonitoringRequest monitoringRequests = 6;
repeated IposQueryRequest queryRequests = 7;
}
message IposMonitoringWrapper {
repeated IposPositionEvent iposPositionEvents = 1;
repeated IposMsgRcvEvent iposMsgRcvEvent = 2;
}
message IposObjectConfig {
string agentId = 1; // unique for each object, but there may be multiple positioning sensors for that object
string sensorId = 2; // unique (each sensor localizes a single object)
string agentType = 3; // CeTI will send BOX,BIN,ZONE,ROBOT,HUMAN,OTHER
string sensorType = 4; // BLUETOOTH, UWB, NFC, RFID, IMU...
}
// note: IposObjectConfigs are used to register sensors. Beacon-positions are POIs and should be sent to sensor after registration. Bluetooth/UWB sensor need to know a reference system id. All Beacon-position sent to the Bluetooth/UWB sensor should have the same reference system id
message IposPositionEvent {
repeated IposObject objects = 1;
// string type = 2; // deprecated may be ExitNotification or EntryNotification
}
message IposMsgRcvEvent {
string protocolName = 1;
bytes serializedMsg = 2;
string lastPosUpdate = 3;
string agentId = 4;
repeated Attribute extractedAttributes = 5;
string timestamp = 6;
IposPosition lastKnownPosition = 7;
IposSimpleOrientation lastKnownOrientation = 8;
repeated IposZoneDescriptor lastKnownZoneDescriptors = 9;
}
message Attribute {
string name = 1;
string type = 2;
string data = 3;
}
message IposZoneDescriptor {
string zoneId = 1;
string notificationType = 2; // may be ExitNotification or EntryNotification
}
message IposObject {
string id = 1; // unique for each object, but there may be multiple sensors
string sensorId = 2; //unique
string type = 3; // Applications may send BOX,BIN,ZONE,ROBOT,HUMAN,OTHER
string sensorType = 4; // BLUETOOTH, UWB, NFC, RFID, IMU
IposPosition position = 5;
IposSimpleOrientation orientation = 6;
string lastPosUpdate = 7; // https://en.wikipedia.org/wiki/ISO_8601
repeated IposZoneDescriptor zoneDescriptors = 8; // contains information about all zones that the current position of this object belongs to
}
message IposFrameConfig {
string id = 1; // unique for every frame, used for relative coordinates
repeated IposSpace space = 2; // cube defining the extension, might be (0,0,0)
}
message RefSystem {
string id = 1;
IposPosition position = 2; // position of origin of RefSystem. May be relative or absolute
IposSimpleOrientation orientation = 3;
}
message IposMonitoringRequest {
// frameId = 1; // deprecated
repeated string frameIds = 1; // a monitoring request can be concerned with multiple overlapping frames
float delta = 2; // min. change in position to trigger a position update, setting delta and updateFrequency to -1 cancels the (existing) monitoring task
float updateFrequency = 3; // defines how many times per second a PositionUpdateEvent is sent
repeated string type = 4; // object-types to be observed; CeTI will send BOX,BIN,ZONE,ROBOT,HUMAN,OTHER
repeated string id = 5; // object-ids to be observed
string fusionStrategy = 6; // e.g., "accuracy" for accuracy-optimized monitoring if multiple positions sensors per agent
bool exit_notification = 7; // IPos will notify receiver when object has left the frame
repeated string properties = 8; // properties that shall be monitored: position or id or type or distance
string monitoringTaskId = 9; // unique for each monitoringRequest. IPosFW uses this info for configuring the communication protocol, e.g., for selecting a specific topic for MQTT-communication; a monitoringRequest with the same monitoringTaskId like a previous request updates this request
string refSystemId = 10;
string requestorProtocol = 11; // communication protocol, e.g., "mqtt"; Assumption: requestor = receiver
string serializationType = 12; // accepted values: "protobuf" or "json"
}
message IposMonitoringResponse {
string monitoringTaskId = 1;
string status = 2; // success- or error-Message
}
message IposQueryRequest {
string trackingTaskId = 1; // temporal solution: each monitoringRequest causes the system to track the monitored objects. The monitoringTaskId equals the trackingTaskId
}
message IposQueryResponse {
string trackingTaskId = 1;
repeated IposObject objects = 2;
}
message IposPosition {
string refSystemId = 1; // e.g., "WGS84" if absolute position, "ROOT" for testcases or if specific absolute position is actually irrelevant
IposPoint3D point = 2;
float accuracy = 3; // object is with 95% probability within x metres of this point (gaussian distribution)
}
message IposPoint3D {
float x = 1; // pos in x direction in m
float y = 2; // pos in y direction in m
float z = 3; // pos in z direction in m (up)
}
message POI { // point-of-interest
string id = 1; // e.g. "NFC_TAG_1"
string description = 2; // e.g., "tag"
map<string, string> data = 3; // e.g., "tag-id" -> "b315332984"; "type" -> "nfc"
IposPosition position = 4;
IposSimpleOrientation orientation = 5;
}
message IposSpace {
IposPosition position = 1; // centre of the "space"-cube
IposSimpleOrientation orientation = 2;
float x = 3; // size in x direction in m
float y = 4; // size in y direction in m
float z = 5; // size in z direction in m (height)
}
message IposSimpleOrientation {
float x = 1; // quaternion notation
float y = 2; // if the quaternion is (0,0,0,0)
float z = 3; // there is no orientation
float w = 4; // available
}