api-amr/proto/vda5050.proto

519 lines
12 KiB
Protocol Buffer
Raw Normal View History

2025-06-04 19:15:02 +08:00
syntax = "proto3";
package vda5050;
// 服务定义
service AgvManagement {
// 双向流通信通道
rpc CommunicationChannel(stream AgvMessage) returns (stream ControlMessage) {}
}
// 节点位置
message NodePosition {
float x = 1;
float y = 2;
optional float theta = 3;
optional float allowedDeviationXy = 4;
optional float allowedDeviationTheta = 5;
string mapId = 6;
optional string mapDescription = 7;
}
// 节点信息
message Node {
string nodeId = 1;
uint32 sequenceId = 2;
optional string nodeDescription = 3;
bool released = 4;
optional NodePosition nodePosition = 5;
repeated Action actions = 6;
}
// 边信息
message Edge {
string edgeId = 1;
uint32 sequenceId = 2;
optional string edgeDescription = 3;
bool released = 4;
string startNodeId = 5;
string endNodeId = 6;
optional float maxSpeed = 7;
optional float maxHeight = 8;
optional float minHeight = 9;
optional float orientation = 10;
optional string direction = 11;
optional bool rotationAllowed = 12;
optional float maxRotationSpeed = 13;
optional Trajectory trajectory = 14;
optional float length = 15;
}
// 动作信息
message Action {
string actionType = 1;
string actionId = 2;
optional string actionDescription = 3;
string blockingType = 4;
repeated ActionParameter actionParameters = 5;
}
// 动作参数
message ActionParameter {
string key = 1;
string value = 2;
}
// 即时动作
message InstantActions {
uint32 headerId = 1;
string timestamp = 2;
string version = 3;
string manufacturer = 4;
string serialNumber = 5;
repeated Action instantActions = 6;
}
// 订单
message Order {
uint32 headerId = 1;
string timestamp = 2;
string version = 3;
string manufacturer = 4;
string serialNumber = 5;
string orderId = 6;
uint32 orderUpdateId = 7;
optional string zoneSetId = 8;
repeated Node nodes = 9;
repeated Edge edges = 10;
}
// 连接信息
message Connection {
uint32 headerId = 1;
string timestamp = 2;
string version = 3;
string manufacturer = 4;
string serialNumber = 5;
string connectionState = 6;
}
// 状态消息
message State {
uint32 headerId = 1;
string timestamp = 2;
string version = 3;
string manufacturer = 4;
string serialNumber = 5;
string orderId = 6;
uint32 orderUpdateId = 7;
string lastNodeId = 8;
uint32 lastNodeSequenceId = 9;
bool driving = 10;
optional bool waitingForInteractionZoneRelease = 11;
optional bool paused = 12;
optional ForkState forkState = 13;
optional bool newBaseRequest = 14;
optional float distanceSinceLastNode = 15;
string operatingMode = 16;
repeated NodeState nodeStates = 17;
repeated EdgeState edgeStates = 18;
optional AgvPosition agvPosition = 19;
optional Velocity velocity = 20;
repeated Load loads = 21;
repeated ActionState actionStates = 22;
BatteryState batteryState = 23;
repeated Error errors = 24;
repeated Information information = 25;
SafetyState safetyState = 26;
}
// AGV位置
message AgvPosition {
float x = 1;
float y = 2;
float theta = 3;
string mapId = 4;
optional string mapDescription = 5;
bool positionInitialized = 6;
optional float deviationRange = 7;
optional float localizationScore = 8;
}
// 速度
message Velocity {
optional float vx = 1;
optional float vy = 2;
optional float omega = 3;
}
// 错误
message Error {
string errorType = 1;
repeated ErrorReference errorReferences = 2;
optional string errorDescription = 3;
string errorLevel = 4;
}
// 错误引用
message ErrorReference {
string referenceKey = 1;
string referenceValue = 2;
}
// 信息
message Information {
string infoType = 1;
repeated InfoReference infoReferences = 2;
optional string infoDescription = 3;
string infoLevel = 4;
}
// 信息引用
message InfoReference {
string referenceKey = 1;
string referenceValue = 2;
}
// 动作状态
message ActionState {
string actionId = 1;
optional string actionType = 2;
optional string actionDescription = 3;
string actionStatus = 4;
optional string resultDescription = 5;
}
// 节点状态
message NodeState {
string nodeId = 1;
uint32 sequenceId = 2;
optional string nodeDescription = 3;
optional NodePosition nodePosition = 4;
bool released = 5;
}
// 边状态
message EdgeState {
string edgeId = 1;
uint32 sequenceId = 2;
optional string edgeDescription = 3;
bool released = 4;
optional Trajectory trajectory = 5;
}
// 负载
message Load {
optional string loadId = 1;
optional string loadType = 2;
optional string loadPosition = 3;
optional BoundingBoxReference boundingBoxReference = 4;
optional LoadDimensions loadDimensions = 5;
optional float weight = 6;
}
// 边界框引用
message BoundingBoxReference {
float x = 1;
float y = 2;
float z = 3;
optional float theta = 4;
}
// 负载尺寸
message LoadDimensions {
float length = 1;
float width = 2;
optional float height = 3;
}
// 控制点
message ControlPoint {
float x = 1;
float y = 2;
optional float weight = 3;
optional float orientation = 4;
}
// 轨迹
message Trajectory {
int64 degree = 1;
repeated float knotVector = 2;
repeated ControlPoint controlPoints = 3;
}
// 货叉状态
message ForkState {
float forkHeight = 1;
}
// 安全状态
message SafetyState {
string eStop = 1;
bool fieldViolation = 2;
}
// 电池状态
message BatteryState {
float batteryCharge = 1;
optional float batteryVoltage = 2;
optional uint32 batteryHealth = 3;
bool charging = 4;
optional float reach = 5;
}
// 可视化信息
message Visualization {
uint32 headerId = 1;
string timestamp = 2;
string version = 3;
string manufacturer = 4;
string serialNumber = 5;
optional AgvPosition agvPosition = 6;
optional Velocity velocity = 7;
}
// 控制消息从控制系统到AGV
message ControlMessage {
string targetAgvId = 1;
oneof message_type {
Order order = 2;
InstantActions instantActions = 3;
}
}
// AGV消息从AGV到控制系统
message AgvMessage {
string agvId = 1;
oneof message_type {
State state = 2;
Connection connection = 3;
Error error = 4;
Visualization visualization = 5;
Factsheet factsheet = 6;
}
}
// AGV 数据服务
service AgvDataService {
// 获取单个 AGV 的数据
rpc GetAgvData (GetAgvDataRequest) returns (AgvDataResponse) {}
// 获取所有 AGV 的数据
rpc GetAllAgvData (GetAllAgvDataRequest) returns (GetAllAgvDataResponse) {}
}
// 请求消息
message GetAgvDataRequest {
string agvId = 1;
}
message GetAllAgvDataRequest {
// 可以添加过滤条件
bool includeRealAgvs = 1;
bool includeSimulatedAgvs = 2;
}
// 响应消息
message AgvDataResponse {
string agvId = 1;
State state = 2;
uint32 timestamp = 3;
bool isReal = 4;
}
message GetAllAgvDataResponse {
repeated AgvDataResponse agvs = 1;
}
// Factsheet provides AGV factsheet information to master control
message Factsheet {
uint32 headerId = 1;
string timestamp = 2;
string version = 3;
string manufacturer = 4;
string serialNumber = 5;
TypeSpecification typeSpecification = 6;
PhysicalParameters physicalParameters = 7;
ProtocolLimits protocolLimits = 8;
ProtocolFeatures protocolFeatures = 9;
AgvGeometry agvGeometry = 10;
LoadSpecification loadSpecification = 11;
VehicleConfig vehicleConfig = 12;
}
message TypeSpecification {
string seriesName = 1;
optional string seriesDescription = 2;
string agvKinematic = 3;
string agvClass = 4;
double maxLoadMass = 5;
repeated string localizationTypes = 6;
repeated string navigationTypes = 7;
}
message PhysicalParameters {
double speedMin = 1;
double speedMax = 2;
optional double angularSpeedMin = 3;
optional double angularSpeedMax = 4;
double accelerationMax = 5;
double decelerationMax = 6;
double heightMin = 7;
double heightMax = 8;
double width = 9;
double length = 10;
}
message ProtocolLimits {
MaxStringLens maxStringLens = 1;
MaxArrayLens maxArrayLens = 2;
Timing timing = 3;
}
message MaxStringLens {
optional uint32 msgLen = 1;
optional uint32 topicSerialLen = 2;
optional uint32 topicElemLen = 3;
optional uint32 idLen = 4;
optional bool idNumericalOnly = 5;
optional uint32 enumLen = 6;
optional uint32 loadIdLen = 7;
}
message MaxArrayLens {
optional uint32 orderNodes = 1;
optional uint32 orderEdges = 2;
optional uint32 nodeActions = 3;
optional uint32 edgeActions = 4;
optional uint32 actionParameters = 5;
optional uint32 instantActions = 6;
optional uint32 trajectoryKnotVector = 7;
optional uint32 trajectoryControlPoints = 8;
optional uint32 stateNodeStates = 9;
optional uint32 stateEdgeStates = 10;
optional uint32 stateLoads = 11;
optional uint32 stateActionStates = 12;
optional uint32 stateErrors = 13;
optional uint32 stateInformation = 14;
optional uint32 errorErrorReferences = 15;
optional uint32 informationInfoReferences = 16;
}
message Timing {
optional float minOrderInterval = 1;
optional float minStateInterval = 2;
optional float defaultStateInterval = 3;
optional float visualizationInterval = 4;
}
message ProtocolFeatures {
repeated OptionalParameter optionalParameters = 1;
repeated AgvAction agvActions = 2;
}
message OptionalParameter {
string parameter = 1;
string support = 2;
optional string description = 3;
}
message AgvAction {
string actionType = 1;
optional string actionDescription = 2;
repeated string actionScopes = 3;
repeated ActionParameterDefinition actionParameters = 4;
optional string resultDescription = 5;
repeated string blockingTypes = 6;
}
message ActionParameterDefinition {
string key = 1;
string valueDataType = 2;
optional string description = 3;
optional bool isOptional = 4;
}
message AgvGeometry {
repeated WheelDefinition wheelDefinitions = 1;
repeated Envelope2d envelopes2d = 2;
repeated Envelope3d envelopes3d = 3;
}
message WheelDefinition {
string type = 1;
bool isActiveDriven = 2;
bool isActiveSteered = 3;
Position position = 4;
double diameter = 5;
double width = 6;
optional double centerDisplacement = 7;
optional string constraints = 8;
}
message Position {
double x = 1;
double y = 2;
optional double theta = 3;
}
message Envelope2d {
string set = 1;
repeated PolygonPoint polygonPoints = 2;
optional string description = 3;
}
message PolygonPoint {
double x = 1;
double y = 2;
}
message Envelope3d {
string set = 1;
string format = 2;
string data = 3;
optional string url = 4;
optional string description = 5;
}
message LoadSpecification {
repeated string loadPositions = 1;
repeated LoadSet loadSets = 2;
}
message LoadSet {
string setName = 1;
string loadType = 2;
repeated string loadPositions = 3;
BoundingBoxReference boundingBoxReference = 4;
LoadDimensions loadDimensions = 5;
optional double maxWeight = 6;
optional double minLoadhandlingHeight = 7;
optional double maxLoadhandlingHeight = 8;
optional double minLoadhandlingDepth = 9;
optional double maxLoadhandlingDepth = 10;
optional double minLoadhandlingTilt = 11;
optional double maxLoadhandlingTilt = 12;
optional double agvSpeedLimit = 13;
optional double agvAccelerationLimit = 14;
optional double agvDecelerationLimit = 15;
optional double pickTime = 16;
optional double dropTime = 17;
optional string description = 18;
}
message VehicleConfig {
repeated VersionInfo versions = 1;
optional NetworkInfo network = 2;
}
message VersionInfo {
string key = 1;
string value = 2;
}
message NetworkInfo {
repeated string dnsServers = 1;
repeated string ntpServers = 2;
string localIpAddress = 3;
string netmask = 4;
string defaultGateway = 5;
}