3 Коміти a099d59f09 ... f0d062d4c2

Автор SHA1 Опис Дата
  yct f0d062d4c2 20221101 chutian 2 роки тому
  yct bc3158a63a measure proto add ground status 2 роки тому
  yct f16555df62 measure msg for rabbitmq updated 2 роки тому

+ 1 - 0
main.cpp

@@ -139,6 +139,7 @@ int main(int argc,char* argv[])
 		LOG(ERROR) << "system communication mq init failed: " << ec.to_string();
 		return -1;
 	}
+	System_communication_mq::get_instance_references().set_encapsulate_status_cycle_time(100);
 
 	// prev_test_pred_task();
 	// test_whole_process();

+ 704 - 47
message/measure_message.pb.cc

@@ -60,6 +60,11 @@ class Ground_status_msgDefaultTypeInternal {
   ::google::protobuf::internal::ExplicitlyConstructed<Ground_status_msg>
       _instance;
 } _Ground_status_msg_default_instance_;
+class measure_infoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<measure_info>
+      _instance;
+} _measure_info_default_instance_;
 class Cloud_coordinateDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<Cloud_coordinate>
@@ -186,6 +191,20 @@ static void InitDefaultsGround_status_msg() {
       &protobuf_message_5fbase_2eproto::scc_info_Error_manager.base,
       &protobuf_measure_5fmessage_2eproto::scc_info_Cloud_coordinate.base,}};
 
+static void InitDefaultsmeasure_info() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::message::_measure_info_default_instance_;
+    new (ptr) ::message::measure_info();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::message::measure_info::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_measure_info =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsmeasure_info}, {}};
+
 static void InitDefaultsCloud_coordinate() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
@@ -256,13 +275,14 @@ void InitDefaults() {
   ::google::protobuf::internal::InitSCC(&scc_info_Ground_detect_request_msg.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Ground_detect_response_msg.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Ground_status_msg.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_measure_info.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Cloud_coordinate.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Cloud_type.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Locate_sift_request_msg.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Locate_sift_response_msg.base);
 }
 
-::google::protobuf::Metadata file_level_metadata[10];
+::google::protobuf::Metadata file_level_metadata[11];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[7];
 
 const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
@@ -360,6 +380,31 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   7,
   3,
   ~0u,
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, _has_bits_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, cx_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, cy_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, theta_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, length_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, width_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, height_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, wheelbase_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, front_theta_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, border_statu_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::measure_info, ground_status_),
+  0,
+  1,
+  2,
+  3,
+  4,
+  5,
+  6,
+  7,
+  8,
+  9,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Cloud_coordinate, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Cloud_coordinate, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -418,10 +463,11 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROT
   { 43, 51, sizeof(::message::Ground_detect_request_msg)},
   { 54, 64, sizeof(::message::Ground_detect_response_msg)},
   { 69, 84, sizeof(::message::Ground_status_msg)},
