Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • feature/extended-communication
  • main
2 results

Target

Select target project
  • ipos-public/models
1 result
Select Git revision
  • feature/extended-communication
  • main
2 results
Show changes
Commits on Source (3)
......@@ -12,6 +12,11 @@ message IposConfigWrapper { // wrapper-message for configuration-topic
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)
......@@ -25,6 +30,24 @@ message IposPositionEvent {
// 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
......
# VDA5050 AGV state Protobuf Definition
This protobuf data model is a description of the AGV state messages.
For the demonstrator of Ipos-Framework is the following attributes relevant:
timestamp
manufacturer + serialNumber
agvPosition
loads
batteryState
errors
\ No newline at end of file
syntax = "proto3";
package ipos.models;
message AgvState {
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.
string timeStamp = 2; //Timestamp in ISO8601 format (YYYY-MM-DDTHH:mm:ss.ssZ).
string version = 3; //Version of the protocol [Major].[Minor].[Patch]
string manufacturer = 4; //Manufacturer of the AGV
string serialNumber = 5; //Serial number of the AGV.
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.
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.
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.
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 EdgeState edgeStates = 11; //Array of edgeState-Objects, that need to be traversed for fulfilling the order, empty list if idle.
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.
BatteryState batteryState = 14; //Contains all battery-related information.
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.
SafetyState safetyState =17; //Contains all safety-related information.
optional AgvPosition agvPosition = 18;
optional float distanceSinceLastNode = 19;
repeated Info information = 20;
repeated Load loads = 21;
optional bool newBaseRequest = 22;
optional bool paused = 23;
optional Velocity velocity = 24;
optional string zoneSetId = 25;
}
message AgvPosition {
bool positionInitialized = 1;
optional float localizationScore = 2;
optional float deviationRange = 3;
float x = 4;
float y = 5;
float theta = 6; // Range: [-Pi … Pi] Orientation of the AGV.
string mapId = 7;
optional string mapDescription = 8;
}
message NodeState {
string nodeId = 1; //Unique node identification.
int32 sequenceId = 2; //sequenceId to discern multiple nodes with same nodeId.
optional string nodeDescription = 3;
optional NodePosition nodePosition = 4;
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 {
float x = 1;
float y = 2;
float theta = 3;
optional float allowedDeviationXY = 4;
optional float allowedDeviationTheta = 5;
string mapId = 6;
optional string mapDescription = 7;
}
message EdgeState {
string edgeId = 1; //Unique edge identification.
int32 sequenceId = 2; //sequenceId to differentiate between multiple edges with the same edgeId.
optional string edgeDescription = 3; //Additional information on the edge.
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;
}
message Trajectory {
float degree = 1;
repeated float knotVector = 2;
repeated ControlPoints controlPoints = 3;
}
message ControlPoints {
float x = 1;
float y = 2;
optional float weight = 3;
}
message Velocity {
optional float vx = 1; //The AVGs velocity in its x direction.
optional float vy = 2; //The AVGs velocity in its y direction.
optional float omega = 3; //The AVGs turning speed around its z axis.
}
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 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 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 float weight = 6; //Absolute weight of the load measured in kg.
}
message BoundingBoxReference {
float x = 1; //x-coordinate of the point of reference.
float y = 2;
float z = 3;
optional float theta = 4; //Orientation of the loads bounding box. Important for tugger, trains, etc.
}
message LoadDimensions {
float length = 1;
float width = 2;
optional float hight = 3;
}
message ActionState {
string actionId = 1;
optional string actionType = 2;
optional string actionDescription = 3;
string actionStatus = 4;
optional string resultDescription = 5;
}
message BatteryState {
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 float batteryVoltage = 2; //Battery Voltage.
optional int32 batteryHealth = 3; //State of Health in %.
bool charging = 4; //“true”: charging in progress. “false”: AGV is currently not charging.
optional int32 reach = 5; //Estimated reach with current State of Charge.
}
message 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.).
optional string errorDescription = 3; //Error description.
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 {
string referenceKey = 1;
string referenceValue = 2;
}
message Info {
string infoType = 1;
repeated InfoReference infoReferences = 2;
optional string infoDescription = 3;
string infoLevel = 4;
}
message InfoReference {
string referenceKey = 1;
string referenceValue = 2;
}
message SafetyState {
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.
bool fieldViolation = 2; //Protective field violation. "true":field is violated "false":field is not violated.
}