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+ * 通用请求头。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+ * 仅表示控制器是否接受命令,不表示平移已经完成。 + *+ * + *
.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+ * 仅表示控制器是否接受命令,不表示平移已经完成。 + *+ * + *
.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+ * 按指定速度执行固定距离平移命令。 + *+ * + * Protobuf type {@code cmvr.api.AgvTranslateCommand} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder
+ * 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。 + *+ */ + public void translate(cmvr.api.AgvCommand.AgvTranslateCommand.Request request, + io.grpc.stub.StreamObserver
+ * 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。 + *+ */ + public void translate(cmvr.api.AgvCommand.AgvTranslateCommand.Request request, + io.grpc.stub.StreamObserver
+ * 按指定速度平移固定距离。成功返回仅表示控制器已接受命令。 + *+ */ + 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
+ * 固定距离平移使用的距离参考模式。 + *+ * + * 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
* 地图维度请求。这里只描述上位机想要 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%。