-  { 94, 102, sizeof(::message::Cloud_coordinate)},
-  { 105, 111, sizeof(::message::Cloud_type)},
-  { 112, 122, sizeof(::message::Locate_sift_request_msg)},
-  { 127, 138, sizeof(::message::Locate_sift_response_msg)},
+  { 94, 109, sizeof(::message::measure_info)},
+  { 119, 127, sizeof(::message::Cloud_coordinate)},
+  { 130, 136, sizeof(::message::Cloud_type)},
+  { 137, 147, sizeof(::message::Locate_sift_request_msg)},
+  { 152, 163, sizeof(::message::Locate_sift_response_msg)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -431,6 +477,7 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Ground_detect_request_msg_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Ground_detect_response_msg_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Ground_status_msg_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::message::_measure_info_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Cloud_coordinate_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Cloud_type_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Locate_sift_request_msg_default_instance_),
@@ -452,7 +499,7 @@ void protobuf_AssignDescriptorsOnce() {
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
 void protobuf_RegisterTypes(const ::std::string&) {
   protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 10);
+  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 11);
 }
 
 void AddDescriptorsImpl() {
@@ -498,49 +545,54 @@ void AddDescriptorsImpl() {
       "round_statu\022\025\n\rborder_status\030\010 \002(\005\022-\n\rer"
       "ror_manager\030\t \002(\0132\026.message.Error_manage"
       "r\022(\n\005cloud\030\n \003(\0132\031.message.Cloud_coordin"
-      "ate\"3\n\020Cloud_coordinate\022\t\n\001x\030\001 \002(\002\022\t\n\001y\030"
-      "\002 \002(\002\022\t\n\001z\030\003 \002(\002\"\032\n\nCloud_type\022\014\n\004type\030\001"
-      " \002(\005\"\304\001\n\027Locate_sift_request_msg\022%\n\tbase"
-      "_info\030\001 \002(\0132\022.message.Base_info\022\023\n\013comma"
-      "nd_key\030\002 \002(\t\022%\n\tid_struct\030\003 \002(\0132\022.messag"
-      "e.Id_struct\022\020\n\010lidar_id\030\004 \002(\005\0224\n\021cloud_c"
-      "oordinates\030\005 \003(\0132\031.message.Cloud_coordin"
-      "ate\"\347\001\n\030Locate_sift_response_msg\022%\n\tbase"
-      "_info\030\001 \002(\0132\022.message.Base_info\022\023\n\013comma"
-      "nd_key\030\002 \002(\t\022%\n\tid_struct\030\003 \002(\0132\022.messag"
-      "e.Id_struct\022\020\n\010lidar_id\030\004 \002(\005\022\'\n\ncloud_t"
-      "ype\030\005 \003(\0132\023.message.Cloud_type\022-\n\rerror_"
-      "manager\030\006 \002(\0132\026.message.Error_manager*\237\001"
-      "\n\024Laser_manager_status\022\030\n\024LASER_MANAGER_"
-      "UNKNOW\020\000\022\027\n\023LASER_MANAGER_READY\020\001\022\035\n\031LAS"
-      "ER_MANAGER_ISSUED_TASK\020\002\022\034\n\030LASER_MANAGE"
-      "R_WAIT_REPLY\020\003\022\027\n\023LASER_MANAGER_FAULT\020\004*"
-      "U\n\013Laser_statu\022\024\n\020LASER_DISCONNECT\020\000\022\017\n\013"
-      "LASER_READY\020\001\022\016\n\nLASER_BUSY\020\002\022\017\n\013LASER_F"
-      "AULT\020\003*\261\001\n\025Locate_manager_status\022\031\n\025LOCA"
-      "TE_MANAGER_UNKNOW\020\000\022\030\n\024LOCATE_MANAGER_RE"
-      "ADY\020\001\022\027\n\023LOCATE_MANAGER_SIFT\020\002\022\026\n\022LOCATE"
-      "_MANAGER_CAR\020\003\022\030\n\024LOCATE_MANAGER_WHEEL\020\004"
-      "\022\030\n\024LOCATE_MANAGER_FAULT\020\005*\367\001\n\024Wanji_man"
-      "ager_status\022\031\n\025WANJI_MANAGER_UNKNOWN\020\000\022\027"
-      "\n\023WANJI_MANAGER_READY\020\001\022\026\n\022WANJI_MANAGER"
-      "_BUSY\020\002\022\035\n\031WANJI_MANAGER_ISSUED_SCAN\020\003\022\033"
-      "\n\027WANJI_MANAGER_WAIT_SCAN\020\004\022\037\n\033WANJI_MAN"
-      "AGER_ISSUED_DETECT\020\005\022\035\n\031WANJI_MANAGER_WA"
-      "IT_DETECT\020\006\022\027\n\023WANJI_MANAGER_FAULT\020\n*\267\001\n"
-      "\031Wanji_lidar_device_status\022\036\n\032WANJI_LIDA"
-      "R_DEVICE_UNKNOWN\020\000\022\034\n\030WANJI_LIDAR_DEVICE"
-      "_READY\020\001\022!\n\035WANJI_LIDAR_DEVICE_DISCONNEC"
-      "T\020\002\022\033\n\027WANJI_LIDAR_DEVICE_BUSY\020\003\022\034\n\030WANJ"
-      "I_LIDAR_DEVICE_FAULT\020\n*{\n\024Region_worker_"
-      "status\022\031\n\025REGION_WORKER_UNKNOWN\020\000\022\027\n\023REG"
-      "ION_WORKER_READY\020\001\022\026\n\022REGION_WORKER_BUSY"
-      "\020\002\022\027\n\023REGION_WORKER_FAULT\020\n*O\n\014Ground_st"
-      "atu\022\013\n\007Nothing\020\000\022\t\n\005Noise\020\001\022\017\n\013Car_corre"
-      "ct\020\002\022\026\n\022Car_border_reached\020\003"
+      "ate\"\271\001\n\014measure_info\022\n\n\002cx\030\001 \002(\002\022\n\n\002cy\030\002"
+      " \002(\002\022\r\n\005theta\030\003 \002(\002\022\016\n\006length\030\004 \002(\002\022\r\n\005w"
+      "idth\030\005 \002(\002\022\016\n\006height\030\006 \002(\002\022\021\n\twheelbase\030"
+      "\007 \002(\002\022\023\n\013front_theta\030\010 \002(\002\022\024\n\014border_sta"
+      "tu\030\t \002(\005\022\025\n\rground_status\030\n \002(\005\"3\n\020Cloud"
+      "_coordinate\022\t\n\001x\030\001 \002(\002\022\t\n\001y\030\002 \002(\002\022\t\n\001z\030\003"
+      " \002(\002\"\032\n\nCloud_type\022\014\n\004type\030\001 \002(\005\"\304\001\n\027Loc"
+      "ate_sift_request_msg\022%\n\tbase_info\030\001 \002(\0132"
+      "\022.message.Base_info\022\023\n\013command_key\030\002 \002(\t"
+      "\022%\n\tid_struct\030\003 \002(\0132\022.message.Id_struct\022"
+      "\020\n\010lidar_id\030\004 \002(\005\0224\n\021cloud_coordinates\030\005"
+      " \003(\0132\031.message.Cloud_coordinate\"\347\001\n\030Loca"
+      "te_sift_response_msg\022%\n\tbase_info\030\001 \002(\0132"
+      "\022.message.Base_info\022\023\n\013command_key\030\002 \002(\t"
+      "\022%\n\tid_struct\030\003 \002(\0132\022.message.Id_struct\022"
+      "\020\n\010lidar_id\030\004 \002(\005\022\'\n\ncloud_type\030\005 \003(\0132\023."
+      "message.Cloud_type\022-\n\rerror_manager\030\006 \002("
+      "\0132\026.message.Error_manager*\237\001\n\024Laser_mana"
+      "ger_status\022\030\n\024LASER_MANAGER_UNKNOW\020\000\022\027\n\023"
+      "LASER_MANAGER_READY\020\001\022\035\n\031LASER_MANAGER_I"
+      "SSUED_TASK\020\002\022\034\n\030LASER_MANAGER_WAIT_REPLY"
+      "\020\003\022\027\n\023LASER_MANAGER_FAULT\020\004*U\n\013Laser_sta"
+      "tu\022\024\n\020LASER_DISCONNECT\020\000\022\017\n\013LASER_READY\020"
+      "\001\022\016\n\nLASER_BUSY\020\002\022\017\n\013LASER_FAULT\020\003*\261\001\n\025L"
+      "ocate_manager_status\022\031\n\025LOCATE_MANAGER_U"
+      "NKNOW\020\000\022\030\n\024LOCATE_MANAGER_READY\020\001\022\027\n\023LOC"
+      "ATE_MANAGER_SIFT\020\002\022\026\n\022LOCATE_MANAGER_CAR"
+      "\020\003\022\030\n\024LOCATE_MANAGER_WHEEL\020\004\022\030\n\024LOCATE_M"
+      "ANAGER_FAULT\020\005*\367\001\n\024Wanji_manager_status\022"
+      "\031\n\025WANJI_MANAGER_UNKNOWN\020\000\022\027\n\023WANJI_MANA"
+      "GER_READY\020\001\022\026\n\022WANJI_MANAGER_BUSY\020\002\022\035\n\031W"
+      "ANJI_MANAGER_ISSUED_SCAN\020\003\022\033\n\027WANJI_MANA"
+      "GER_WAIT_SCAN\020\004\022\037\n\033WANJI_MANAGER_ISSUED_"
+      "DETECT\020\005\022\035\n\031WANJI_MANAGER_WAIT_DETECT\020\006\022"
+      "\027\n\023WANJI_MANAGER_FAULT\020\n*\267\001\n\031Wanji_lidar"
+      "_device_status\022\036\n\032WANJI_LIDAR_DEVICE_UNK"
+      "NOWN\020\000\022\034\n\030WANJI_LIDAR_DEVICE_READY\020\001\022!\n\035"
+      "WANJI_LIDAR_DEVICE_DISCONNECT\020\002\022\033\n\027WANJI"
+      "_LIDAR_DEVICE_BUSY\020\003\022\034\n\030WANJI_LIDAR_DEVI"
+      "CE_FAULT\020\n*{\n\024Region_worker_status\022\031\n\025RE"
+      "GION_WORKER_UNKNOWN\020\000\022\027\n\023REGION_WORKER_R"
+      "EADY\020\001\022\026\n\022REGION_WORKER_BUSY\020\002\022\027\n\023REGION"
+      "_WORKER_FAULT\020\n*O\n\014Ground_statu\022\013\n\007Nothi"
+      "ng\020\000\022\t\n\005Noise\020\001\022\017\n\013Car_correct\020\002\022\026\n\022Car_"
+      "border_reached\020\003"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 3188);
+      descriptor, 3376);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "measure_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -3763,6 +3815,608 @@ void Ground_status_msg::InternalSwap(Ground_status_msg* other) {
 }
 
 
