Skip to content
Snippets Groups Projects
Select Git revision
  • 2895f5043e570088a860e68d6012a5ce355e10f6
  • master default protected
  • bug-collection
3 results

BddSyncIntegration.scala

Blame
  • SimpleScene.proto 4.63 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;
    }
    
    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 object = 1;
      string type = 2; // deprecated may be ExitNotification or EntryNotification
      // repeated IposZoneDescriptor zoneDescriptors = 2; // contains information about all zones that this position belongs to
    }
    
    message IposZoneDescriptor {
      string zoneId = 1;
      string type = 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
    }
    
    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 {
      string frameId = 1; // deprecated
      // repeated string frameIds = 1;
      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
      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 requestorProtocol = 10; // communication protocol, e.g., "mqtt"; Assumption: requestor = receiver
    }
    
    message IposMonitoringResponse {
      string monitoringTaskId = 1;
      string status = 2; // success- or error-Message
    }
    
    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
    }