From 1543a6fb9c7571821400bca05eeba5303257e4bc Mon Sep 17 00:00:00 2001 From: lixiaolong <702156524@qq.com> Date: Tue, 11 Aug 2026 15:16:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(agv):=20=E6=B7=BB=E5=8A=A0AGV=E5=9B=BA?= =?UTF-8?q?=E5=AE=9A=E8=B7=9D=E7=A6=BB=E5=B9=B3=E7=A7=BB=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 定义AgvTranslateCommand消息结构,包含请求和反馈 - 添加AgvTranslationMode枚举,支持里程和定位两种距离参考模式 - 定义AgvTranslation消息,包含距离、速度和平移模式参数 - 在AgvService服务中添加translate RPC方法 - 生成Java gRPC客户端和服务端代码实现 - 更新protobuf描述符以包含新的平移命令定义 --- .../service/impl/EdgeAgvServiceImpl.java | 3 + .../src/main/java/cmvr/api/AgvCommand.java | 2099 ++++++++++++++++- .../main/java/cmvr/api/AgvServiceGrpc.java | 86 + .../java/cmvr/api/AgvServiceOuterClass.java | 6 +- .../src/main/java/cmvr/msgs/AgvUtils.java | 1166 ++++++++- .../src/main/proto/cmvr/api/agv_command.proto | 17 + .../src/main/proto/cmvr/api/agv_service.proto | 4 + .../src/main/proto/cmvr/api/agv_utils.proto | 26 + 8 files changed, 3266 insertions(+), 141 deletions(-) diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeAgvServiceImpl.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeAgvServiceImpl.java index 20dc611..0eaecb4 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeAgvServiceImpl.java +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/src/main/java/com/cmvr/edge/client/service/impl/EdgeAgvServiceImpl.java @@ -90,6 +90,9 @@ public class EdgeAgvServiceImpl implements EdgeAgvService { edgeCommonVO.getRobotId(), AgvServiceGrpc.AgvServiceBlockingStub.class); AgvCommand.AgvNavigateToStationCommand.Request request = AgvCommand.AgvNavigateToStationCommand.Request.newBuilder() .setHeader(EdgeCommonUtil.buildRequest(edgeCommonVO.getDeviceId())) + .setOptions(AgvUtils.AgvMotionOptions.newBuilder() + .setAsynchronous(true) + .build()) .setStationId(stationId) .build(); executeGrpcCall(() -> stub.navigateToStation(request)); diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvCommand.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvCommand.java index 475c480..2c72111 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvCommand.java +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvCommand.java @@ -11432,6 +11432,1985 @@ public final class AgvCommand { } + public interface AgvTranslateCommandOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.AgvTranslateCommand) + com.google.protobuf.MessageOrBuilder { + } + /** + *
+   * 按指定速度执行固定距离平移命令。
+   * 
+ * + * Protobuf type {@code cmvr.api.AgvTranslateCommand} + */ + public static final class AgvTranslateCommand extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.AgvTranslateCommand) + AgvTranslateCommandOrBuilder { + private static final long serialVersionUID = 0L; + // Use AgvTranslateCommand.newBuilder() to construct. + private AgvTranslateCommand(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AgvTranslateCommand() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AgvTranslateCommand(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.AgvCommand.AgvTranslateCommand.class, cmvr.api.AgvCommand.AgvTranslateCommand.Builder.class); + } + + public interface RequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.AgvTranslateCommand.Request) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 通用请求头。header.device_id 指定目标 AGV 设备。
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 通用请求头。header.device_id 指定目标 AGV 设备。
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Request getHeader(); + /** + *
+       * 通用请求头。header.device_id 指定目标 AGV 设备。
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder(); + + /** + *
+       * 固定距离平移参数。
+       * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + * @return Whether the translation field is set. + */ + boolean hasTranslation(); + /** + *
+       * 固定距离平移参数。
+       * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + * @return The translation. + */ + cmvr.msgs.AgvUtils.AgvTranslation getTranslation(); + /** + *
+       * 固定距离平移参数。
+       * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + cmvr.msgs.AgvUtils.AgvTranslationOrBuilder getTranslationOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.AgvTranslateCommand.Request} + */ + public static final class Request extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.AgvTranslateCommand.Request) + RequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use Request.newBuilder() to construct. + private Request(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Request() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Request(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.AgvCommand.AgvTranslateCommand.Request.class, cmvr.api.AgvCommand.AgvTranslateCommand.Request.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Request header_; + /** + *
+       * 通用请求头。header.device_id 指定目标 AGV 设备。
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 通用请求头。header.device_id 指定目标 AGV 设备。
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Request getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + /** + *
+       * 通用请求头。header.device_id 指定目标 AGV 设备。
+       * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + public static final int TRANSLATION_FIELD_NUMBER = 2; + private cmvr.msgs.AgvUtils.AgvTranslation translation_; + /** + *
+       * 固定距离平移参数。
+       * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + * @return Whether the translation field is set. + */ + @java.lang.Override + public boolean hasTranslation() { + return translation_ != null; + } + /** + *
+       * 固定距离平移参数。
+       * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + * @return The translation. + */ + @java.lang.Override + public cmvr.msgs.AgvUtils.AgvTranslation getTranslation() { + return translation_ == null ? cmvr.msgs.AgvUtils.AgvTranslation.getDefaultInstance() : translation_; + } + /** + *
+       * 固定距离平移参数。
+       * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + @java.lang.Override + public cmvr.msgs.AgvUtils.AgvTranslationOrBuilder getTranslationOrBuilder() { + return getTranslation(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + if (translation_ != null) { + output.writeMessage(2, getTranslation()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + if (translation_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getTranslation()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.AgvCommand.AgvTranslateCommand.Request)) { + return super.equals(obj); + } + cmvr.api.AgvCommand.AgvTranslateCommand.Request other = (cmvr.api.AgvCommand.AgvTranslateCommand.Request) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (hasTranslation() != other.hasTranslation()) return false; + if (hasTranslation()) { + if (!getTranslation() + .equals(other.getTranslation())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + if (hasTranslation()) { + hash = (37 * hash) + TRANSLATION_FIELD_NUMBER; + hash = (53 * hash) + getTranslation().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.AgvCommand.AgvTranslateCommand.Request prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.AgvTranslateCommand.Request} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.AgvTranslateCommand.Request) + cmvr.api.AgvCommand.AgvTranslateCommand.RequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Request_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Request_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.AgvCommand.AgvTranslateCommand.Request.class, cmvr.api.AgvCommand.AgvTranslateCommand.Request.Builder.class); + } + + // Construct using cmvr.api.AgvCommand.AgvTranslateCommand.Request.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + if (translationBuilder_ == null) { + translation_ = null; + } else { + translation_ = null; + translationBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Request_descriptor; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Request getDefaultInstanceForType() { + return cmvr.api.AgvCommand.AgvTranslateCommand.Request.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Request build() { + cmvr.api.AgvCommand.AgvTranslateCommand.Request result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Request buildPartial() { + cmvr.api.AgvCommand.AgvTranslateCommand.Request result = new cmvr.api.AgvCommand.AgvTranslateCommand.Request(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + if (translationBuilder_ == null) { + result.translation_ = translation_; + } else { + result.translation_ = translationBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.AgvCommand.AgvTranslateCommand.Request) { + return mergeFrom((cmvr.api.AgvCommand.AgvTranslateCommand.Request)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.AgvCommand.AgvTranslateCommand.Request other) { + if (other == cmvr.api.AgvCommand.AgvTranslateCommand.Request.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + if (other.hasTranslation()) { + mergeTranslation(other.getTranslation()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + case 18: { + input.readMessage( + getTranslationFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Request header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> headerBuilder_; + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Request getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Request.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Request value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Request.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.Request.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + public cmvr.api.Common.CommandHeader.RequestOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Request.getDefaultInstance() : header_; + } + } + /** + *
+         * 通用请求头。header.device_id 指定目标 AGV 设备。
+         * 
+ * + * .cmvr.api.CommandHeader.Request header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Request.Builder, cmvr.api.Common.CommandHeader.RequestOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + + private cmvr.msgs.AgvUtils.AgvTranslation translation_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.msgs.AgvUtils.AgvTranslation, cmvr.msgs.AgvUtils.AgvTranslation.Builder, cmvr.msgs.AgvUtils.AgvTranslationOrBuilder> translationBuilder_; + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + * @return Whether the translation field is set. + */ + public boolean hasTranslation() { + return translationBuilder_ != null || translation_ != null; + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + * @return The translation. + */ + public cmvr.msgs.AgvUtils.AgvTranslation getTranslation() { + if (translationBuilder_ == null) { + return translation_ == null ? cmvr.msgs.AgvUtils.AgvTranslation.getDefaultInstance() : translation_; + } else { + return translationBuilder_.getMessage(); + } + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + public Builder setTranslation(cmvr.msgs.AgvUtils.AgvTranslation value) { + if (translationBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + translation_ = value; + onChanged(); + } else { + translationBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + public Builder setTranslation( + cmvr.msgs.AgvUtils.AgvTranslation.Builder builderForValue) { + if (translationBuilder_ == null) { + translation_ = builderForValue.build(); + onChanged(); + } else { + translationBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + public Builder mergeTranslation(cmvr.msgs.AgvUtils.AgvTranslation value) { + if (translationBuilder_ == null) { + if (translation_ != null) { + translation_ = + cmvr.msgs.AgvUtils.AgvTranslation.newBuilder(translation_).mergeFrom(value).buildPartial(); + } else { + translation_ = value; + } + onChanged(); + } else { + translationBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + public Builder clearTranslation() { + if (translationBuilder_ == null) { + translation_ = null; + onChanged(); + } else { + translation_ = null; + translationBuilder_ = null; + } + + return this; + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + public cmvr.msgs.AgvUtils.AgvTranslation.Builder getTranslationBuilder() { + + onChanged(); + return getTranslationFieldBuilder().getBuilder(); + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + public cmvr.msgs.AgvUtils.AgvTranslationOrBuilder getTranslationOrBuilder() { + if (translationBuilder_ != null) { + return translationBuilder_.getMessageOrBuilder(); + } else { + return translation_ == null ? + cmvr.msgs.AgvUtils.AgvTranslation.getDefaultInstance() : translation_; + } + } + /** + *
+         * 固定距离平移参数。
+         * 
+ * + * .cmvr.msgs.AgvTranslation translation = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.msgs.AgvUtils.AgvTranslation, cmvr.msgs.AgvUtils.AgvTranslation.Builder, cmvr.msgs.AgvUtils.AgvTranslationOrBuilder> + getTranslationFieldBuilder() { + if (translationBuilder_ == null) { + translationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.msgs.AgvUtils.AgvTranslation, cmvr.msgs.AgvUtils.AgvTranslation.Builder, cmvr.msgs.AgvUtils.AgvTranslationOrBuilder>( + getTranslation(), + getParentForChildren(), + isClean()); + translation_ = null; + } + return translationBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.AgvTranslateCommand.Request) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.AgvTranslateCommand.Request) + private static final cmvr.api.AgvCommand.AgvTranslateCommand.Request DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.AgvCommand.AgvTranslateCommand.Request(); + } + + public static cmvr.api.AgvCommand.AgvTranslateCommand.Request getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Request parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Request getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface FeedbackOrBuilder extends + // @@protoc_insertion_point(interface_extends:cmvr.api.AgvTranslateCommand.Feedback) + com.google.protobuf.MessageOrBuilder { + + /** + *
+       * 仅表示控制器是否接受命令,不表示平移已经完成。
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + *
+       * 仅表示控制器是否接受命令,不表示平移已经完成。
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + cmvr.api.Common.CommandHeader.Feedback getHeader(); + /** + *
+       * 仅表示控制器是否接受命令,不表示平移已经完成。
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder(); + } + /** + * Protobuf type {@code cmvr.api.AgvTranslateCommand.Feedback} + */ + public static final class Feedback extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.api.AgvTranslateCommand.Feedback) + FeedbackOrBuilder { + private static final long serialVersionUID = 0L; + // Use Feedback.newBuilder() to construct. + private Feedback(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Feedback() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Feedback(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.class, cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.Builder.class); + } + + public static final int HEADER_FIELD_NUMBER = 1; + private cmvr.api.Common.CommandHeader.Feedback header_; + /** + *
+       * 仅表示控制器是否接受命令,不表示平移已经完成。
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + *
+       * 仅表示控制器是否接受命令,不表示平移已经完成。
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + /** + *
+       * 仅表示控制器是否接受命令,不表示平移已经完成。
+       * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + @java.lang.Override + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + return getHeader(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (header_ != null) { + output.writeMessage(1, getHeader()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (header_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getHeader()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.AgvCommand.AgvTranslateCommand.Feedback)) { + return super.equals(obj); + } + cmvr.api.AgvCommand.AgvTranslateCommand.Feedback other = (cmvr.api.AgvCommand.AgvTranslateCommand.Feedback) obj; + + if (hasHeader() != other.hasHeader()) return false; + if (hasHeader()) { + if (!getHeader() + .equals(other.getHeader())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasHeader()) { + hash = (37 * hash) + HEADER_FIELD_NUMBER; + hash = (53 * hash) + getHeader().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.AgvCommand.AgvTranslateCommand.Feedback prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code cmvr.api.AgvTranslateCommand.Feedback} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.AgvTranslateCommand.Feedback) + cmvr.api.AgvCommand.AgvTranslateCommand.FeedbackOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Feedback_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Feedback_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.class, cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.Builder.class); + } + + // Construct using cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (headerBuilder_ == null) { + header_ = null; + } else { + header_ = null; + headerBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_Feedback_descriptor; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Feedback getDefaultInstanceForType() { + return cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Feedback build() { + cmvr.api.AgvCommand.AgvTranslateCommand.Feedback result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Feedback buildPartial() { + cmvr.api.AgvCommand.AgvTranslateCommand.Feedback result = new cmvr.api.AgvCommand.AgvTranslateCommand.Feedback(this); + if (headerBuilder_ == null) { + result.header_ = header_; + } else { + result.header_ = headerBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.AgvCommand.AgvTranslateCommand.Feedback) { + return mergeFrom((cmvr.api.AgvCommand.AgvTranslateCommand.Feedback)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.AgvCommand.AgvTranslateCommand.Feedback other) { + if (other == cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.getDefaultInstance()) return this; + if (other.hasHeader()) { + mergeHeader(other.getHeader()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getHeaderFieldBuilder().getBuilder(), + extensionRegistry); + + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private cmvr.api.Common.CommandHeader.Feedback header_; + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> headerBuilder_; + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return Whether the header field is set. + */ + public boolean hasHeader() { + return headerBuilder_ != null || header_ != null; + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + * @return The header. + */ + public cmvr.api.Common.CommandHeader.Feedback getHeader() { + if (headerBuilder_ == null) { + return header_ == null ? cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } else { + return headerBuilder_.getMessage(); + } + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + header_ = value; + onChanged(); + } else { + headerBuilder_.setMessage(value); + } + + return this; + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder setHeader( + cmvr.api.Common.CommandHeader.Feedback.Builder builderForValue) { + if (headerBuilder_ == null) { + header_ = builderForValue.build(); + onChanged(); + } else { + headerBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder mergeHeader(cmvr.api.Common.CommandHeader.Feedback value) { + if (headerBuilder_ == null) { + if (header_ != null) { + header_ = + cmvr.api.Common.CommandHeader.Feedback.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + onChanged(); + } else { + headerBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public Builder clearHeader() { + if (headerBuilder_ == null) { + header_ = null; + onChanged(); + } else { + header_ = null; + headerBuilder_ = null; + } + + return this; + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.Feedback.Builder getHeaderBuilder() { + + onChanged(); + return getHeaderFieldBuilder().getBuilder(); + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + public cmvr.api.Common.CommandHeader.FeedbackOrBuilder getHeaderOrBuilder() { + if (headerBuilder_ != null) { + return headerBuilder_.getMessageOrBuilder(); + } else { + return header_ == null ? + cmvr.api.Common.CommandHeader.Feedback.getDefaultInstance() : header_; + } + } + /** + *
+         * 仅表示控制器是否接受命令,不表示平移已经完成。
+         * 
+ * + * .cmvr.api.CommandHeader.Feedback header = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder> + getHeaderFieldBuilder() { + if (headerBuilder_ == null) { + headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + cmvr.api.Common.CommandHeader.Feedback, cmvr.api.Common.CommandHeader.Feedback.Builder, cmvr.api.Common.CommandHeader.FeedbackOrBuilder>( + getHeader(), + getParentForChildren(), + isClean()); + header_ = null; + } + return headerBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.AgvTranslateCommand.Feedback) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.AgvTranslateCommand.Feedback) + private static final cmvr.api.AgvCommand.AgvTranslateCommand.Feedback DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.AgvCommand.AgvTranslateCommand.Feedback(); + } + + public static cmvr.api.AgvCommand.AgvTranslateCommand.Feedback getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Feedback parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand.Feedback getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.api.AgvCommand.AgvTranslateCommand)) { + return super.equals(obj); + } + cmvr.api.AgvCommand.AgvTranslateCommand other = (cmvr.api.AgvCommand.AgvTranslateCommand) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.api.AgvCommand.AgvTranslateCommand parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.api.AgvCommand.AgvTranslateCommand prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * 按指定速度执行固定距离平移命令。
+     * 
+ * + * Protobuf type {@code cmvr.api.AgvTranslateCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.api.AgvTranslateCommand) + cmvr.api.AgvCommand.AgvTranslateCommandOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.api.AgvCommand.AgvTranslateCommand.class, cmvr.api.AgvCommand.AgvTranslateCommand.Builder.class); + } + + // Construct using cmvr.api.AgvCommand.AgvTranslateCommand.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.api.AgvCommand.internal_static_cmvr_api_AgvTranslateCommand_descriptor; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand getDefaultInstanceForType() { + return cmvr.api.AgvCommand.AgvTranslateCommand.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand build() { + cmvr.api.AgvCommand.AgvTranslateCommand result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand buildPartial() { + cmvr.api.AgvCommand.AgvTranslateCommand result = new cmvr.api.AgvCommand.AgvTranslateCommand(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.api.AgvCommand.AgvTranslateCommand) { + return mergeFrom((cmvr.api.AgvCommand.AgvTranslateCommand)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.api.AgvCommand.AgvTranslateCommand other) { + if (other == cmvr.api.AgvCommand.AgvTranslateCommand.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.api.AgvTranslateCommand) + } + + // @@protoc_insertion_point(class_scope:cmvr.api.AgvTranslateCommand) + private static final cmvr.api.AgvCommand.AgvTranslateCommand DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.api.AgvCommand.AgvTranslateCommand(); + } + + public static cmvr.api.AgvCommand.AgvTranslateCommand getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AgvTranslateCommand parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.api.AgvCommand.AgvTranslateCommand getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface AgvSetVelocityCommandOrBuilder extends // @@protoc_insertion_point(interface_extends:cmvr.api.AgvSetVelocityCommand) com.google.protobuf.MessageOrBuilder { @@ -25159,6 +27138,21 @@ public final class AgvCommand { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_cmvr_api_AgvFollowPathCommand_Feedback_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_AgvTranslateCommand_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_AgvTranslateCommand_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_AgvTranslateCommand_Request_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_AgvTranslateCommand_Request_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_api_AgvTranslateCommand_Feedback_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_api_AgvTranslateCommand_Feedback_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_cmvr_api_AgvSetVelocityCommand_descriptor; private static final @@ -25289,41 +27283,46 @@ public final class AgvCommand { "Request\022\'\n\004path\030\002 \003(\0132\031.cmvr.msgs.AgvPat" + "hSegment\022,\n\007options\030\003 \001(\0132\033.cmvr.msgs.Ag" + "vMotionOptions\032<\n\010Feedback\0220\n\006header\030\001 \001" + - "(\0132 .cmvr.api.CommandHeader.Feedback\"\273\001\n" + - "\025AgvSetVelocityCommand\032d\n\007Request\022/\n\006hea" + - "der\030\001 \001(\0132\037.cmvr.api.CommandHeader.Reque" + - "st\022(\n\010velocity\030\002 \001(\0132\026.cmvr.msgs.AgvVelo" + - "city\032<\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr." + - "api.CommandHeader.Feedback\"\234\001\n\022AgvListMa" + - "psCommand\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.c" + - "mvr.api.CommandHeader.Request\032J\n\010Feedbac" + - "k\0220\n\006header\030\001 \001(\0132 .cmvr.api.CommandHead" + - "er.Feedback\022\014\n\004maps\030\002 \003(\t\"\273\001\n\026AgvListSta" + - "tionsCommand\032:\n\007Request\022/\n\006header\030\001 \001(\0132" + - "\037.cmvr.api.CommandHeader.Request\032e\n\010Feed" + - "back\0220\n\006header\030\001 \001(\0132 .cmvr.api.CommandH" + - "eader.Feedback\022\'\n\010stations\030\002 \003(\0132\025.cmvr." + - "msgs.AgvStation\"\275\001\n\rAgvMapCommand\032]\n\007Req" + - "uest\022/\n\006header\030\001 \001(\0132\037.cmvr.api.CommandH" + - "eader.Request\022\020\n\010map_name\030\002 \001(\t\022\017\n\007conte" + - "nt\030\003 \001(\t\032M\n\010Feedback\0220\n\006header\030\001 \001(\0132 .c" + - "mvr.api.CommandHeader.Feedback\022\017\n\007conten" + - "t\030\002 \001(\t\"\373\001\n\026AgvStartMappingCommand\032\216\001\n\007R" + - "equest\022/\n\006header\030\001 \001(\0132\037.cmvr.api.Comman" + - "dHeader.Request\022-\n\tdimension\030\002 \001(\0162\032.cmv" + - "r.msgs.AgvMapDimension\022\020\n\010map_name\030\003 \001(\t" + - "\022\021\n\treal_time\030\004 \001(\010\032P\n\010Feedback\0220\n\006heade" + - "r\030\001 \001(\0132 .cmvr.api.CommandHeader.Feedbac" + - "k\022\022\n\nsession_id\030\002 \001(\t\"\327\002\n\023AgvMapStreamCo" + - "mmand\032\321\001\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr" + - ".api.CommandHeader.Request\022-\n\tdimension\030" + - "\002 \001(\0162\032.cmvr.msgs.AgvMapDimension\022\020\n\010map" + - "_name\030\003 \001(\t\022\024\n\014resume_token\030\004 \001(\t\022\020\n\010sna" + - "pshot\030\005 \001(\010\022\023\n\013incremental\030\006 \001(\010\022\027\n\017max_" + - "chunk_bytes\030\007 \001(\005\032l\n\010Feedback\0220\n\006header\030" + - "\001 \001(\0132 .cmvr.api.CommandHeader.Feedback\022" + - ".\n\006update\030\002 \001(\0132\036.cmvr.msgs.AgvUnifiedMa" + - "pUpdateb\006proto3" + "(\0132 .cmvr.api.CommandHeader.Feedback\"\277\001\n" + + "\023AgvTranslateCommand\032j\n\007Request\022/\n\006heade" + + "r\030\001 \001(\0132\037.cmvr.api.CommandHeader.Request" + + "\022.\n\013translation\030\002 \001(\0132\031.cmvr.msgs.AgvTra" + + "nslation\032<\n\010Feedback\0220\n\006header\030\001 \001(\0132 .c" + + "mvr.api.CommandHeader.Feedback\"\273\001\n\025AgvSe" + + "tVelocityCommand\032d\n\007Request\022/\n\006header\030\001 " + + "\001(\0132\037.cmvr.api.CommandHeader.Request\022(\n\010" + + "velocity\030\002 \001(\0132\026.cmvr.msgs.AgvVelocity\032<" + + "\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.api.Co" + + "mmandHeader.Feedback\"\234\001\n\022AgvListMapsComm" + + "and\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.ap" + + "i.CommandHeader.Request\032J\n\010Feedback\0220\n\006h" + + "eader\030\001 \001(\0132 .cmvr.api.CommandHeader.Fee" + + "dback\022\014\n\004maps\030\002 \003(\t\"\273\001\n\026AgvListStationsC" + + "ommand\032:\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr" + + ".api.CommandHeader.Request\032e\n\010Feedback\0220" + + "\n\006header\030\001 \001(\0132 .cmvr.api.CommandHeader." + + "Feedback\022\'\n\010stations\030\002 \003(\0132\025.cmvr.msgs.A" + + "gvStation\"\275\001\n\rAgvMapCommand\032]\n\007Request\022/" + + "\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHeader." + + "Request\022\020\n\010map_name\030\002 \001(\t\022\017\n\007content\030\003 \001" + + "(\t\032M\n\010Feedback\0220\n\006header\030\001 \001(\0132 .cmvr.ap" + + "i.CommandHeader.Feedback\022\017\n\007content\030\002 \001(" + + "\t\"\373\001\n\026AgvStartMappingCommand\032\216\001\n\007Request" + + "\022/\n\006header\030\001 \001(\0132\037.cmvr.api.CommandHeade" + + "r.Request\022-\n\tdimension\030\002 \001(\0162\032.cmvr.msgs" + + ".AgvMapDimension\022\020\n\010map_name\030\003 \001(\t\022\021\n\tre" + + "al_time\030\004 \001(\010\032P\n\010Feedback\0220\n\006header\030\001 \001(" + + "\0132 .cmvr.api.CommandHeader.Feedback\022\022\n\ns" + + "ession_id\030\002 \001(\t\"\327\002\n\023AgvMapStreamCommand\032" + + "\321\001\n\007Request\022/\n\006header\030\001 \001(\0132\037.cmvr.api.C" + + "ommandHeader.Request\022-\n\tdimension\030\002 \001(\0162" + + "\032.cmvr.msgs.AgvMapDimension\022\020\n\010map_name\030" + + "\003 \001(\t\022\024\n\014resume_token\030\004 \001(\t\022\020\n\010snapshot\030" + + "\005 \001(\010\022\023\n\013incremental\030\006 \001(\010\022\027\n\017max_chunk_" + + "bytes\030\007 \001(\005\032l\n\010Feedback\0220\n\006header\030\001 \001(\0132" + + " .cmvr.api.CommandHeader.Feedback\022.\n\006upd" + + "ate\030\002 \001(\0132\036.cmvr.msgs.AgvUnifiedMapUpdat" + + "eb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -25421,8 +27420,26 @@ public final class AgvCommand { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_api_AgvFollowPathCommand_Feedback_descriptor, new java.lang.String[] { "Header", }); - internal_static_cmvr_api_AgvSetVelocityCommand_descriptor = + internal_static_cmvr_api_AgvTranslateCommand_descriptor = getDescriptor().getMessageTypes().get(5); + internal_static_cmvr_api_AgvTranslateCommand_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_AgvTranslateCommand_descriptor, + new java.lang.String[] { }); + internal_static_cmvr_api_AgvTranslateCommand_Request_descriptor = + internal_static_cmvr_api_AgvTranslateCommand_descriptor.getNestedTypes().get(0); + internal_static_cmvr_api_AgvTranslateCommand_Request_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_AgvTranslateCommand_Request_descriptor, + new java.lang.String[] { "Header", "Translation", }); + internal_static_cmvr_api_AgvTranslateCommand_Feedback_descriptor = + internal_static_cmvr_api_AgvTranslateCommand_descriptor.getNestedTypes().get(1); + internal_static_cmvr_api_AgvTranslateCommand_Feedback_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_api_AgvTranslateCommand_Feedback_descriptor, + new java.lang.String[] { "Header", }); + internal_static_cmvr_api_AgvSetVelocityCommand_descriptor = + getDescriptor().getMessageTypes().get(6); internal_static_cmvr_api_AgvSetVelocityCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_api_AgvSetVelocityCommand_descriptor, @@ -25440,7 +27457,7 @@ public final class AgvCommand { internal_static_cmvr_api_AgvSetVelocityCommand_Feedback_descriptor, new java.lang.String[] { "Header", }); internal_static_cmvr_api_AgvListMapsCommand_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(7); internal_static_cmvr_api_AgvListMapsCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_api_AgvListMapsCommand_descriptor, @@ -25458,7 +27475,7 @@ public final class AgvCommand { internal_static_cmvr_api_AgvListMapsCommand_Feedback_descriptor, new java.lang.String[] { "Header", "Maps", }); internal_static_cmvr_api_AgvListStationsCommand_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_cmvr_api_AgvListStationsCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_api_AgvListStationsCommand_descriptor, @@ -25476,7 +27493,7 @@ public final class AgvCommand { internal_static_cmvr_api_AgvListStationsCommand_Feedback_descriptor, new java.lang.String[] { "Header", "Stations", }); internal_static_cmvr_api_AgvMapCommand_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_cmvr_api_AgvMapCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_api_AgvMapCommand_descriptor, @@ -25494,7 +27511,7 @@ public final class AgvCommand { internal_static_cmvr_api_AgvMapCommand_Feedback_descriptor, new java.lang.String[] { "Header", "Content", }); internal_static_cmvr_api_AgvStartMappingCommand_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_cmvr_api_AgvStartMappingCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_api_AgvStartMappingCommand_descriptor, @@ -25512,7 +27529,7 @@ public final class AgvCommand { internal_static_cmvr_api_AgvStartMappingCommand_Feedback_descriptor, new java.lang.String[] { "Header", "SessionId", }); internal_static_cmvr_api_AgvMapStreamCommand_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_cmvr_api_AgvMapStreamCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_api_AgvMapStreamCommand_descriptor, diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceGrpc.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceGrpc.java index c521f20..0ea7ebf 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceGrpc.java +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceGrpc.java @@ -639,6 +639,37 @@ public final class AgvServiceGrpc { return getStopMappingMethod; } + private static volatile io.grpc.MethodDescriptor getTranslateMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "translate", + requestType = cmvr.api.AgvCommand.AgvTranslateCommand.Request.class, + responseType = cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getTranslateMethod() { + io.grpc.MethodDescriptor getTranslateMethod; + if ((getTranslateMethod = AgvServiceGrpc.getTranslateMethod) == null) { + synchronized (AgvServiceGrpc.class) { + if ((getTranslateMethod = AgvServiceGrpc.getTranslateMethod) == null) { + AgvServiceGrpc.getTranslateMethod = getTranslateMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "translate")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.AgvCommand.AgvTranslateCommand.Request.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + cmvr.api.AgvCommand.AgvTranslateCommand.Feedback.getDefaultInstance())) + .setSchemaDescriptor(new AgvServiceMethodDescriptorSupplier("translate")) + .build(); + } + } + } + return getTranslateMethod; + } + /** * Creates a new async stub that supports all call types for the service */ @@ -893,6 +924,16 @@ public final class AgvServiceGrpc { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStopMappingMethod(), responseObserver); } + /** + *
+     * 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。
+     * 
+ */ + public void translate(cmvr.api.AgvCommand.AgvTranslateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getTranslateMethod(), responseObserver); + } + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) .addMethod( @@ -1035,6 +1076,13 @@ public final class AgvServiceGrpc { cmvr.api.Common.CommandHeader.Request, cmvr.api.Common.CommandHeader.Feedback>( this, METHODID_STOP_MAPPING))) + .addMethod( + getTranslateMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + cmvr.api.AgvCommand.AgvTranslateCommand.Request, + cmvr.api.AgvCommand.AgvTranslateCommand.Feedback>( + this, METHODID_TRANSLATE))) .build(); } } @@ -1278,6 +1326,17 @@ public final class AgvServiceGrpc { io.grpc.stub.ClientCalls.asyncUnaryCall( getChannel().newCall(getStopMappingMethod(), getCallOptions()), request, responseObserver); } + + /** + *
+     * 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。
+     * 
+ */ + public void translate(cmvr.api.AgvCommand.AgvTranslateCommand.Request request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getTranslateMethod(), getCallOptions()), request, responseObserver); + } } /** @@ -1500,6 +1559,16 @@ public final class AgvServiceGrpc { return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getStopMappingMethod(), getCallOptions(), request); } + + /** + *
+     * 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。
+     * 
+ */ + public cmvr.api.AgvCommand.AgvTranslateCommand.Feedback translate(cmvr.api.AgvCommand.AgvTranslateCommand.Request request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getTranslateMethod(), getCallOptions(), request); + } } /** @@ -1729,6 +1798,17 @@ public final class AgvServiceGrpc { return io.grpc.stub.ClientCalls.futureUnaryCall( getChannel().newCall(getStopMappingMethod(), getCallOptions()), request); } + + /** + *
+     * 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture translate( + cmvr.api.AgvCommand.AgvTranslateCommand.Request request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getTranslateMethod(), getCallOptions()), request); + } } private static final int METHODID_GET_RUNTIME_STATE = 0; @@ -1751,6 +1831,7 @@ public final class AgvServiceGrpc { private static final int METHODID_START_MAPPING = 17; private static final int METHODID_STREAM_MAP = 18; private static final int METHODID_STOP_MAPPING = 19; + private static final int METHODID_TRANSLATE = 20; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -1849,6 +1930,10 @@ public final class AgvServiceGrpc { serviceImpl.stopMapping((cmvr.api.Common.CommandHeader.Request) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_TRANSLATE: + serviceImpl.translate((cmvr.api.AgvCommand.AgvTranslateCommand.Request) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; default: throw new AssertionError(); } @@ -1930,6 +2015,7 @@ public final class AgvServiceGrpc { .addMethod(getStartMappingMethod()) .addMethod(getStreamMapMethod()) .addMethod(getStopMappingMethod()) + .addMethod(getTranslateMethod()) .build(); } } diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceOuterClass.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceOuterClass.java index 747a975..acbffd8 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceOuterClass.java +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/api/AgvServiceOuterClass.java @@ -25,7 +25,7 @@ public final class AgvServiceOuterClass { java.lang.String[] descriptorData = { "\n\032cmvr/api/agv_service.proto\022\010cmvr.api\032\025" + "cmvr/api/common.proto\032\032cmvr/api/agv_comm" + - "and.proto2\320\016\n\nAgvService\022f\n\017getRuntimeSt" + + "and.proto2\254\017\n\nAgvService\022f\n\017getRuntimeSt" + "ate\022(.cmvr.api.AgvRuntimeStateCommand.Re" + "quest\032).cmvr.api.AgvRuntimeStateCommand." + "Feedback\022r\n\023getNavigationStatus\022,.cmvr.a" + @@ -72,7 +72,9 @@ public final class AgvServiceOuterClass { "\032&.cmvr.api.AgvMapStreamCommand.Feedback" + "0\001\022P\n\013stopMapping\022\037.cmvr.api.CommandHead" + "er.Request\032 .cmvr.api.CommandHeader.Feed" + - "backb\006proto3" + "back\022Z\n\ttranslate\022%.cmvr.api.AgvTranslat" + + "eCommand.Request\032&.cmvr.api.AgvTranslate" + + "Command.Feedbackb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/msgs/AgvUtils.java b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/msgs/AgvUtils.java index 2a49bd2..58525a4 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/msgs/AgvUtils.java +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/java/cmvr/msgs/AgvUtils.java @@ -14,6 +14,134 @@ public final class AgvUtils { registerAllExtensions( (com.google.protobuf.ExtensionRegistryLite) registry); } + /** + *
+   * 固定距离平移使用的距离参考模式。
+   * 
+ * + * Protobuf enum {@code cmvr.msgs.AgvTranslationMode} + */ + public enum AgvTranslationMode + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+     * 根据底盘里程计算运动距离。
+     * 
+ * + * AGV_TRANSLATION_MODE_ODOMETRY = 0; + */ + AGV_TRANSLATION_MODE_ODOMETRY(0), + /** + *
+     * 根据定位结果计算运动距离。
+     * 
+ * + * AGV_TRANSLATION_MODE_LOCALIZATION = 1; + */ + AGV_TRANSLATION_MODE_LOCALIZATION(1), + UNRECOGNIZED(-1), + ; + + /** + *
+     * 根据底盘里程计算运动距离。
+     * 
+ * + * AGV_TRANSLATION_MODE_ODOMETRY = 0; + */ + public static final int AGV_TRANSLATION_MODE_ODOMETRY_VALUE = 0; + /** + *
+     * 根据定位结果计算运动距离。
+     * 
+ * + * AGV_TRANSLATION_MODE_LOCALIZATION = 1; + */ + public static final int AGV_TRANSLATION_MODE_LOCALIZATION_VALUE = 1; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static AgvTranslationMode valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static AgvTranslationMode forNumber(int value) { + switch (value) { + case 0: return AGV_TRANSLATION_MODE_ODOMETRY; + case 1: return AGV_TRANSLATION_MODE_LOCALIZATION; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + AgvTranslationMode> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public AgvTranslationMode findValueByNumber(int number) { + return AgvTranslationMode.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return cmvr.msgs.AgvUtils.getDescriptor().getEnumTypes().get(0); + } + + private static final AgvTranslationMode[] VALUES = values(); + + public static AgvTranslationMode valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private AgvTranslationMode(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:cmvr.msgs.AgvTranslationMode) + } + /** *
    * 地图维度请求。这里只描述上位机想要 2D、3D 还是二者都要,
@@ -151,7 +279,7 @@ public final class AgvUtils {
     }
     public static final com.google.protobuf.Descriptors.EnumDescriptor
         getDescriptor() {
-      return cmvr.msgs.AgvUtils.getDescriptor().getEnumTypes().get(0);
+      return cmvr.msgs.AgvUtils.getDescriptor().getEnumTypes().get(1);
     }
 
     private static final AgvMapDimension[] VALUES = values();
@@ -313,7 +441,7 @@ public final class AgvUtils {
     }
     public static final com.google.protobuf.Descriptors.EnumDescriptor
         getDescriptor() {
-      return cmvr.msgs.AgvUtils.getDescriptor().getEnumTypes().get(1);
+      return cmvr.msgs.AgvUtils.getDescriptor().getEnumTypes().get(2);
     }
 
     private static final AgvMapUpdateType[] VALUES = values();
@@ -543,7 +671,7 @@ public final class AgvUtils {
     }
     public static final com.google.protobuf.Descriptors.EnumDescriptor
         getDescriptor() {
-      return cmvr.msgs.AgvUtils.getDescriptor().getEnumTypes().get(2);
+      return cmvr.msgs.AgvUtils.getDescriptor().getEnumTypes().get(3);
     }
 
     private static final AgvMapObjectType[] VALUES = values();
@@ -1253,6 +1381,832 @@ public final class AgvUtils {
 
   }
 
+  public interface AgvTranslationOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:cmvr.msgs.AgvTranslation)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * 
+     * 平移距离的绝对值,单位:米,必须大于 0。
+     * 
+ * + * double distance = 1; + * @return The distance. + */ + double getDistance(); + + /** + *
+     * 车体 X 方向速度,单位:米/秒;正为向前,负为向后。
+     * 
+ * + * double vx = 2; + * @return The vx. + */ + double getVx(); + + /** + *
+     * 车体 Y 方向速度,单位:米/秒;正为向左,负为向右。
+     * 
+ * + * double vy = 3; + * @return The vy. + */ + double getVy(); + + /** + *
+     * 距离参考模式;默认使用里程模式。
+     * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @return The enum numeric value on the wire for mode. + */ + int getModeValue(); + /** + *
+     * 距离参考模式;默认使用里程模式。
+     * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @return The mode. + */ + cmvr.msgs.AgvUtils.AgvTranslationMode getMode(); + } + /** + *
+   * AGV 车体坐标系下的固定距离平移参数。
+   * 
+ * + * Protobuf type {@code cmvr.msgs.AgvTranslation} + */ + public static final class AgvTranslation extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:cmvr.msgs.AgvTranslation) + AgvTranslationOrBuilder { + private static final long serialVersionUID = 0L; + // Use AgvTranslation.newBuilder() to construct. + private AgvTranslation(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AgvTranslation() { + mode_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AgvTranslation(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.msgs.AgvUtils.internal_static_cmvr_msgs_AgvTranslation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.msgs.AgvUtils.internal_static_cmvr_msgs_AgvTranslation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.msgs.AgvUtils.AgvTranslation.class, cmvr.msgs.AgvUtils.AgvTranslation.Builder.class); + } + + public static final int DISTANCE_FIELD_NUMBER = 1; + private double distance_; + /** + *
+     * 平移距离的绝对值,单位:米,必须大于 0。
+     * 
+ * + * double distance = 1; + * @return The distance. + */ + @java.lang.Override + public double getDistance() { + return distance_; + } + + public static final int VX_FIELD_NUMBER = 2; + private double vx_; + /** + *
+     * 车体 X 方向速度,单位:米/秒;正为向前,负为向后。
+     * 
+ * + * double vx = 2; + * @return The vx. + */ + @java.lang.Override + public double getVx() { + return vx_; + } + + public static final int VY_FIELD_NUMBER = 3; + private double vy_; + /** + *
+     * 车体 Y 方向速度,单位:米/秒;正为向左,负为向右。
+     * 
+ * + * double vy = 3; + * @return The vy. + */ + @java.lang.Override + public double getVy() { + return vy_; + } + + public static final int MODE_FIELD_NUMBER = 4; + private int mode_; + /** + *
+     * 距离参考模式;默认使用里程模式。
+     * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @return The enum numeric value on the wire for mode. + */ + @java.lang.Override public int getModeValue() { + return mode_; + } + /** + *
+     * 距离参考模式;默认使用里程模式。
+     * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @return The mode. + */ + @java.lang.Override public cmvr.msgs.AgvUtils.AgvTranslationMode getMode() { + @SuppressWarnings("deprecation") + cmvr.msgs.AgvUtils.AgvTranslationMode result = cmvr.msgs.AgvUtils.AgvTranslationMode.valueOf(mode_); + return result == null ? cmvr.msgs.AgvUtils.AgvTranslationMode.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (java.lang.Double.doubleToRawLongBits(distance_) != 0) { + output.writeDouble(1, distance_); + } + if (java.lang.Double.doubleToRawLongBits(vx_) != 0) { + output.writeDouble(2, vx_); + } + if (java.lang.Double.doubleToRawLongBits(vy_) != 0) { + output.writeDouble(3, vy_); + } + if (mode_ != cmvr.msgs.AgvUtils.AgvTranslationMode.AGV_TRANSLATION_MODE_ODOMETRY.getNumber()) { + output.writeEnum(4, mode_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (java.lang.Double.doubleToRawLongBits(distance_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, distance_); + } + if (java.lang.Double.doubleToRawLongBits(vx_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, vx_); + } + if (java.lang.Double.doubleToRawLongBits(vy_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(3, vy_); + } + if (mode_ != cmvr.msgs.AgvUtils.AgvTranslationMode.AGV_TRANSLATION_MODE_ODOMETRY.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, mode_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof cmvr.msgs.AgvUtils.AgvTranslation)) { + return super.equals(obj); + } + cmvr.msgs.AgvUtils.AgvTranslation other = (cmvr.msgs.AgvUtils.AgvTranslation) obj; + + if (java.lang.Double.doubleToLongBits(getDistance()) + != java.lang.Double.doubleToLongBits( + other.getDistance())) return false; + if (java.lang.Double.doubleToLongBits(getVx()) + != java.lang.Double.doubleToLongBits( + other.getVx())) return false; + if (java.lang.Double.doubleToLongBits(getVy()) + != java.lang.Double.doubleToLongBits( + other.getVy())) return false; + if (mode_ != other.mode_) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DISTANCE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getDistance())); + hash = (37 * hash) + VX_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getVx())); + hash = (37 * hash) + VY_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getVy())); + hash = (37 * hash) + MODE_FIELD_NUMBER; + hash = (53 * hash) + mode_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static cmvr.msgs.AgvUtils.AgvTranslation parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(cmvr.msgs.AgvUtils.AgvTranslation prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * AGV 车体坐标系下的固定距离平移参数。
+     * 
+ * + * Protobuf type {@code cmvr.msgs.AgvTranslation} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:cmvr.msgs.AgvTranslation) + cmvr.msgs.AgvUtils.AgvTranslationOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return cmvr.msgs.AgvUtils.internal_static_cmvr_msgs_AgvTranslation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return cmvr.msgs.AgvUtils.internal_static_cmvr_msgs_AgvTranslation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + cmvr.msgs.AgvUtils.AgvTranslation.class, cmvr.msgs.AgvUtils.AgvTranslation.Builder.class); + } + + // Construct using cmvr.msgs.AgvUtils.AgvTranslation.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + distance_ = 0D; + + vx_ = 0D; + + vy_ = 0D; + + mode_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return cmvr.msgs.AgvUtils.internal_static_cmvr_msgs_AgvTranslation_descriptor; + } + + @java.lang.Override + public cmvr.msgs.AgvUtils.AgvTranslation getDefaultInstanceForType() { + return cmvr.msgs.AgvUtils.AgvTranslation.getDefaultInstance(); + } + + @java.lang.Override + public cmvr.msgs.AgvUtils.AgvTranslation build() { + cmvr.msgs.AgvUtils.AgvTranslation result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public cmvr.msgs.AgvUtils.AgvTranslation buildPartial() { + cmvr.msgs.AgvUtils.AgvTranslation result = new cmvr.msgs.AgvUtils.AgvTranslation(this); + result.distance_ = distance_; + result.vx_ = vx_; + result.vy_ = vy_; + result.mode_ = mode_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof cmvr.msgs.AgvUtils.AgvTranslation) { + return mergeFrom((cmvr.msgs.AgvUtils.AgvTranslation)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(cmvr.msgs.AgvUtils.AgvTranslation other) { + if (other == cmvr.msgs.AgvUtils.AgvTranslation.getDefaultInstance()) return this; + if (other.getDistance() != 0D) { + setDistance(other.getDistance()); + } + if (other.getVx() != 0D) { + setVx(other.getVx()); + } + if (other.getVy() != 0D) { + setVy(other.getVy()); + } + if (other.mode_ != 0) { + setModeValue(other.getModeValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 9: { + distance_ = input.readDouble(); + + break; + } // case 9 + case 17: { + vx_ = input.readDouble(); + + break; + } // case 17 + case 25: { + vy_ = input.readDouble(); + + break; + } // case 25 + case 32: { + mode_ = input.readEnum(); + + break; + } // case 32 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private double distance_ ; + /** + *
+       * 平移距离的绝对值,单位:米,必须大于 0。
+       * 
+ * + * double distance = 1; + * @return The distance. + */ + @java.lang.Override + public double getDistance() { + return distance_; + } + /** + *
+       * 平移距离的绝对值,单位:米,必须大于 0。
+       * 
+ * + * double distance = 1; + * @param value The distance to set. + * @return This builder for chaining. + */ + public Builder setDistance(double value) { + + distance_ = value; + onChanged(); + return this; + } + /** + *
+       * 平移距离的绝对值,单位:米,必须大于 0。
+       * 
+ * + * double distance = 1; + * @return This builder for chaining. + */ + public Builder clearDistance() { + + distance_ = 0D; + onChanged(); + return this; + } + + private double vx_ ; + /** + *
+       * 车体 X 方向速度,单位:米/秒;正为向前,负为向后。
+       * 
+ * + * double vx = 2; + * @return The vx. + */ + @java.lang.Override + public double getVx() { + return vx_; + } + /** + *
+       * 车体 X 方向速度,单位:米/秒;正为向前,负为向后。
+       * 
+ * + * double vx = 2; + * @param value The vx to set. + * @return This builder for chaining. + */ + public Builder setVx(double value) { + + vx_ = value; + onChanged(); + return this; + } + /** + *
+       * 车体 X 方向速度,单位:米/秒;正为向前,负为向后。
+       * 
+ * + * double vx = 2; + * @return This builder for chaining. + */ + public Builder clearVx() { + + vx_ = 0D; + onChanged(); + return this; + } + + private double vy_ ; + /** + *
+       * 车体 Y 方向速度,单位:米/秒;正为向左,负为向右。
+       * 
+ * + * double vy = 3; + * @return The vy. + */ + @java.lang.Override + public double getVy() { + return vy_; + } + /** + *
+       * 车体 Y 方向速度,单位:米/秒;正为向左,负为向右。
+       * 
+ * + * double vy = 3; + * @param value The vy to set. + * @return This builder for chaining. + */ + public Builder setVy(double value) { + + vy_ = value; + onChanged(); + return this; + } + /** + *
+       * 车体 Y 方向速度,单位:米/秒;正为向左,负为向右。
+       * 
+ * + * double vy = 3; + * @return This builder for chaining. + */ + public Builder clearVy() { + + vy_ = 0D; + onChanged(); + return this; + } + + private int mode_ = 0; + /** + *
+       * 距离参考模式;默认使用里程模式。
+       * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @return The enum numeric value on the wire for mode. + */ + @java.lang.Override public int getModeValue() { + return mode_; + } + /** + *
+       * 距离参考模式;默认使用里程模式。
+       * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @param value The enum numeric value on the wire for mode to set. + * @return This builder for chaining. + */ + public Builder setModeValue(int value) { + + mode_ = value; + onChanged(); + return this; + } + /** + *
+       * 距离参考模式;默认使用里程模式。
+       * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @return The mode. + */ + @java.lang.Override + public cmvr.msgs.AgvUtils.AgvTranslationMode getMode() { + @SuppressWarnings("deprecation") + cmvr.msgs.AgvUtils.AgvTranslationMode result = cmvr.msgs.AgvUtils.AgvTranslationMode.valueOf(mode_); + return result == null ? cmvr.msgs.AgvUtils.AgvTranslationMode.UNRECOGNIZED : result; + } + /** + *
+       * 距离参考模式;默认使用里程模式。
+       * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @param value The mode to set. + * @return This builder for chaining. + */ + public Builder setMode(cmvr.msgs.AgvUtils.AgvTranslationMode value) { + if (value == null) { + throw new NullPointerException(); + } + + mode_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * 距离参考模式;默认使用里程模式。
+       * 
+ * + * .cmvr.msgs.AgvTranslationMode mode = 4; + * @return This builder for chaining. + */ + public Builder clearMode() { + + mode_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:cmvr.msgs.AgvTranslation) + } + + // @@protoc_insertion_point(class_scope:cmvr.msgs.AgvTranslation) + private static final cmvr.msgs.AgvUtils.AgvTranslation DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new cmvr.msgs.AgvUtils.AgvTranslation(); + } + + public static cmvr.msgs.AgvUtils.AgvTranslation getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AgvTranslation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public cmvr.msgs.AgvUtils.AgvTranslation getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface AgvVelocityOrBuilder extends // @@protoc_insertion_point(interface_extends:cmvr.msgs.AgvVelocity) com.google.protobuf.MessageOrBuilder { @@ -22664,6 +23618,11 @@ java.lang.String defaultValue); private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_cmvr_msgs_AgvPose2d_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_cmvr_msgs_AgvTranslation_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_cmvr_msgs_AgvTranslation_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_cmvr_msgs_AgvVelocity_descriptor; private static final @@ -22765,85 +23724,90 @@ java.lang.String defaultValue); java.lang.String[] descriptorData = { "\n\030cmvr/api/agv_utils.proto\022\tcmvr.msgs\"0\n" + "\tAgvPose2d\022\t\n\001x\030\001 \001(\001\022\t\n\001y\030\002 \001(\001\022\r\n\005thet" + - "a\030\003 \001(\001\"1\n\013AgvVelocity\022\n\n\002vx\030\001 \001(\001\022\n\n\002vy" + - "\030\002 \001(\001\022\n\n\002wz\030\003 \001(\001\"n\n\017AgvBatteryState\022\022\n" + - "\npercentage\030\001 \001(\001\022\017\n\007voltage\030\002 \001(\001\022\017\n\007cu" + - "rrent\030\003 \001(\001\022\023\n\013temperature\030\004 \001(\001\022\020\n\010char" + - "ging\030\005 \001(\010\"\207\002\n\020AgvMotionOptions\022\021\n\tmax_s" + - "peed\030\001 \001(\001\022\031\n\021max_angular_speed\030\002 \001(\001\022\030\n" + - "\020max_acceleration\030\003 \001(\001\022 \n\030max_angular_a" + - "cceleration\030\004 \001(\001\022\026\n\016reach_distance\030\005 \001(" + - "\001\022\023\n\013reach_angle\030\006 \001(\001\022\023\n\013speed_ratio\030\007 " + - "\001(\001\022\024\n\014asynchronous\030\010 \001(\010\022\027\n\017wait_timeou" + - "t_ms\030\t \001(\005\022\030\n\020poll_interval_ms\030\n \001(\005\"z\n\020" + - "AgvAdapterParams\0227\n\006values\030\001 \003(\0132\'.cmvr." + - "msgs.AgvAdapterParams.ValuesEntry\032-\n\013Val" + - "uesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001" + - "\"\317\002\n\017AgvRuntimeState\022\021\n\ttimestamp\030\001 \001(\001\022" + - "\014\n\004mode\030\002 \001(\005\022\021\n\tconnected\030\003 \001(\010\022\021\n\tloca" + - "lized\030\004 \001(\010\022\016\n\006moving\030\005 \001(\010\022\r\n\005fault\030\006 \001" + - "(\010\022\031\n\021emergency_stopped\030\007 \001(\010\022\"\n\004pose\030\010 " + - "\001(\0132\024.cmvr.msgs.AgvPose2d\022(\n\010velocity\030\t " + - "\001(\0132\026.cmvr.msgs.AgvVelocity\022+\n\007battery\030\n" + - " \001(\0132\032.cmvr.msgs.AgvBatteryState\022\023\n\013curr" + - "ent_map\030\013 \001(\t\022\027\n\017current_station\030\014 \001(\t\022\022" + - "\n\nlast_error\030\r \001(\t\"_\n\nAgvStation\022\n\n\002id\030\001" + - " \001(\t\022\014\n\004type\030\002 \001(\t\022\"\n\004pose\030\003 \001(\0132\024.cmvr." + - "msgs.AgvPose2d\022\023\n\013description\030\004 \001(\t\"@\n\016A" + - "gvPathSegment\022\026\n\016source_station\030\001 \001(\t\022\026\n" + - "\016target_station\030\002 \001(\t\"0\n\rAgvMapPoint3D\022\t" + - "\n\001x\030\001 \001(\001\022\t\n\001y\030\002 \001(\001\022\t\n\001z\030\003 \001(\001\"\307\001\n\017AgvU" + - "nifiedMap2D\022\020\n\010frame_id\030\001 \001(\t\022\021\n\ttimesta" + - "mp\030\002 \001(\001\022\022\n\nresolution\030\003 \001(\001\022\r\n\005width\030\004 " + - "\001(\r\022\016\n\006height\030\005 \001(\r\022$\n\006origin\030\006 \001(\0132\024.cm" + - "vr.msgs.AgvPose2d\022\014\n\004data\030\007 \003(\005\022(\n\007objec" + - "ts\030\010 \003(\0132\027.cmvr.msgs.AgvMapObject\"l\n\023Agv" + - "MapPointSample3D\022\t\n\001x\030\001 \001(\001\022\t\n\001y\030\002 \001(\001\022\t" + - "\n\001z\030\003 \001(\001\022\021\n\tintensity\030\004 \001(\002\022\014\n\004ring\030\005 \001" + - "(\r\022\023\n\013time_offset\030\006 \001(\001\"E\n\rAgvMapVoxel3D" + - "\022\t\n\001x\030\001 \001(\005\022\t\n\001y\030\002 \001(\005\022\t\n\001z\030\003 \001(\005\022\023\n\013pro" + - "bability\030\004 \001(\002\"~\n\rAgvMapPlane3D\022(\n\006cente" + - "r\030\001 \001(\0132\030.cmvr.msgs.AgvMapPoint3D\022(\n\006nor" + - "mal\030\002 \001(\0132\030.cmvr.msgs.AgvMapPoint3D\022\t\n\001d" + - "\030\003 \001(\001\022\016\n\006radius\030\004 \001(\001\"\360\001\n\014AgvMapObject\022" + - "\n\n\002id\030\001 \001(\t\022)\n\004type\030\002 \001(\0162\033.cmvr.msgs.Ag" + - "vMapObjectType\022(\n\006points\030\003 \003(\0132\030.cmvr.ms" + - "gs.AgvMapPoint3D\022\017\n\007heading\030\004 \001(\001\022;\n\npro" + - "perties\030\005 \003(\0132\'.cmvr.msgs.AgvMapObject.P" + - "ropertiesEntry\0321\n\017PropertiesEntry\022\013\n\003key" + - "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\376\001\n\017AgvUnified" + - "Map3D\022\020\n\010frame_id\030\001 \001(\t\022\021\n\ttimestamp\030\002 \001" + - "(\001\022\030\n\020voxel_resolution\030\003 \001(\001\022.\n\006points\030\004" + - " \003(\0132\036.cmvr.msgs.AgvMapPointSample3D\022(\n\006" + - "voxels\030\005 \003(\0132\030.cmvr.msgs.AgvMapVoxel3D\022(" + - "\n\006planes\030\006 \003(\0132\030.cmvr.msgs.AgvMapPlane3D" + - "\022(\n\007objects\030\007 \003(\0132\027.cmvr.msgs.AgvMapObje" + - "ct\"\246\003\n\023AgvUnifiedMapUpdate\022\016\n\006map_id\030\001 \001" + - "(\t\022\022\n\nsession_id\030\002 \001(\t\022\020\n\010sequence\030\003 \001(\004" + - "\022\024\n\014resume_token\030\004 \001(\t\022-\n\tdimension\030\005 \001(" + - "\0162\032.cmvr.msgs.AgvMapDimension\0220\n\013update_" + - "type\030\006 \001(\0162\033.cmvr.msgs.AgvMapUpdateType\022" + - "\020\n\010frame_id\030\007 \001(\t\022\021\n\ttimestamp\030\010 \001(\001\022\026\n\016" + - "snapshot_begin\030\t \001(\010\022\024\n\014snapshot_end\030\n \001" + - "(\010\022\023\n\013chunk_index\030\013 \001(\r\022\023\n\013chunk_count\030\014" + - " \001(\r\022,\n\006map_2d\030\024 \001(\0132\032.cmvr.msgs.AgvUnif" + - "iedMap2DH\000\022,\n\006map_3d\030\025 \001(\0132\032.cmvr.msgs.A" + - "gvUnifiedMap3DH\000B\t\n\007payload\"U\n\023AgvNaviga" + - "tionStatus\022\r\n\005state\030\001 \001(\005\022\014\n\004type\030\002 \001(\005\022" + - "\020\n\010progress\030\003 \001(\001\022\017\n\007message\030\004 \001(\t*k\n\017Ag" + - "vMapDimension\022!\n\035AGV_MAP_DIMENSION_UNSPE" + - "CIFIED\020\000\022\016\n\nAGV_MAP_2D\020\001\022\016\n\nAGV_MAP_3D\020\002" + - "\022\025\n\021AGV_MAP_2D_AND_3D\020\003*\211\001\n\020AgvMapUpdate" + - "Type\022\036\n\032AGV_MAP_UPDATE_UNSPECIFIED\020\000\022\033\n\027" + - "AGV_MAP_UPDATE_SNAPSHOT\020\001\022\036\n\032AGV_MAP_UPD" + - "ATE_INCREMENTAL\020\002\022\030\n\024AGV_MAP_UPDATE_RESE" + - "T\020\003*\376\001\n\020AgvMapObjectType\022\036\n\032AGV_MAP_OBJE" + - "CT_UNSPECIFIED\020\000\022\032\n\026AGV_MAP_OBJECT_STATI" + - "ON\020\001\022\027\n\023AGV_MAP_OBJECT_LINE\020\002\022\027\n\023AGV_MAP" + - "_OBJECT_AREA\020\003\022\031\n\025AGV_MAP_OBJECT_QR_TAG\020" + - "\004\022\034\n\030AGV_MAP_OBJECT_REFLECTOR\020\005\022\037\n\033AGV_M" + - "AP_OBJECT_BIN_LOCATION\020\006\022\"\n\036AGV_MAP_OBJE" + - "CT_EXTERNAL_DEVICE\020\007b\006proto3" + "a\030\003 \001(\001\"g\n\016AgvTranslation\022\020\n\010distance\030\001 " + + "\001(\001\022\n\n\002vx\030\002 \001(\001\022\n\n\002vy\030\003 \001(\001\022+\n\004mode\030\004 \001(" + + "\0162\035.cmvr.msgs.AgvTranslationMode\"1\n\013AgvV" + + "elocity\022\n\n\002vx\030\001 \001(\001\022\n\n\002vy\030\002 \001(\001\022\n\n\002wz\030\003 " + + "\001(\001\"n\n\017AgvBatteryState\022\022\n\npercentage\030\001 \001" + + "(\001\022\017\n\007voltage\030\002 \001(\001\022\017\n\007current\030\003 \001(\001\022\023\n\013" + + "temperature\030\004 \001(\001\022\020\n\010charging\030\005 \001(\010\"\207\002\n\020" + + "AgvMotionOptions\022\021\n\tmax_speed\030\001 \001(\001\022\031\n\021m" + + "ax_angular_speed\030\002 \001(\001\022\030\n\020max_accelerati" + + "on\030\003 \001(\001\022 \n\030max_angular_acceleration\030\004 \001" + + "(\001\022\026\n\016reach_distance\030\005 \001(\001\022\023\n\013reach_angl" + + "e\030\006 \001(\001\022\023\n\013speed_ratio\030\007 \001(\001\022\024\n\014asynchro" + + "nous\030\010 \001(\010\022\027\n\017wait_timeout_ms\030\t \001(\005\022\030\n\020p" + + "oll_interval_ms\030\n \001(\005\"z\n\020AgvAdapterParam" + + "s\0227\n\006values\030\001 \003(\0132\'.cmvr.msgs.AgvAdapter" + + "Params.ValuesEntry\032-\n\013ValuesEntry\022\013\n\003key" + + "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\317\002\n\017AgvRuntime" + + "State\022\021\n\ttimestamp\030\001 \001(\001\022\014\n\004mode\030\002 \001(\005\022\021" + + "\n\tconnected\030\003 \001(\010\022\021\n\tlocalized\030\004 \001(\010\022\016\n\006" + + "moving\030\005 \001(\010\022\r\n\005fault\030\006 \001(\010\022\031\n\021emergency" + + "_stopped\030\007 \001(\010\022\"\n\004pose\030\010 \001(\0132\024.cmvr.msgs" + + ".AgvPose2d\022(\n\010velocity\030\t \001(\0132\026.cmvr.msgs" + + ".AgvVelocity\022+\n\007battery\030\n \001(\0132\032.cmvr.msg" + + "s.AgvBatteryState\022\023\n\013current_map\030\013 \001(\t\022\027" + + "\n\017current_station\030\014 \001(\t\022\022\n\nlast_error\030\r " + + "\001(\t\"_\n\nAgvStation\022\n\n\002id\030\001 \001(\t\022\014\n\004type\030\002 " + + "\001(\t\022\"\n\004pose\030\003 \001(\0132\024.cmvr.msgs.AgvPose2d\022" + + "\023\n\013description\030\004 \001(\t\"@\n\016AgvPathSegment\022\026" + + "\n\016source_station\030\001 \001(\t\022\026\n\016target_station" + + "\030\002 \001(\t\"0\n\rAgvMapPoint3D\022\t\n\001x\030\001 \001(\001\022\t\n\001y\030" + + "\002 \001(\001\022\t\n\001z\030\003 \001(\001\"\307\001\n\017AgvUnifiedMap2D\022\020\n\010" + + "frame_id\030\001 \001(\t\022\021\n\ttimestamp\030\002 \001(\001\022\022\n\nres" + + "olution\030\003 \001(\001\022\r\n\005width\030\004 \001(\r\022\016\n\006height\030\005" + + " \001(\r\022$\n\006origin\030\006 \001(\0132\024.cmvr.msgs.AgvPose" + + "2d\022\014\n\004data\030\007 \003(\005\022(\n\007objects\030\010 \003(\0132\027.cmvr" + + ".msgs.AgvMapObject\"l\n\023AgvMapPointSample3" + + "D\022\t\n\001x\030\001 \001(\001\022\t\n\001y\030\002 \001(\001\022\t\n\001z\030\003 \001(\001\022\021\n\tin" + + "tensity\030\004 \001(\002\022\014\n\004ring\030\005 \001(\r\022\023\n\013time_offs" + + "et\030\006 \001(\001\"E\n\rAgvMapVoxel3D\022\t\n\001x\030\001 \001(\005\022\t\n\001" + + "y\030\002 \001(\005\022\t\n\001z\030\003 \001(\005\022\023\n\013probability\030\004 \001(\002\"" + + "~\n\rAgvMapPlane3D\022(\n\006center\030\001 \001(\0132\030.cmvr." + + "msgs.AgvMapPoint3D\022(\n\006normal\030\002 \001(\0132\030.cmv" + + "r.msgs.AgvMapPoint3D\022\t\n\001d\030\003 \001(\001\022\016\n\006radiu" + + "s\030\004 \001(\001\"\360\001\n\014AgvMapObject\022\n\n\002id\030\001 \001(\t\022)\n\004" + + "type\030\002 \001(\0162\033.cmvr.msgs.AgvMapObjectType\022" + + "(\n\006points\030\003 \003(\0132\030.cmvr.msgs.AgvMapPoint3" + + "D\022\017\n\007heading\030\004 \001(\001\022;\n\nproperties\030\005 \003(\0132\'" + + ".cmvr.msgs.AgvMapObject.PropertiesEntry\032" + + "1\n\017PropertiesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value" + + "\030\002 \001(\t:\0028\001\"\376\001\n\017AgvUnifiedMap3D\022\020\n\010frame_" + + "id\030\001 \001(\t\022\021\n\ttimestamp\030\002 \001(\001\022\030\n\020voxel_res" + + "olution\030\003 \001(\001\022.\n\006points\030\004 \003(\0132\036.cmvr.msg" + + "s.AgvMapPointSample3D\022(\n\006voxels\030\005 \003(\0132\030." + + "cmvr.msgs.AgvMapVoxel3D\022(\n\006planes\030\006 \003(\0132" + + "\030.cmvr.msgs.AgvMapPlane3D\022(\n\007objects\030\007 \003" + + "(\0132\027.cmvr.msgs.AgvMapObject\"\246\003\n\023AgvUnifi" + + "edMapUpdate\022\016\n\006map_id\030\001 \001(\t\022\022\n\nsession_i" + + "d\030\002 \001(\t\022\020\n\010sequence\030\003 \001(\004\022\024\n\014resume_toke" + + "n\030\004 \001(\t\022-\n\tdimension\030\005 \001(\0162\032.cmvr.msgs.A" + + "gvMapDimension\0220\n\013update_type\030\006 \001(\0162\033.cm" + + "vr.msgs.AgvMapUpdateType\022\020\n\010frame_id\030\007 \001" + + "(\t\022\021\n\ttimestamp\030\010 \001(\001\022\026\n\016snapshot_begin\030" + + "\t \001(\010\022\024\n\014snapshot_end\030\n \001(\010\022\023\n\013chunk_ind" + + "ex\030\013 \001(\r\022\023\n\013chunk_count\030\014 \001(\r\022,\n\006map_2d\030" + + "\024 \001(\0132\032.cmvr.msgs.AgvUnifiedMap2DH\000\022,\n\006m" + + "ap_3d\030\025 \001(\0132\032.cmvr.msgs.AgvUnifiedMap3DH" + + "\000B\t\n\007payload\"U\n\023AgvNavigationStatus\022\r\n\005s" + + "tate\030\001 \001(\005\022\014\n\004type\030\002 \001(\005\022\020\n\010progress\030\003 \001" + + "(\001\022\017\n\007message\030\004 \001(\t*^\n\022AgvTranslationMod" + + "e\022!\n\035AGV_TRANSLATION_MODE_ODOMETRY\020\000\022%\n!" + + "AGV_TRANSLATION_MODE_LOCALIZATION\020\001*k\n\017A" + + "gvMapDimension\022!\n\035AGV_MAP_DIMENSION_UNSP" + + "ECIFIED\020\000\022\016\n\nAGV_MAP_2D\020\001\022\016\n\nAGV_MAP_3D\020" + + "\002\022\025\n\021AGV_MAP_2D_AND_3D\020\003*\211\001\n\020AgvMapUpdat" + + "eType\022\036\n\032AGV_MAP_UPDATE_UNSPECIFIED\020\000\022\033\n" + + "\027AGV_MAP_UPDATE_SNAPSHOT\020\001\022\036\n\032AGV_MAP_UP" + + "DATE_INCREMENTAL\020\002\022\030\n\024AGV_MAP_UPDATE_RES" + + "ET\020\003*\376\001\n\020AgvMapObjectType\022\036\n\032AGV_MAP_OBJ" + + "ECT_UNSPECIFIED\020\000\022\032\n\026AGV_MAP_OBJECT_STAT" + + "ION\020\001\022\027\n\023AGV_MAP_OBJECT_LINE\020\002\022\027\n\023AGV_MA" + + "P_OBJECT_AREA\020\003\022\031\n\025AGV_MAP_OBJECT_QR_TAG" + + "\020\004\022\034\n\030AGV_MAP_OBJECT_REFLECTOR\020\005\022\037\n\033AGV_" + + "MAP_OBJECT_BIN_LOCATION\020\006\022\"\n\036AGV_MAP_OBJ" + + "ECT_EXTERNAL_DEVICE\020\007b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -22855,26 +23819,32 @@ java.lang.String defaultValue); com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvPose2d_descriptor, new java.lang.String[] { "X", "Y", "Theta", }); - internal_static_cmvr_msgs_AgvVelocity_descriptor = + internal_static_cmvr_msgs_AgvTranslation_descriptor = getDescriptor().getMessageTypes().get(1); + internal_static_cmvr_msgs_AgvTranslation_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_cmvr_msgs_AgvTranslation_descriptor, + new java.lang.String[] { "Distance", "Vx", "Vy", "Mode", }); + internal_static_cmvr_msgs_AgvVelocity_descriptor = + getDescriptor().getMessageTypes().get(2); internal_static_cmvr_msgs_AgvVelocity_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvVelocity_descriptor, new java.lang.String[] { "Vx", "Vy", "Wz", }); internal_static_cmvr_msgs_AgvBatteryState_descriptor = - getDescriptor().getMessageTypes().get(2); + getDescriptor().getMessageTypes().get(3); internal_static_cmvr_msgs_AgvBatteryState_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvBatteryState_descriptor, new java.lang.String[] { "Percentage", "Voltage", "Current", "Temperature", "Charging", }); internal_static_cmvr_msgs_AgvMotionOptions_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(4); internal_static_cmvr_msgs_AgvMotionOptions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvMotionOptions_descriptor, new java.lang.String[] { "MaxSpeed", "MaxAngularSpeed", "MaxAcceleration", "MaxAngularAcceleration", "ReachDistance", "ReachAngle", "SpeedRatio", "Asynchronous", "WaitTimeoutMs", "PollIntervalMs", }); internal_static_cmvr_msgs_AgvAdapterParams_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(5); internal_static_cmvr_msgs_AgvAdapterParams_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvAdapterParams_descriptor, @@ -22886,55 +23856,55 @@ java.lang.String defaultValue); internal_static_cmvr_msgs_AgvAdapterParams_ValuesEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_cmvr_msgs_AgvRuntimeState_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(6); internal_static_cmvr_msgs_AgvRuntimeState_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvRuntimeState_descriptor, new java.lang.String[] { "Timestamp", "Mode", "Connected", "Localized", "Moving", "Fault", "EmergencyStopped", "Pose", "Velocity", "Battery", "CurrentMap", "CurrentStation", "LastError", }); internal_static_cmvr_msgs_AgvStation_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(7); internal_static_cmvr_msgs_AgvStation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvStation_descriptor, new java.lang.String[] { "Id", "Type", "Pose", "Description", }); internal_static_cmvr_msgs_AgvPathSegment_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_cmvr_msgs_AgvPathSegment_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvPathSegment_descriptor, new java.lang.String[] { "SourceStation", "TargetStation", }); internal_static_cmvr_msgs_AgvMapPoint3D_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_cmvr_msgs_AgvMapPoint3D_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvMapPoint3D_descriptor, new java.lang.String[] { "X", "Y", "Z", }); internal_static_cmvr_msgs_AgvUnifiedMap2D_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_cmvr_msgs_AgvUnifiedMap2D_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvUnifiedMap2D_descriptor, new java.lang.String[] { "FrameId", "Timestamp", "Resolution", "Width", "Height", "Origin", "Data", "Objects", }); internal_static_cmvr_msgs_AgvMapPointSample3D_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_cmvr_msgs_AgvMapPointSample3D_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvMapPointSample3D_descriptor, new java.lang.String[] { "X", "Y", "Z", "Intensity", "Ring", "TimeOffset", }); internal_static_cmvr_msgs_AgvMapVoxel3D_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(12); internal_static_cmvr_msgs_AgvMapVoxel3D_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvMapVoxel3D_descriptor, new java.lang.String[] { "X", "Y", "Z", "Probability", }); internal_static_cmvr_msgs_AgvMapPlane3D_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(13); internal_static_cmvr_msgs_AgvMapPlane3D_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvMapPlane3D_descriptor, new java.lang.String[] { "Center", "Normal", "D", "Radius", }); internal_static_cmvr_msgs_AgvMapObject_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(14); internal_static_cmvr_msgs_AgvMapObject_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvMapObject_descriptor, @@ -22946,19 +23916,19 @@ java.lang.String defaultValue); internal_static_cmvr_msgs_AgvMapObject_PropertiesEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_cmvr_msgs_AgvUnifiedMap3D_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(15); internal_static_cmvr_msgs_AgvUnifiedMap3D_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvUnifiedMap3D_descriptor, new java.lang.String[] { "FrameId", "Timestamp", "VoxelResolution", "Points", "Voxels", "Planes", "Objects", }); internal_static_cmvr_msgs_AgvUnifiedMapUpdate_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(16); internal_static_cmvr_msgs_AgvUnifiedMapUpdate_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvUnifiedMapUpdate_descriptor, new java.lang.String[] { "MapId", "SessionId", "Sequence", "ResumeToken", "Dimension", "UpdateType", "FrameId", "Timestamp", "SnapshotBegin", "SnapshotEnd", "ChunkIndex", "ChunkCount", "Map2D", "Map3D", "Payload", }); internal_static_cmvr_msgs_AgvNavigationStatus_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(17); internal_static_cmvr_msgs_AgvNavigationStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_cmvr_msgs_AgvNavigationStatus_descriptor, diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_command.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_command.proto index 81c7676..b434d50 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_command.proto +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_command.proto @@ -95,6 +95,23 @@ message AgvFollowPathCommand { } } + +// 按指定速度执行固定距离平移命令。 +message AgvTranslateCommand { + message Request { + // 通用请求头。header.device_id 指定目标 AGV 设备。 + CommandHeader.Request header = 1; + // 固定距离平移参数。 + cmvr.msgs.AgvTranslation translation = 2; + } + + message Feedback { + // 仅表示控制器是否接受命令,不表示平移已经完成。 + CommandHeader.Feedback header = 1; + } +} + + // 下发底盘速度命令。 message AgvSetVelocityCommand { // 请求体。 diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_service.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_service.proto index f0bdc5b..b1b01e7 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_service.proto +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_service.proto @@ -69,4 +69,8 @@ service AgvService { // 停止当前建图/扫图会话。 rpc stopMapping(CommandHeader.Request) returns (CommandHeader.Feedback); + + + // 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。 + rpc translate(AgvTranslateCommand.Request) returns (AgvTranslateCommand.Feedback); } diff --git a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_utils.proto b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_utils.proto index e3f697a..c05f1a7 100644 --- a/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_utils.proto +++ b/cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/src/main/proto/cmvr/api/agv_utils.proto @@ -14,6 +14,29 @@ message AgvPose2d { double theta = 3; } +// 固定距离平移使用的距离参考模式。 +enum AgvTranslationMode { + // 根据底盘里程计算运动距离。 + AGV_TRANSLATION_MODE_ODOMETRY = 0; + // 根据定位结果计算运动距离。 + AGV_TRANSLATION_MODE_LOCALIZATION = 1; +} + + + +// AGV 车体坐标系下的固定距离平移参数。 +message AgvTranslation { + // 平移距离的绝对值,单位:米,必须大于 0。 + double distance = 1; + // 车体 X 方向速度,单位:米/秒;正为向前,负为向后。 + double vx = 2; + // 车体 Y 方向速度,单位:米/秒;正为向左,负为向右。 + double vy = 3; + // 距离参考模式;默认使用里程模式。 + AgvTranslationMode mode = 4; +} + + // AGV 车体坐标系下的平面速度。 message AgvVelocity { // 车体 X 方向线速度,单位:米/秒。 @@ -24,6 +47,9 @@ message AgvVelocity { double wz = 3; } + + + // AGV 电池状态。 message AgvBatteryState { // 电量比例,范围:[0, 1],例如 0.8 表示 80%。