+// ===================================================================
+
+void measure_info::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int measure_info::kCxFieldNumber;
+const int measure_info::kCyFieldNumber;
+const int measure_info::kThetaFieldNumber;
+const int measure_info::kLengthFieldNumber;
+const int measure_info::kWidthFieldNumber;
+const int measure_info::kHeightFieldNumber;
+const int measure_info::kWheelbaseFieldNumber;
+const int measure_info::kFrontThetaFieldNumber;
+const int measure_info::kBorderStatuFieldNumber;
+const int measure_info::kGroundStatusFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+measure_info::measure_info()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  ::google::protobuf::internal::InitSCC(
+      &protobuf_measure_5fmessage_2eproto::scc_info_measure_info.base);
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:message.measure_info)
+}
+measure_info::measure_info(const measure_info& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _has_bits_(from._has_bits_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&cx_, &from.cx_,
+    static_cast<size_t>(reinterpret_cast<char*>(&ground_status_) -
+    reinterpret_cast<char*>(&cx_)) + sizeof(ground_status_));
+  // @@protoc_insertion_point(copy_constructor:message.measure_info)
+}
+
+void measure_info::SharedCtor() {
+  ::memset(&cx_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&ground_status_) -
+      reinterpret_cast<char*>(&cx_)) + sizeof(ground_status_));
+}
+
+measure_info::~measure_info() {
+  // @@protoc_insertion_point(destructor:message.measure_info)
+  SharedDtor();
+}
+
+void measure_info::SharedDtor() {
+}
+
+void measure_info::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ::google::protobuf::Descriptor* measure_info::descriptor() {
+  ::protobuf_measure_5fmessage_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_measure_5fmessage_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const measure_info& measure_info::default_instance() {
+  ::google::protobuf::internal::InitSCC(&protobuf_measure_5fmessage_2eproto::scc_info_measure_info.base);
+  return *internal_default_instance();
+}
+
+
+void measure_info::Clear() {
+// @@protoc_insertion_point(message_clear_start:message.measure_info)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  if (cached_has_bits & 255u) {
+    ::memset(&cx_, 0, static_cast<size_t>(
+        reinterpret_cast<char*>(&front_theta_) -
+        reinterpret_cast<char*>(&cx_)) + sizeof(front_theta_));
+  }
+  if (cached_has_bits & 768u) {
+    ::memset(&border_statu_, 0, static_cast<size_t>(
+        reinterpret_cast<char*>(&ground_status_) -
+        reinterpret_cast<char*>(&border_statu_)) + sizeof(ground_status_));
+  }
+  _has_bits_.Clear();
+  _internal_metadata_.Clear();
+}
+
+bool measure_info::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:message.measure_info)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // required float cx = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(13u /* 13 & 0xFF */)) {
+          set_has_cx();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &cx_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required float cy = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(21u /* 21 & 0xFF */)) {
+          set_has_cy();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &cy_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required float theta = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(29u /* 29 & 0xFF */)) {
+          set_has_theta();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &theta_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required float length = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(37u /* 37 & 0xFF */)) {
+          set_has_length();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &length_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required float width = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(45u /* 45 & 0xFF */)) {
+          set_has_width();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &width_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required float height = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(53u /* 53 & 0xFF */)) {
+          set_has_height();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &height_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required float wheelbase = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(61u /* 61 & 0xFF */)) {
+          set_has_wheelbase();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &wheelbase_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required float front_theta = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(69u /* 69 & 0xFF */)) {
+          set_has_front_theta();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &front_theta_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required int32 border_statu = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(72u /* 72 & 0xFF */)) {
+          set_has_border_statu();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &border_statu_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // required int32 ground_status = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(80u /* 80 & 0xFF */)) {
+          set_has_ground_status();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &ground_status_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:message.measure_info)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:message.measure_info)
+  return false;
+#undef DO_
+}
+
+void measure_info::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:message.measure_info)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  // required float cx = 1;
+  if (cached_has_bits & 0x00000001u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->cx(), output);
+  }
+
+  // required float cy = 2;
+  if (cached_has_bits & 0x00000002u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->cy(), output);
+  }
+
+  // required float theta = 3;
+  if (cached_has_bits & 0x00000004u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->theta(), output);
+  }
+
+  // required float length = 4;
+  if (cached_has_bits & 0x00000008u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->length(), output);
+  }
+
+  // required float width = 5;
+  if (cached_has_bits & 0x00000010u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(5, this->width(), output);
+  }
+
+  // required float height = 6;
+  if (cached_has_bits & 0x00000020u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(6, this->height(), output);
+  }
+
+  // required float wheelbase = 7;
+  if (cached_has_bits & 0x00000040u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(7, this->wheelbase(), output);
+  }
+
+  // required float front_theta = 8;
+  if (cached_has_bits & 0x00000080u) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->front_theta(), output);
+  }
+
+  // required int32 border_statu = 9;
+  if (cached_has_bits & 0x00000100u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->border_statu(), output);
+  }
+
+  // required int32 ground_status = 10;
+  if (cached_has_bits & 0x00000200u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->ground_status(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:message.measure_info)
+}
+
+::google::protobuf::uint8* measure_info::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:message.measure_info)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  // required float cx = 1;
+  if (cached_has_bits & 0x00000001u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->cx(), target);
+  }
+
+  // required float cy = 2;
+  if (cached_has_bits & 0x00000002u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->cy(), target);
+  }
+
+  // required float theta = 3;
+  if (cached_has_bits & 0x00000004u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->theta(), target);
+  }
+
+  // required float length = 4;
+  if (cached_has_bits & 0x00000008u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(4, this->length(), target);
+  }
+
+  // required float width = 5;
+  if (cached_has_bits & 0x00000010u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(5, this->width(), target);
+  }
+
+  // required float height = 6;
+  if (cached_has_bits & 0x00000020u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(6, this->height(), target);
+  }
+
+  // required float wheelbase = 7;
+  if (cached_has_bits & 0x00000040u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(7, this->wheelbase(), target);
+  }
+
+  // required float front_theta = 8;
+  if (cached_has_bits & 0x00000080u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(8, this->front_theta(), target);
+  }
+
+  // required int32 border_statu = 9;
+  if (cached_has_bits & 0x00000100u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(9, this->border_statu(), target);
+  }
+
+  // required int32 ground_status = 10;
+  if (cached_has_bits & 0x00000200u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(10, this->ground_status(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:message.measure_info)
+  return target;
+}
+
+size_t measure_info::RequiredFieldsByteSizeFallback() const {
+// @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.measure_info)
+  size_t total_size = 0;
+
+  if (has_cx()) {
+    // required float cx = 1;
+    total_size += 1 + 4;
+  }
+
+  if (has_cy()) {
+    // required float cy = 2;
+    total_size += 1 + 4;
+  }
+
+  if (has_theta()) {
+    // required float theta = 3;
+    total_size += 1 + 4;
+  }
+
+  if (has_length()) {
+    // required float length = 4;
+    total_size += 1 + 4;
+  }
+
+  if (has_width()) {
+    // required float width = 5;
+    total_size += 1 + 4;
+  }
+
+  if (has_height()) {
+    // required float height = 6;
+    total_size += 1 + 4;
+  }
+
+  if (has_wheelbase()) {
+    // required float wheelbase = 7;
+    total_size += 1 + 4;
+  }
+
+  if (has_front_theta()) {
+    // required float front_theta = 8;
+    total_size += 1 + 4;
+  }
+
+  if (has_border_statu()) {
+    // required int32 border_statu = 9;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->border_statu());
+  }
+
+  if (has_ground_status()) {
+    // required int32 ground_status = 10;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->ground_status());
+  }
+
+  return total_size;
+}
+size_t measure_info::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:message.measure_info)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  if (((_has_bits_[0] & 0x000003ff) ^ 0x000003ff) == 0) {  // All required fields are present.
+    // required float cx = 1;
+    total_size += 1 + 4;
+
+    // required float cy = 2;
+    total_size += 1 + 4;
+
+    // required float theta = 3;
+    total_size += 1 + 4;
+
+    // required float length = 4;
+    total_size += 1 + 4;
+
+    // required float width = 5;
+    total_size += 1 + 4;
+
+    // required float height = 6;
+    total_size += 1 + 4;
+
+    // required float wheelbase = 7;
+    total_size += 1 + 4;
+
+    // required float front_theta = 8;
+    total_size += 1 + 4;
+
+    // required int32 border_statu = 9;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->border_statu());
+
+    // required int32 ground_status = 10;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->ground_status());
+
+  } else {
+    total_size += RequiredFieldsByteSizeFallback();
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void measure_info::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:message.measure_info)
+  GOOGLE_DCHECK_NE(&from, this);
+  const measure_info* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const measure_info>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:message.measure_info)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:message.measure_info)
+    MergeFrom(*source);
+  }
+}
+
+void measure_info::MergeFrom(const measure_info& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:message.measure_info)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = from._has_bits_[0];
+  if (cached_has_bits & 255u) {
+    if (cached_has_bits & 0x00000001u) {
+      cx_ = from.cx_;
+    }
+    if (cached_has_bits & 0x00000002u) {
+      cy_ = from.cy_;
+    }
+    if (cached_has_bits & 0x00000004u) {
+      theta_ = from.theta_;
+    }
+    if (cached_has_bits & 0x00000008u) {
+      length_ = from.length_;
+    }
+    if (cached_has_bits & 0x00000010u) {
+      width_ = from.width_;
+    }
+    if (cached_has_bits & 0x00000020u) {
+      height_ = from.height_;
+    }
+    if (cached_has_bits & 0x00000040u) {
+      wheelbase_ = from.wheelbase_;
+    }
+    if (cached_has_bits & 0x00000080u) {
+      front_theta_ = from.front_theta_;
+    }
+    _has_bits_[0] |= cached_has_bits;
+  }
+  if (cached_has_bits & 768u) {
+    if (cached_has_bits & 0x00000100u) {
+      border_statu_ = from.border_statu_;
+    }
+    if (cached_has_bits & 0x00000200u) {
+      ground_status_ = from.ground_status_;
+    }
+    _has_bits_[0] |= cached_has_bits;
+  }
+}
+
+void measure_info::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:message.measure_info)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void measure_info::CopyFrom(const measure_info& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:message.measure_info)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool measure_info::IsInitialized() const {
+  if ((_has_bits_[0] & 0x000003ff) != 0x000003ff) return false;
+  return true;
+}
+
+void measure_info::Swap(measure_info* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void measure_info::InternalSwap(measure_info* other) {
+  using std::swap;
+  swap(cx_, other->cx_);
+  swap(cy_, other->cy_);
+  swap(theta_, other->theta_);
+  swap(length_, other->length_);
+  swap(width_, other->width_);
+  swap(height_, other->height_);
+  swap(wheelbase_, other->wheelbase_);
+  swap(front_theta_, other->front_theta_);
+  swap(border_statu_, other->border_statu_);
+  swap(ground_status_, other->ground_status_);
+  swap(_has_bits_[0], other->_has_bits_[0]);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata measure_info::GetMetadata() const {
+  protobuf_measure_5fmessage_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_measure_5fmessage_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
 // ===================================================================
 
 void Cloud_coordinate::InitAsDefaultInstance() {
@@ -5367,6 +6021,9 @@ template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Ground_detect_response_
 template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Ground_status_msg* Arena::CreateMaybeMessage< ::message::Ground_status_msg >(Arena* arena) {
   return Arena::CreateInternal< ::message::Ground_status_msg >(arena);
 }
+template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::measure_info* Arena::CreateMaybeMessage< ::message::measure_info >(Arena* arena) {
+  return Arena::CreateInternal< ::message::measure_info >(arena);
+}
 template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Cloud_coordinate* Arena::CreateMaybeMessage< ::message::Cloud_coordinate >(Arena* arena) {
   return Arena::CreateInternal< ::message::Cloud_coordinate >(arena);
 }

+ 462 - 5
message/measure_message.pb.h

@@ -40,7 +40,7 @@ namespace protobuf_measure_5fmessage_2eproto {
 struct TableStruct {
   static const ::google::protobuf::internal::ParseTableField entries[];
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
-  static const ::google::protobuf::internal::ParseTable schema[10];
+  static const ::google::protobuf::internal::ParseTable schema[11];
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
   static const ::google::protobuf::uint32 offsets[];
@@ -78,6 +78,9 @@ extern Measure_response_msgDefaultTypeInternal _Measure_response_msg_default_ins
 class Measure_status_msg;
 class Measure_status_msgDefaultTypeInternal;
 extern Measure_status_msgDefaultTypeInternal _Measure_status_msg_default_instance_;
+class measure_info;
+class measure_infoDefaultTypeInternal;
+extern measure_infoDefaultTypeInternal _measure_info_default_instance_;
 }  // namespace message
 namespace google {
 namespace protobuf {
@@ -91,6 +94,7 @@ template<> ::message::Locate_sift_response_msg* Arena::CreateMaybeMessage<::mess
 template<> ::message::Measure_request_msg* Arena::CreateMaybeMessage<::message::Measure_request_msg>(Arena*);
 template<> ::message::Measure_response_msg* Arena::CreateMaybeMessage<::message::Measure_response_msg>(Arena*);
 template<> ::message::Measure_status_msg* Arena::CreateMaybeMessage<::message::Measure_status_msg>(Arena*);
+template<> ::message::measure_info* Arena::CreateMaybeMessage<::message::measure_info>(Arena*);
 }  // namespace protobuf
 }  // namespace google
 namespace message {
@@ -1346,6 +1350,213 @@ class Ground_status_msg : public ::google::protobuf::Message /* @@protoc_inserti
 };
 // -------------------------------------------------------------------
 
+class measure_info : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:message.measure_info) */ {
+ public:
+  measure_info();
+  virtual ~measure_info();
+
+  measure_info(const measure_info& from);
+
+  inline measure_info& operator=(const measure_info& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  measure_info(measure_info&& from) noexcept
+    : measure_info() {
+    *this = ::std::move(from);
+  }
+
+  inline measure_info& operator=(measure_info&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _internal_metadata_.unknown_fields();
+  }
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return _internal_metadata_.mutable_unknown_fields();
+  }
+
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const measure_info& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const measure_info* internal_default_instance() {
+    return reinterpret_cast<const measure_info*>(
+               &_measure_info_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void Swap(measure_info* other);
+  friend void swap(measure_info& a, measure_info& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline measure_info* New() const final {
+    return CreateMaybeMessage<measure_info>(NULL);
+  }
+
+  measure_info* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<measure_info>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const measure_info& from);
+  void MergeFrom(const measure_info& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(measure_info* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // required float cx = 1;
+  bool has_cx() const;
+  void clear_cx();
+  static const int kCxFieldNumber = 1;
+  float cx() const;
+  void set_cx(float value);
+
+  // required float cy = 2;
+  bool has_cy() const;
+  void clear_cy();
+  static const int kCyFieldNumber = 2;
+  float cy() const;
+  void set_cy(float value);
+
+  // required float theta = 3;
+  bool has_theta() const;
+  void clear_theta();
+  static const int kThetaFieldNumber = 3;
+  float theta() const;
+  void set_theta(float value);
+
+  // required float length = 4;
+  bool has_length() const;
+  void clear_length();
+  static const int kLengthFieldNumber = 4;
+  float length() const;
+  void set_length(float value);
+
+  // required float width = 5;
+  bool has_width() const;
+  void clear_width();
+  static const int kWidthFieldNumber = 5;
+  float width() const;
+  void set_width(float value);
+
+  // required float height = 6;
+  bool has_height() const;
+  void clear_height();
+  static const int kHeightFieldNumber = 6;
+  float height() const;
+  void set_height(float value);
+
+  // required float wheelbase = 7;
+  bool has_wheelbase() const;
+  void clear_wheelbase();
+  static const int kWheelbaseFieldNumber = 7;
+  float wheelbase() const;
+  void set_wheelbase(float value);
+
+  // required float front_theta = 8;
+  bool has_front_theta() const;
+  void clear_front_theta();
+  static const int kFrontThetaFieldNumber = 8;
+  float front_theta() const;
+  void set_front_theta(float value);
+
+  // required int32 border_statu = 9;
+  bool has_border_statu() const;
+  void clear_border_statu();
+  static const int kBorderStatuFieldNumber = 9;
+  ::google::protobuf::int32 border_statu() const;
+  void set_border_statu(::google::protobuf::int32 value);
+
+  // required int32 ground_status = 10;
+  bool has_ground_status() const;
+  void clear_ground_status();
+  static const int kGroundStatusFieldNumber = 10;
+  ::google::protobuf::int32 ground_status() const;
+  void set_ground_status(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:message.measure_info)
+ private:
+  void set_has_cx();
+  void clear_has_cx();
+  void set_has_cy();
+  void clear_has_cy();
+  void set_has_theta();
+  void clear_has_theta();
+  void set_has_length();
+  void clear_has_length();
+  void set_has_width();
+  void clear_has_width();
+  void set_has_height();
+  void clear_has_height();
+  void set_has_wheelbase();
+  void clear_has_wheelbase();
+  void set_has_front_theta();
+  void clear_has_front_theta();
+  void set_has_border_statu();
+  void clear_has_border_statu();
+  void set_has_ground_status();
+  void clear_has_ground_status();
+
+  // helper for ByteSizeLong()
+  size_t RequiredFieldsByteSizeFallback() const;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::HasBits<1> _has_bits_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  float cx_;
+  float cy_;
+  float theta_;
+  float length_;
+  float width_;
+  float height_;
+  float wheelbase_;
+  float front_theta_;
+  ::google::protobuf::int32 border_statu_;
+  ::google::protobuf::int32 ground_status_;
+  friend struct ::protobuf_measure_5fmessage_2eproto::TableStruct;
+};
+// -------------------------------------------------------------------
+
 class Cloud_coordinate : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:message.Cloud_coordinate) */ {
  public:
   Cloud_coordinate();
@@ -1388,7 +1599,7 @@ class Cloud_coordinate : public ::google::protobuf::Message /* @@protoc_insertio
                &_Cloud_coordinate_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    6;
+    7;
 
   void Swap(Cloud_coordinate* other);
   friend void swap(Cloud_coordinate& a, Cloud_coordinate& b) {
@@ -1525,7 +1736,7 @@ class Cloud_type : public ::google::protobuf::Message /* @@protoc_insertion_poin
                &_Cloud_type_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    7;
+    8;
 
   void Swap(Cloud_type* other);
   friend void swap(Cloud_type& a, Cloud_type& b) {
@@ -1639,7 +1850,7 @@ class Locate_sift_request_msg : public ::google::protobuf::Message /* @@protoc_i
                &_Locate_sift_request_msg_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    8;
+    9;
 
   void Swap(Locate_sift_request_msg* other);
   friend void swap(Locate_sift_request_msg& a, Locate_sift_request_msg& b) {
@@ -1817,7 +2028,7 @@ class Locate_sift_response_msg : public ::google::protobuf::Message /* @@protoc_
                &_Locate_sift_response_msg_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    9;
+    10;
 
   void Swap(Locate_sift_response_msg* other);
   friend void swap(Locate_sift_response_msg& a, Locate_sift_response_msg& b) {
@@ -3532,6 +3743,250 @@ Ground_status_msg::cloud() const {
 
 // -------------------------------------------------------------------
 
+// measure_info
+
+// required float cx = 1;
+inline bool measure_info::has_cx() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void measure_info::set_has_cx() {
+  _has_bits_[0] |= 0x00000001u;
+}
+inline void measure_info::clear_has_cx() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void measure_info::clear_cx() {
+  cx_ = 0;
+  clear_has_cx();
+}
+inline float measure_info::cx() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.cx)
+  return cx_;
+}
+inline void measure_info::set_cx(float value) {
+  set_has_cx();
+  cx_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.cx)
+}
+
+// required float cy = 2;
+inline bool measure_info::has_cy() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void measure_info::set_has_cy() {
+  _has_bits_[0] |= 0x00000002u;
+}
+inline void measure_info::clear_has_cy() {
+  _has_bits_[0] &= ~0x00000002u;
+}
+inline void measure_info::clear_cy() {
+  cy_ = 0;
+  clear_has_cy();
+}
+inline float measure_info::cy() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.cy)
+  return cy_;
+}
+inline void measure_info::set_cy(float value) {
+  set_has_cy();
+  cy_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.cy)
+}
+
+// required float theta = 3;
+inline bool measure_info::has_theta() const {
+  return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void measure_info::set_has_theta() {
+  _has_bits_[0] |= 0x00000004u;
+}
+inline void measure_info::clear_has_theta() {
+  _has_bits_[0] &= ~0x00000004u;
+}
+inline void measure_info::clear_theta() {
+  theta_ = 0;
+  clear_has_theta();
+}
+inline float measure_info::theta() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.theta)
+  return theta_;
+}
+inline void measure_info::set_theta(float value) {
+  set_has_theta();
+  theta_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.theta)
+}
+
+// required float length = 4;
+inline bool measure_info::has_length() const {
+  return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void measure_info::set_has_length() {
+  _has_bits_[0] |= 0x00000008u;
+}
+inline void measure_info::clear_has_length() {
+  _has_bits_[0] &= ~0x00000008u;
+}
+inline void measure_info::clear_length() {
+  length_ = 0;
+  clear_has_length();
+}
+inline float measure_info::length() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.length)
+  return length_;
+}
+inline void measure_info::set_length(float value) {
+  set_has_length();
+  length_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.length)
+}
+
+// required float width = 5;
+inline bool measure_info::has_width() const {
+  return (_has_bits_[0] & 0x00000010u) != 0;
+}
+inline void measure_info::set_has_width() {
+  _has_bits_[0] |= 0x00000010u;
+}
+inline void measure_info::clear_has_width() {
+  _has_bits_[0] &= ~0x00000010u;
+}
+inline void measure_info::clear_width() {
+  width_ = 0;
+  clear_has_width();
+}
+inline float measure_info::width() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.width)
+  return width_;
+}
+inline void measure_info::set_width(float value) {
+  set_has_width();
+  width_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.width)
+}
+
+// required float height = 6;
+inline bool measure_info::has_height() const {
+  return (_has_bits_[0] & 0x00000020u) != 0;
+}
+inline void measure_info::set_has_height() {
+  _has_bits_[0] |= 0x00000020u;
+}
+inline void measure_info::clear_has_height() {
+  _has_bits_[0] &= ~0x00000020u;
+}
+inline void measure_info::clear_height() {
+  height_ = 0;
+  clear_has_height();
+}
+inline float measure_info::height() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.height)
+  return height_;
+}
+inline void measure_info::set_height(float value) {
+  set_has_height();
+  height_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.height)
+}
+
+// required float wheelbase = 7;
+inline bool measure_info::has_wheelbase() const {
+  return (_has_bits_[0] & 0x00000040u) != 0;
+}
+inline void measure_info::set_has_wheelbase() {
+  _has_bits_[0] |= 0x00000040u;
+}
+inline void measure_info::clear_has_wheelbase() {
+  _has_bits_[0] &= ~0x00000040u;
+}
+inline void measure_info::clear_wheelbase() {
+  wheelbase_ = 0;
+  clear_has_wheelbase();
+}
+inline float measure_info::wheelbase() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.wheelbase)
+  return wheelbase_;
+}
+inline void measure_info::set_wheelbase(float value) {
+  set_has_wheelbase();
+  wheelbase_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.wheelbase)
+}
+
+// required float front_theta = 8;
+inline bool measure_info::has_front_theta() const {
+  return (_has_bits_[0] & 0x00000080u) != 0;
+}
+inline void measure_info::set_has_front_theta() {
+  _has_bits_[0] |= 0x00000080u;
+}
+inline void measure_info::clear_has_front_theta() {
+  _has_bits_[0] &= ~0x00000080u;
+}
+inline void measure_info::clear_front_theta() {
+  front_theta_ = 0;
+  clear_has_front_theta();
+}
+inline float measure_info::front_theta() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.front_theta)
+  return front_theta_;
+}
+inline void measure_info::set_front_theta(float value) {
+  set_has_front_theta();
+  front_theta_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.front_theta)
+}
+
+// required int32 border_statu = 9;
+inline bool measure_info::has_border_statu() const {
+  return (_has_bits_[0] & 0x00000100u) != 0;
+}
+inline void measure_info::set_has_border_statu() {
+  _has_bits_[0] |= 0x00000100u;
+}
+inline void measure_info::clear_has_border_statu() {
+  _has_bits_[0] &= ~0x00000100u;
+}
+inline void measure_info::clear_border_statu() {
+  border_statu_ = 0;
+  clear_has_border_statu();
+}
+inline ::google::protobuf::int32 measure_info::border_statu() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.border_statu)
+  return border_statu_;
+}
+inline void measure_info::set_border_statu(::google::protobuf::int32 value) {
+  set_has_border_statu();
+  border_statu_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.border_statu)
+}
+
+// required int32 ground_status = 10;
+inline bool measure_info::has_ground_status() const {
+  return (_has_bits_[0] & 0x00000200u) != 0;
+}
+inline void measure_info::set_has_ground_status() {
+  _has_bits_[0] |= 0x00000200u;
+}
+inline void measure_info::clear_has_ground_status() {
+  _has_bits_[0] &= ~0x00000200u;
+}
+inline void measure_info::clear_ground_status() {
+  ground_status_ = 0;
+  clear_has_ground_status();
+}
+inline ::google::protobuf::int32 measure_info::ground_status() const {
+  // @@protoc_insertion_point(field_get:message.measure_info.ground_status)
+  return ground_status_;
+}
+inline void measure_info::set_ground_status(::google::protobuf::int32 value) {
+  set_has_ground_status();
+  ground_status_ = value;
+  // @@protoc_insertion_point(field_set:message.measure_info.ground_status)
+}
+
+// -------------------------------------------------------------------
+
 // Cloud_coordinate
 
 // required float x = 1;
@@ -4173,6 +4628,8 @@ inline void Locate_sift_response_msg::set_allocated_error_manager(::message::Err
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 

+ 13 - 1
message/measure_message.proto

@@ -151,7 +151,19 @@ message Ground_status_msg
     repeated Cloud_coordinate           cloud=10;     //点云坐标
 }
 
-
+/*测量信息*/
+message measure_info {
+  required float cx=1;
+  required float cy=2;
+  required float theta=3;
+  required float length=4;
+  required float width=5;
+  required float height=6;
+  required float wheelbase=7;
+  required float front_theta=8;
+  required int32 border_statu=9;
+  required int32 ground_status=10; // 电子围栏状态, 0 ok, 1 nothing, 2 noise, 3 border
+}
 
 //点云坐标
 message Cloud_coordinate

+ 37 - 1
setting/rabbitmq.prototxt

@@ -43,6 +43,34 @@ rabbitmq_parameters
 #         consume_exclusive:0
 #     }
 
+    rabbitmq_sender_status_vector
+    {
+        channel:411
+        exchange_name:"statu_ex"
+        routing_key:"measure_1_statu_port"
+        timeout_ms:0
+    }
+    rabbitmq_sender_status_vector
+    {
+        channel:411
+        exchange_name:"statu_ex"
+        routing_key:"measure_2_statu_port"
+        timeout_ms:0
+    }
+    rabbitmq_sender_status_vector
+    {
+        channel:411
+        exchange_name:"statu_ex"
+        routing_key:"measure_3_statu_port"
+        timeout_ms:0
+    }
+    rabbitmq_sender_status_vector
+    {
+        channel:411
+        exchange_name:"statu_ex"
+        routing_key:"measure_4_statu_port"
+        timeout_ms:0
+    }
     rabbitmq_sender_status_vector
     {
         channel:411
@@ -50,4 +78,12 @@ rabbitmq_parameters
         routing_key:"measure_5_statu_port"
         timeout_ms:0
     }
-}
+    rabbitmq_sender_status_vector
+    {
+        channel:411
+        exchange_name:"statu_ex"
+        routing_key:"measure_6_statu_port"
+        timeout_ms:0
+    }
+}
+

+ 71 - 71
setting/velodyne_manager.prototxt

@@ -6,31 +6,31 @@ distribution_mode:false
 
 #-----------------------------------lidars, id 0-6 from A1-C2
 
-# # 6 lidar 192.168.1.201
-# velodyne_lidars
-# {
-#     ip:""
-#     port:2368
-#     model:"VLP16"
-#     calibrationFile:"../setting/VLP16db.yaml"
-#     lidar_id:6
-#     max_range:8.0
-#     min_range:0.1
-#     min_angle:0
-#     max_angle:360
-#     rpm:600
-#     calib
-#     {
-#          r:-0.276397
-#          p:-0.11717
-#          y:89.6003
-#          cz:0.05467
-#         #r:-0.623165
-#         #p:0.601821
-#         #y:87.0198
-#         #cz:0.101527
-#     }
-# }
+ # 6 lidar 192.168.1.201
+velodyne_lidars
+{
+    ip:""
+    port:2368
+    model:"VLP16"
+    calibrationFile:"../setting/VLP16db.yaml"
+    lidar_id:6
+    max_range:8.0
+    min_range:0.1
+    min_angle:0
+    max_angle:360
+    rpm:600
+    calib
+    {
+         r:-0.276397
+         p:-0.11717
+         y:88.703  #89.6003
+         cz:0.05467
+        #r:-0.623165
+        #p:0.601821
+        #y:87.0198
+        #cz:0.101527
+    }
+}
 
 # 5 lidar 192.168.1.202
 velodyne_lidars
@@ -172,52 +172,52 @@ velodyne_lidars
 
 #-----------------------------------regions, 0-5 from A1 to C2
 
-# # 5 region
-# region
-# {
-#     minx:-1.6
-# 	maxx:1.6
-# 	miny:-2.6
-# 	maxy:2.6
-# 	minz:0.025
-# 	maxz:0.5
-#     region_id:5
-#     turnplate_cx:0.0
-#     turnplate_cy:0.0
-#     border_minx:-1.2
-#     border_maxx:1.2
-#     plc_offsetx:1.913
-#     plc_offsety:-6.078
-#     plc_offset_degree:-89.5
-#     plc_border_miny:-7.51
-#     car_min_width:1.55
-#     car_max_width:1.92
-#     car_min_wheelbase:2.3
-#     car_max_wheelbase:3.15
-#     turnplate_angle_limit_anti_clockwise:5.3
-#     turnplate_angle_limit_clockwise:5.3
+# 5 region
+region
+{
+    minx:-1.6
+	maxx:1.6
+	miny:-2.6
+	maxy:2.6
+	minz:0.025
+	maxz:0.5
+    region_id:5
+    turnplate_cx:0.0
+    turnplate_cy:0.0
+    border_minx:-1.2
+    border_maxx:1.2
+    plc_offsetx:1.913
+    plc_offsety:-6.078
+    plc_offset_degree:-89.5
+    plc_border_miny:-7.51
+    car_min_width:1.55
+    car_max_width:1.92
+    car_min_wheelbase:2.3
+    car_max_wheelbase:3.15
+    turnplate_angle_limit_anti_clockwise:5.3
+    turnplate_angle_limit_clockwise:5.3
 
-#     lidar_exts
-#     {
-#         lidar_id:6
-#         calib
-#         {
-#             cx:1.9018
-#             cy:-0.0175
-#         }
-#     }
-#     lidar_exts
-#     {
-#         lidar_id:5
-#         calib
-#         {
-#             #cx:-4.021775
-#             #cy:-0.039429
-#             cx:-1.9018
-#             cy:0.0175
-#         }
-#     }
-# }
+    lidar_exts
+    {
+        lidar_id:6
+        calib
+        {
+            cx:1.89004
+            cy:0
+        }
+    }
+    lidar_exts
+    {
+        lidar_id:5
+        calib
+        {
+            #cx:-4.021775
+            #cy:-0.039429
+            cx:-1.89004
+            cy:0
+        }
+    }
+}
 
 # 4 region
 # 利用共用雷达标定plc偏移量
@@ -469,4 +469,4 @@ region
             cy:0.01367
         }
     }
-}
+}

+ 36 - 3
system/system_executor.cpp

@@ -622,10 +622,43 @@ Error_manager System_executor::encapsulate_send_mq_status()
 
 		update_measure_info(t_multi_status_msg, t_car_wheel_information, t_region_cloud->size());
 
-		std::string t_msg = t_multi_status_msg.DebugString();
-		if(t_multi_status_msg.id_struct().terminal_id() == 4)
+		if(t_multi_status_msg.id_struct().terminal_id() == 4 ||
+			t_multi_status_msg.id_struct().terminal_id() == 0||
+			t_multi_status_msg.id_struct().terminal_id() == 5||
+			t_multi_status_msg.id_struct().terminal_id() == 1||
+			t_multi_status_msg.id_struct().terminal_id() == 3||
+			t_multi_status_msg.id_struct().terminal_id() == 2)
 		{
-			System_communication_mq::get_instance_references().encapsulate_status_msg(t_msg, 0);
+			// rabbitmq new measure info
+			message::measure_info t_multi_measure_info_msg;
+			t_multi_measure_info_msg.set_cx(t_car_wheel_information.car_center_x);
+			t_multi_measure_info_msg.set_cy(t_car_wheel_information.car_center_y);
+			t_multi_measure_info_msg.set_theta(t_car_wheel_information.car_angle);
+			t_multi_measure_info_msg.set_length(0.0f);
+			t_multi_measure_info_msg.set_width(t_car_wheel_information.car_wheel_width);
+			t_multi_measure_info_msg.set_height(0.0f);
+			t_multi_measure_info_msg.set_wheelbase(t_car_wheel_information.car_wheel_base);
+			t_multi_measure_info_msg.set_front_theta(t_car_wheel_information.car_front_theta);
+			t_multi_measure_info_msg.set_border_statu(t_car_wheel_information.range_status);
+			
+			auto t_ground_status = t_multi_status_msg.ground_status();
+			if(t_ground_status == message::Ground_statu::Car_correct)
+			{
+				t_multi_measure_info_msg.set_ground_status(0);
+			}else if(t_ground_status == message::Ground_statu::Nothing)
+			{
+				t_multi_measure_info_msg.set_ground_status(1);
+			}else if(t_ground_status == message::Ground_statu::Noise)
+			{
+				t_multi_measure_info_msg.set_ground_status(2);
+			}
+			else if(t_ground_status == message::Ground_statu::Car_border_reached)
+			{
+				t_multi_measure_info_msg.set_ground_status(3);
+			}
+			
+			std::string t_msg = t_multi_measure_info_msg.DebugString();
+			System_communication_mq::get_instance_references().encapsulate_status_msg(t_msg, t_multi_status_msg.id_struct().terminal_id());
 		}
 		if (t_multi_status_msg.id_struct().terminal_id() == DISP_TERM_ID)
 			std::cout << t_multi_status_msg.DebugString() << std::endl