Skip to content
Snippets Groups Projects
Commit fdf267ad authored by FrankR's avatar FrankR
Browse files

additions for VDA5050 demonstrator

parent cba1194b
No related branches found
No related tags found
No related merge requests found
...@@ -12,6 +12,11 @@ message IposConfigWrapper { // wrapper-message for configuration-topic ...@@ -12,6 +12,11 @@ message IposConfigWrapper { // wrapper-message for configuration-topic
repeated IposQueryRequest queryRequests = 7; repeated IposQueryRequest queryRequests = 7;
} }
message IposMonitoringWrapper {
repeated IposPositionEvent iposPositionEvents = 1;
repeated IposMsgRcvEvent iposMsgRcvEvent = 2;
}
message IposObjectConfig { message IposObjectConfig {
string agentId = 1; // unique for each object, but there may be multiple positioning sensors for that object 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 sensorId = 2; // unique (each sensor localizes a single object)
...@@ -25,6 +30,24 @@ message IposPositionEvent { ...@@ -25,6 +30,24 @@ message IposPositionEvent {
// string type = 2; // deprecated may be ExitNotification or EntryNotification // 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 { message IposZoneDescriptor {
string zoneId = 1; string zoneId = 1;
string notificationType = 2; // may be ExitNotification or EntryNotification string notificationType = 2; // may be ExitNotification or EntryNotification
......
...@@ -3,154 +3,154 @@ syntax = "proto3"; ...@@ -3,154 +3,154 @@ syntax = "proto3";
package ipos.models; package ipos.models;
message AgvState { message AgvState {
required Int32 headerId = 1; //headerId of the message. The headerId is defined per topic and incremented by 1 with each sent (but not necessarily received) message. int32 headerId = 1; //headerId of the message. The headerId is defined per topic and incremented by 1 with each sent (but not necessarily received) message.
required String timeStamp = 2; //Timestamp in ISO8601 format (YYYY-MM-DDTHH:mm:ss.ssZ). string timeStamp = 2; //Timestamp in ISO8601 format (YYYY-MM-DDTHH:mm:ss.ssZ).
required String version = 3; //Version of the protocol [Major].[Minor].[Patch] string version = 3; //Version of the protocol [Major].[Minor].[Patch]
required String manufacturer = 4; //Manufacturer of the AGV string manufacturer = 4; //Manufacturer of the AGV
required String serialNumber = 5; //Serial number of the AGV. string serialNumber = 5; //Serial number of the AGV.
required String orderId = 6; //Unique order identification of the current order or the previous finished order. The orderId is kept until a new order is received. Empty string (\"\") if no previous orderId is available. string orderId = 6; //Unique order identification of the current order or the previous finished order. The orderId is kept until a new order is received. Empty string (\"\") if no previous orderId is available.
required Int32 orderUpdateId = 7; //Order Update Identification to identify that an order update has been accepted by the AGV. \"0\" if no previous orderUpdateId is available. int32 orderUpdateId = 7; //Order Update Identification to identify that an order update has been accepted by the AGV. \"0\" if no previous orderUpdateId is available.
required String lastNodeId = 8; //nodeID of last reached node or, if AGV is currently on a node, current node (e.g., \"node7\"). Empty string (\"\") if no lastNodeId is available. string lastNodeId = 8; //nodeID of last reached node or, if AGV is currently on a node, current node (e.g., \"node7\"). Empty string (\"\") if no lastNodeId is available.
required Int32 lastNodeSequenceId = 9; //sequenceId of the last reached node or, if the AGV is currently on a node, sequenceId of current node.\n“0” if no lastNodeSequenceId is available. int32 lastNodeSequenceId = 9; //sequenceId of the last reached node or, if the AGV is currently on a node, sequenceId of current node.\n“0” if no lastNodeSequenceId is available.
repeated NodeState nodeStates = 10; //Array of nodeState-Objects, that need to be traversed for fulfilling the order. Empty list if idle. repeated NodeState nodeStates = 10; //Array of nodeState-Objects, that need to be traversed for fulfilling the order. Empty list if idle.
repeated EdgeState edgeStates = 11; //Array of edgeState-Objects, that need to be traversed for fulfilling the order, empty list if idle. repeated EdgeState edgeStates = 11; //Array of edgeState-Objects, that need to be traversed for fulfilling the order, empty list if idle.
required Boolean driving = 12; //True: indicates that the AGV is driving and/or rotating. Other movements of the AGV (e.g., lift movements) are not included here.\nFalse: indicates that the AGV is neither driving nor rotating bool driving = 12; //True: indicates that the AGV is driving and/or rotating. Other movements of the AGV (e.g., lift movements) are not included here.\nFalse: indicates that the AGV is neither driving nor rotating
repeated ActionState actionStates = 13; //Contains a list of the current actions and the actions, which are yet to be finished. This may include actions from previous nodes, that are still in progress. repeated ActionState actionStates = 13; //Contains a list of the current actions and the actions, which are yet to be finished. This may include actions from previous nodes, that are still in progress.
required BatteryState batteryState = 14; //Contains all battery-related information. BatteryState batteryState = 14; //Contains all battery-related information.
required String operatingMode =15; //Current operating mode of the AGV, including: "AUTOMATIC", "SEMIAUTOMATIC", "MANUAL", "SERVICE", "TEACHIN". string operatingMode =15; //Current operating mode of the AGV, including: "AUTOMATIC", "SEMIAUTOMATIC", "MANUAL", "SERVICE", "TEACHIN".
repeated Error errors = 16; //Array of error-objects. All active errors of the AGV should be in the list. An empty array indicates that the AGV has no active errors. repeated Error errors = 16; //Array of error-objects. All active errors of the AGV should be in the list. An empty array indicates that the AGV has no active errors.
required SafetyState safetyState =17; //Contains all safety-related information. SafetyState safetyState =17; //Contains all safety-related information.
optional AgvPosition agvPosition = 18; optional AgvPosition agvPosition = 18;
optional Float64 distanceSinceLastNode = 19; optional float distanceSinceLastNode = 19;
repeated Info information = 20; repeated Info information = 20;
repeated Load loads = 21; repeated Load loads = 21;
optional Boolean newBaseRequest = 22; optional bool newBaseRequest = 22;
optional Boolean paused = 23; optional bool paused = 23;
optional Velocity velocity = 24; optional Velocity velocity = 24;
optional String zoneSetId = 25; optional string zoneSetId = 25;
} }
message AgvPosition { message AgvPosition {
required Boolean positionInitialized = 1; bool positionInitialized = 1;
optional Float64 localizationScore = 2; optional float localizationScore = 2;
optional Float64 deviationRange = 3; optional float deviationRange = 3;
required Float64 x = 4; float x = 4;
required Float64 y = 5; float y = 5;
required Float64 theta = 6; float theta = 6; // Range: [-Pi … Pi] Orientation of the AGV.
required String mapId = 7; string mapId = 7;
optional String mapDescription = 8; optional string mapDescription = 8;
} }
message NodeState { message NodeState {
required String nodeId = 1; //Unique node identification. string nodeId = 1; //Unique node identification.
required Int32 sequenceId = 2; //sequenceId to discern multiple nodes with same nodeId. int32 sequenceId = 2; //sequenceId to discern multiple nodes with same nodeId.
optional String nodeDescription = 3; optional string nodeDescription = 3;
optional NodePosition nodePosition = 4; optional NodePosition nodePosition = 4;
required Boolean released = 5; // “true” indicates that the node is part of the base. “false” indicates that the node is part of the horizon. bool released = 5; // “true” indicates that the node is part of the base. “false” indicates that the node is part of the horizon.
} }
message NodePosition { message NodePosition {
required Float64 x = 1; float x = 1;
required Float64 y = 2; float y = 2;
required Float64 theta = 3; float theta = 3;
optional Float64 allowedDeviationXY = 4; optional float allowedDeviationXY = 4;
optional Float64 allowedDeviationTheta = 5; optional float allowedDeviationTheta = 5;
required String mapId = 6; string mapId = 6;
optional String mapDescription = 7; optional string mapDescription = 7;
} }
message EdgeState { message EdgeState {
required String edgeId = 1; //Unique edge identification. string edgeId = 1; //Unique edge identification.
required Int32 sequenceId = 2; //sequenceId to differentiate between multiple edges with the same edgeId. int32 sequenceId = 2; //sequenceId to differentiate between multiple edges with the same edgeId.
optional String edgeDescription = 3; //Additional information on the edge. optional string edgeDescription = 3; //Additional information on the edge.
required Boolean released = 4; //“true” indicates that the edge is part of the base. “false” indicates that the edge is part of the horizon. bool released = 4; //“true” indicates that the edge is part of the base. “false” indicates that the edge is part of the horizon.
optional Trajectory trajectory = 5; optional Trajectory trajectory = 5;
} }
message Trajectory { message Trajectory {
required Float64 degree = 1; float degree = 1;
repeated Float64 knotVector = 2; repeated float knotVector = 2;
repeated ControlPoints controlPoints = 3; repeated ControlPoints controlPoints = 3;
} }
message ControlPoints { message ControlPoints {
required Float64 x = 1; float x = 1;
required Float64 y = 2; float y = 2;
optional Float64 weight = 3; optional float weight = 3;
} }
message Velocity { message Velocity {
optional Float64 vx = 1; //The AVGs velocity in its x direction. optional float vx = 1; //The AVGs velocity in its x direction.
optional Float64 vy = 2; //The AVGs velocity in its y direction. optional float vy = 2; //The AVGs velocity in its y direction.
optional Float64 omega = 3; //The AVGs turning speed around its z axis. optional float omega = 3; //The AVGs turning speed around its z axis.
} }
message Load { message Load {
optional String loadId = 1; //Unique identification number of the load (e.g., barcode or RFID). Empty field, if the AGV can identify the load, but didn’t identify the load yet. Optional, if the AGV cannot identify the load. optional string loadId = 1; //Unique identification number of the load (e.g., barcode or RFID). Empty field, if the AGV can identify the load, but didn’t identify the load yet. Optional, if the AGV cannot identify the load.
optional String loadType = 2; //Type of load. optional string loadType = 2; //Type of load.
optional String loadPosition = 3; //Indicates, which load handling/carrying unit of the AGV is used, e.g., in case the AGV has multiple spots/positions to carry loads. optional string loadPosition = 3; //Indicates, which load handling/carrying unit of the AGV is used, e.g., in case the AGV has multiple spots/positions to carry loads.
optional BoundingBoxReference boundingBoxReference = 4; //Point of reference for the location of the bounding box. optional BoundingBoxReference boundingBoxReference = 4; //Point of reference for the location of the bounding box.
optional LoadDimensions loadDimensions = 5; //Dimensions of the load´s bounding box in meters. optional LoadDimensions loadDimensions = 5; //Dimensions of the load´s bounding box in meters.
optional Float64 weight = 6; //Absolute weight of the load measured in kg. optional float weight = 6; //Absolute weight of the load measured in kg.
} }
message BoundingBoxReference { message BoundingBoxReference {
required Float64 x = 1; //x-coordinate of the point of reference. float x = 1; //x-coordinate of the point of reference.
required Float64 y = 2; float y = 2;
required Float64 z = 3; float z = 3;
optional Float64 theta = 4; //Orientation of the loads bounding box. Important for tugger, trains, etc. optional float theta = 4; //Orientation of the loads bounding box. Important for tugger, trains, etc.
} }
message LoadDimensions { message LoadDimensions {
required Float64 length = 1; float length = 1;
required Float64 width = 2; float width = 2;
optional Float64 hight = 3; optional float hight = 3;
} }
message ActionState { message ActionState {
required String actionId = 1; string actionId = 1;
optional String actionType = 2; optional string actionType = 2;
optional String actionDescription = 3; optional string actionDescription = 3;
required String actionStatus = 4; string actionStatus = 4;
optional String resultDescription = 5; optional string resultDescription = 5;
} }
message BatteryState { message BatteryState {
required Float64 batteryCharge = 1; //if AGV only provides values for good or bad battery levels, these will be indicated as 20% (bad) and 80% (good). float batteryCharge = 1; //if AGV only provides values for good or bad battery levels, these will be indicated as 20% (bad) and 80% (good).
optional Float64 batteryVoltage = 2; //Battery Voltage. optional float batteryVoltage = 2; //Battery Voltage.
optional Int8 batteryHealth = 3; //State of Health in %. optional int32 batteryHealth = 3; //State of Health in %.
required Boolean charging = 4; //“true”: charging in progress. “false”: AGV is currently not charging. bool charging = 4; //“true”: charging in progress. “false”: AGV is currently not charging.
optional Int32 reach = 5; //Estimated reach with current State of Charge. optional int32 reach = 5; //Estimated reach with current State of Charge.
} }
message Error { message Error {
required String errorType = 1; //Type/name of error string errorType = 1; //Type/name of error
repeated ErrorReference errorReferences = 2; //Array of references to identify the source of the error (e.g., headerId, orderId, actionId, etc.). repeated ErrorReference errorReferences = 2; //Array of references to identify the source of the error (e.g., headerId, orderId, actionId, etc.).
optional String errorDescription = 3; //Error description. optional string errorDescription = 3; //Error description.
required String errorLevel = 4; //WARNING: AGV is ready to start (e.g. maintenance cycle expiration warning). FATAL: AGV is not in running condition, user intervention required (e.g. laser scanner is contaminated). string errorLevel = 4; //WARNING: AGV is ready to start (e.g. maintenance cycle expiration warning). FATAL: AGV is not in running condition, user intervention required (e.g. laser scanner is contaminated).
} }
message ErrorReference { message ErrorReference {
required String referenceKey = 1; string referenceKey = 1;
required String referenceValue = 2; string referenceValue = 2;
} }
message Info { message Info {
required String infoType = 1; string infoType = 1;
repeated InfoReference infoReferences = 2; repeated InfoReference infoReferences = 2;
optional String infoDescription = 3; optional string infoDescription = 3;
required String infoLevel = 4; string infoLevel = 4;
} }
message InfoReference { message InfoReference {
required String referenceKey = 1; string referenceKey = 1;
required String referenceValue = 2; string referenceValue = 2;
} }
message SafetyState { message SafetyState {
required String eStop = 1; //Acknowledge-Type of eStop: AUTOACK: auto-acknowledgeable e-stop is activated, e.g., by bumper or protective field. MANUAL: e-stop hast to be acknowledged manually at the vehicle. REMOTE: facility e-stop has to be acknowledged remotely. NONE: no e-stop activated. string eStop = 1; //Acknowledge-Type of eStop: AUTOACK: auto-acknowledgeable e-stop is activated, e.g., by bumper or protective field. MANUAL: e-stop hast to be acknowledged manually at the vehicle. REMOTE: facility e-stop has to be acknowledged remotely. NONE: no e-stop activated.
required Boolean fieldViolation = 2; //Protective field violation. "true":field is violated "false":field is not violated. bool fieldViolation = 2; //Protective field violation. "true":field is violated "false":field is not violated.
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment