瀏覽代碼

20210922, add pose and chassis detection.
lidar capture delay bug fixed.
increase result pub rate to 10Hz

yct 3 年之前
父節點
當前提交
1bfb452d59

+ 77 - 50
communication/communication.pb.cc

@@ -7,6 +7,7 @@
 
 #include <google/protobuf/stubs/common.h>
 #include <google/protobuf/stubs/port.h>
+#include <google/protobuf/stubs/once.h>
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/wire_format_lite_inl.h>
 #include <google/protobuf/descriptor.h>
@@ -18,10 +19,6 @@
 #include "third_party/protobuf/version.h"
 #endif
 // @@protoc_insertion_point(includes)
-
-namespace protobuf_communication_2eproto {
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_communication_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Communication_parameter;
-}  // namespace protobuf_communication_2eproto
 namespace Communication_proto {
 class Communication_parameterDefaultTypeInternal {
  public:
@@ -35,9 +32,14 @@ class Communication_parameter_allDefaultTypeInternal {
 } _Communication_parameter_all_default_instance_;
 }  // namespace Communication_proto
 namespace protobuf_communication_2eproto {
-static void InitDefaultsCommunication_parameter() {
+void InitDefaultsCommunication_parameterImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::Communication_proto::_Communication_parameter_default_instance_;
     new (ptr) ::Communication_proto::Communication_parameter();
@@ -46,12 +48,20 @@ static void InitDefaultsCommunication_parameter() {
   ::Communication_proto::Communication_parameter::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Communication_parameter =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCommunication_parameter}, {}};
+void InitDefaultsCommunication_parameter() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsCommunication_parameterImpl);
+}
 
-static void InitDefaultsCommunication_parameter_all() {
+void InitDefaultsCommunication_parameter_allImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_communication_2eproto::InitDefaultsCommunication_parameter();
   {
     void* ptr = &::Communication_proto::_Communication_parameter_all_default_instance_;
     new (ptr) ::Communication_proto::Communication_parameter_all();
@@ -60,13 +70,9 @@ static void InitDefaultsCommunication_parameter_all() {
   ::Communication_proto::Communication_parameter_all::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_Communication_parameter_all =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCommunication_parameter_all}, {
-      &protobuf_communication_2eproto::scc_info_Communication_parameter.base,}};
-
-void InitDefaults() {
-  ::google::protobuf::internal::InitSCC(&scc_info_Communication_parameter.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Communication_parameter_all.base);
+void InitDefaultsCommunication_parameter_all() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsCommunication_parameter_allImpl);
 }
 
 ::google::protobuf::Metadata file_level_metadata[2];
@@ -101,14 +107,15 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
 
 void protobuf_AssignDescriptors() {
   AddDescriptors();
+  ::google::protobuf::MessageFactory* factory = NULL;
   AssignDescriptors(
-      "communication.proto", schemas, file_default_instances, TableStruct::offsets,
+      "communication.proto", schemas, file_default_instances, TableStruct::offsets, factory,
       file_level_metadata, NULL, NULL);
 }
 
 void protobuf_AssignDescriptorsOnce() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, protobuf_AssignDescriptors);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
 }
 
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
@@ -134,8 +141,8 @@ void AddDescriptorsImpl() {
 }
 
 void AddDescriptors() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
 }
 // Force AddDescriptors() to be called at dynamic initialization time.
 struct StaticDescriptorInitializer {
@@ -157,8 +164,9 @@ const int Communication_parameter::kConnectStringVectorFieldNumber;
 
 Communication_parameter::Communication_parameter()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_communication_2eproto::scc_info_Communication_parameter.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_communication_2eproto::InitDefaultsCommunication_parameter();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:Communication_proto.Communication_parameter)
 }
@@ -166,6 +174,7 @@ Communication_parameter::Communication_parameter(const Communication_parameter&
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
+      _cached_size_(0),
       connect_string_vector_(from.connect_string_vector_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   bind_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
@@ -176,6 +185,7 @@ Communication_parameter::Communication_parameter(const Communication_parameter&
 }
 
 void Communication_parameter::SharedCtor() {
+  _cached_size_ = 0;
   bind_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 
@@ -189,7 +199,9 @@ void Communication_parameter::SharedDtor() {
 }
 
 void Communication_parameter::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Communication_parameter::descriptor() {
   ::protobuf_communication_2eproto::protobuf_AssignDescriptorsOnce();
@@ -197,10 +209,17 @@ const ::google::protobuf::Descriptor* Communication_parameter::descriptor() {
 }
 
 const Communication_parameter& Communication_parameter::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_communication_2eproto::scc_info_Communication_parameter.base);
+  ::protobuf_communication_2eproto::InitDefaultsCommunication_parameter();
   return *internal_default_instance();
 }
 
+Communication_parameter* Communication_parameter::New(::google::protobuf::Arena* arena) const {
+  Communication_parameter* n = new Communication_parameter;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Communication_parameter::Clear() {
 // @@protoc_insertion_point(message_clear_start:Communication_proto.Communication_parameter)
@@ -211,7 +230,8 @@ void Communication_parameter::Clear() {
   connect_string_vector_.Clear();
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 0x00000001u) {
-    bind_string_.ClearNonDefaultToEmptyNoArena();
+    GOOGLE_DCHECK(!bind_string_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+    (*bind_string_.UnsafeRawStringPointer())->clear();
   }
   _has_bits_.Clear();
   _internal_metadata_.Clear();
@@ -223,7 +243,7 @@ bool Communication_parameter::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:Communication_proto.Communication_parameter)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -376,7 +396,9 @@ size_t Communication_parameter::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -433,11 +455,11 @@ void Communication_parameter::Swap(Communication_parameter* other) {
 }
 void Communication_parameter::InternalSwap(Communication_parameter* other) {
   using std::swap;
-  connect_string_vector_.InternalSwap(CastToBase(&other->connect_string_vector_));
-  bind_string_.Swap(&other->bind_string_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  connect_string_vector_.InternalSwap(&other->connect_string_vector_);
+  bind_string_.Swap(&other->bind_string_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Communication_parameter::GetMetadata() const {
@@ -458,15 +480,17 @@ const int Communication_parameter_all::kCommunicationParametersFieldNumber;
 
 Communication_parameter_all::Communication_parameter_all()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_communication_2eproto::scc_info_Communication_parameter_all.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_communication_2eproto::InitDefaultsCommunication_parameter_all();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:Communication_proto.Communication_parameter_all)
 }
 Communication_parameter_all::Communication_parameter_all(const Communication_parameter_all& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_communication_parameters()) {
     communication_parameters_ = new ::Communication_proto::Communication_parameter(*from.communication_parameters_);
@@ -477,6 +501,7 @@ Communication_parameter_all::Communication_parameter_all(const Communication_par
 }
 
 void Communication_parameter_all::SharedCtor() {
+  _cached_size_ = 0;
   communication_parameters_ = NULL;
 }
 
@@ -490,7 +515,9 @@ void Communication_parameter_all::SharedDtor() {
 }
 
 void Communication_parameter_all::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Communication_parameter_all::descriptor() {
   ::protobuf_communication_2eproto::protobuf_AssignDescriptorsOnce();
@@ -498,10 +525,17 @@ const ::google::protobuf::Descriptor* Communication_parameter_all::descriptor()
 }
 
 const Communication_parameter_all& Communication_parameter_all::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_communication_2eproto::scc_info_Communication_parameter_all.base);
+  ::protobuf_communication_2eproto::InitDefaultsCommunication_parameter_all();
   return *internal_default_instance();
 }
 
+Communication_parameter_all* Communication_parameter_all::New(::google::protobuf::Arena* arena) const {
+  Communication_parameter_all* n = new Communication_parameter_all;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Communication_parameter_all::Clear() {
 // @@protoc_insertion_point(message_clear_start:Communication_proto.Communication_parameter_all)
@@ -524,7 +558,7 @@ bool Communication_parameter_all::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:Communication_proto.Communication_parameter_all)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -570,7 +604,7 @@ void Communication_parameter_all::SerializeWithCachedSizes(
   // optional .Communication_proto.Communication_parameter communication_parameters = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, this->_internal_communication_parameters(), output);
+      1, *this->communication_parameters_, output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -592,7 +626,7 @@ void Communication_parameter_all::SerializeWithCachedSizes(
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, this->_internal_communication_parameters(), deterministic, target);
+        1, *this->communication_parameters_, deterministic, target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -616,11 +650,13 @@ size_t Communication_parameter_all::ByteSizeLong() const {
   if (has_communication_parameters()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *communication_parameters_);
+        *this->communication_parameters_);
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -678,6 +714,7 @@ void Communication_parameter_all::InternalSwap(Communication_parameter_all* othe
   swap(communication_parameters_, other->communication_parameters_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Communication_parameter_all::GetMetadata() const {
@@ -688,15 +725,5 @@ void Communication_parameter_all::InternalSwap(Communication_parameter_all* othe
 
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace Communication_proto
-namespace google {
-namespace protobuf {
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::Communication_proto::Communication_parameter* Arena::CreateMaybeMessage< ::Communication_proto::Communication_parameter >(Arena* arena) {
-  return Arena::CreateInternal< ::Communication_proto::Communication_parameter >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::Communication_proto::Communication_parameter_all* Arena::CreateMaybeMessage< ::Communication_proto::Communication_parameter_all >(Arena* arena) {
-  return Arena::CreateInternal< ::Communication_proto::Communication_parameter_all >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
 
 // @@protoc_insertion_point(global_scope)

+ 47 - 65
communication/communication.pb.h

@@ -1,19 +1,19 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: communication.proto
 
-#ifndef PROTOBUF_INCLUDED_communication_2eproto
-#define PROTOBUF_INCLUDED_communication_2eproto
+#ifndef PROTOBUF_communication_2eproto__INCLUDED
+#define PROTOBUF_communication_2eproto__INCLUDED
 
 #include <string>
 
 #include <google/protobuf/stubs/common.h>
 
-#if GOOGLE_PROTOBUF_VERSION < 3006001
+#if GOOGLE_PROTOBUF_VERSION < 3005000
 #error This file was generated by a newer version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please update
 #error your headers.
 #endif
-#if 3006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 3005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
 #error This file was generated by an older version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please
 #error regenerate this file with a newer version of protoc.
@@ -24,14 +24,12 @@
 #include <google/protobuf/arenastring.h>
 #include <google/protobuf/generated_message_table_driven.h>
 #include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
 #include <google/protobuf/metadata.h>
 #include <google/protobuf/message.h>
 #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
 #include <google/protobuf/extension_set.h>  // IWYU pragma: export
 #include <google/protobuf/unknown_field_set.h>
 // @@protoc_insertion_point(includes)
-#define PROTOBUF_INTERNAL_EXPORT_protobuf_communication_2eproto 
 
 namespace protobuf_communication_2eproto {
 // Internal implementation detail -- do not use these members.
@@ -44,6 +42,14 @@ struct TableStruct {
   static const ::google::protobuf::uint32 offsets[];
 };
 void AddDescriptors();
+void InitDefaultsCommunication_parameterImpl();
+void InitDefaultsCommunication_parameter();
+void InitDefaultsCommunication_parameter_allImpl();
+void InitDefaultsCommunication_parameter_all();
+inline void InitDefaults() {
+  InitDefaultsCommunication_parameter();
+  InitDefaultsCommunication_parameter_all();
+}
 }  // namespace protobuf_communication_2eproto
 namespace Communication_proto {
 class Communication_parameter;
@@ -53,12 +59,6 @@ class Communication_parameter_all;
 class Communication_parameter_allDefaultTypeInternal;
 extern Communication_parameter_allDefaultTypeInternal _Communication_parameter_all_default_instance_;
 }  // namespace Communication_proto
-namespace google {
-namespace protobuf {
-template<> ::Communication_proto::Communication_parameter* Arena::CreateMaybeMessage<::Communication_proto::Communication_parameter>(Arena*);
-template<> ::Communication_proto::Communication_parameter_all* Arena::CreateMaybeMessage<::Communication_proto::Communication_parameter_all>(Arena*);
-}  // namespace protobuf
-}  // namespace google
 namespace Communication_proto {
 
 // ===================================================================
@@ -104,7 +104,7 @@ class Communication_parameter : public ::google::protobuf::Message /* @@protoc_i
     return reinterpret_cast<const Communication_parameter*>(
                &_Communication_parameter_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
   void Swap(Communication_parameter* other);
@@ -114,33 +114,28 @@ class Communication_parameter : public ::google::protobuf::Message /* @@protoc_i
 
   // implements Message ----------------------------------------------
 
-  inline Communication_parameter* New() const final {
-    return CreateMaybeMessage<Communication_parameter>(NULL);
-  }
+  inline Communication_parameter* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Communication_parameter* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Communication_parameter>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Communication_parameter* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Communication_parameter& from);
   void MergeFrom(const Communication_parameter& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Communication_parameter* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -151,7 +146,7 @@ class Communication_parameter : public ::google::protobuf::Message /* @@protoc_i
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -201,10 +196,11 @@ class Communication_parameter : public ::google::protobuf::Message /* @@protoc_i
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::std::string> connect_string_vector_;
   ::google::protobuf::internal::ArenaStringPtr bind_string_;
   friend struct ::protobuf_communication_2eproto::TableStruct;
+  friend void ::protobuf_communication_2eproto::InitDefaultsCommunication_parameterImpl();
 };
 // -------------------------------------------------------------------
 
@@ -249,7 +245,7 @@ class Communication_parameter_all : public ::google::protobuf::Message /* @@prot
     return reinterpret_cast<const Communication_parameter_all*>(
                &_Communication_parameter_all_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     1;
 
   void Swap(Communication_parameter_all* other);
@@ -259,33 +255,28 @@ class Communication_parameter_all : public ::google::protobuf::Message /* @@prot
 
   // implements Message ----------------------------------------------
 
-  inline Communication_parameter_all* New() const final {
-    return CreateMaybeMessage<Communication_parameter_all>(NULL);
-  }
+  inline Communication_parameter_all* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Communication_parameter_all* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Communication_parameter_all>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Communication_parameter_all* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Communication_parameter_all& from);
   void MergeFrom(const Communication_parameter_all& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Communication_parameter_all* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -296,7 +287,7 @@ class Communication_parameter_all : public ::google::protobuf::Message /* @@prot
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -306,9 +297,6 @@ class Communication_parameter_all : public ::google::protobuf::Message /* @@prot
   bool has_communication_parameters() const;
   void clear_communication_parameters();
   static const int kCommunicationParametersFieldNumber = 1;
-  private:
-  const ::Communication_proto::Communication_parameter& _internal_communication_parameters() const;
-  public:
   const ::Communication_proto::Communication_parameter& communication_parameters() const;
   ::Communication_proto::Communication_parameter* release_communication_parameters();
   ::Communication_proto::Communication_parameter* mutable_communication_parameters();
@@ -321,9 +309,10 @@ class Communication_parameter_all : public ::google::protobuf::Message /* @@prot
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::Communication_proto::Communication_parameter* communication_parameters_;
   friend struct ::protobuf_communication_2eproto::TableStruct;
+  friend void ::protobuf_communication_2eproto::InitDefaultsCommunication_parameter_allImpl();
 };
 // ===================================================================
 
@@ -386,11 +375,8 @@ inline ::std::string* Communication_parameter::mutable_bind_string() {
 }
 inline ::std::string* Communication_parameter::release_bind_string() {
   // @@protoc_insertion_point(field_release:Communication_proto.Communication_parameter.bind_string)
-  if (!has_bind_string()) {
-    return NULL;
-  }
   clear_has_bind_string();
-  return bind_string_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return bind_string_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Communication_parameter::set_allocated_bind_string(::std::string* bind_string) {
   if (bind_string != NULL) {
@@ -489,9 +475,6 @@ inline void Communication_parameter_all::clear_communication_parameters() {
   if (communication_parameters_ != NULL) communication_parameters_->Clear();
   clear_has_communication_parameters();
 }
-inline const ::Communication_proto::Communication_parameter& Communication_parameter_all::_internal_communication_parameters() const {
-  return *communication_parameters_;
-}
 inline const ::Communication_proto::Communication_parameter& Communication_parameter_all::communication_parameters() const {
   const ::Communication_proto::Communication_parameter* p = communication_parameters_;
   // @@protoc_insertion_point(field_get:Communication_proto.Communication_parameter_all.communication_parameters)
@@ -508,8 +491,7 @@ inline ::Communication_proto::Communication_parameter* Communication_parameter_a
 inline ::Communication_proto::Communication_parameter* Communication_parameter_all::mutable_communication_parameters() {
   set_has_communication_parameters();
   if (communication_parameters_ == NULL) {
-    auto* p = CreateMaybeMessage<::Communication_proto::Communication_parameter>(GetArenaNoVirtual());
-    communication_parameters_ = p;
+    communication_parameters_ = new ::Communication_proto::Communication_parameter;
   }
   // @@protoc_insertion_point(field_mutable:Communication_proto.Communication_parameter_all.communication_parameters)
   return communication_parameters_;
@@ -545,4 +527,4 @@ inline void Communication_parameter_all::set_allocated_communication_parameters(
 
 // @@protoc_insertion_point(global_scope)
 
-#endif  // PROTOBUF_INCLUDED_communication_2eproto
+#endif  // PROTOBUF_communication_2eproto__INCLUDED

+ 1 - 0
main.cpp

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

File diff suppressed because it is too large
+ 430 - 274
message/measure_message.pb.cc


File diff suppressed because it is too large
+ 256 - 410
message/measure_message.pb.h


+ 218 - 120
message/message_base.pb.cc

@@ -7,6 +7,7 @@
 
 #include <google/protobuf/stubs/common.h>
 #include <google/protobuf/stubs/port.h>
+#include <google/protobuf/stubs/once.h>
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/wire_format_lite_inl.h>
 #include <google/protobuf/descriptor.h>
@@ -18,11 +19,6 @@
 #include "third_party/protobuf/version.h"
 #endif
 // @@protoc_insertion_point(includes)
-
-namespace protobuf_message_5fbase_2eproto {
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_message_5fbase_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Base_info;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_message_5fbase_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Car_info;
-}  // namespace protobuf_message_5fbase_2eproto
 namespace message {
 class Base_infoDefaultTypeInternal {
  public:
@@ -56,9 +52,14 @@ class Parkspace_infoDefaultTypeInternal {
 } _Parkspace_info_default_instance_;
 }  // namespace message
 namespace protobuf_message_5fbase_2eproto {
-static void InitDefaultsBase_info() {
+void InitDefaultsBase_infoImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::message::_Base_info_default_instance_;
     new (ptr) ::message::Base_info();
@@ -67,12 +68,20 @@ static void InitDefaultsBase_info() {
   ::message::Base_info::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Base_info =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsBase_info}, {}};
+void InitDefaultsBase_info() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsBase_infoImpl);
+}
 
-static void InitDefaultsBase_msg() {
+void InitDefaultsBase_msgImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   {
     void* ptr = &::message::_Base_msg_default_instance_;
     new (ptr) ::message::Base_msg();
@@ -81,13 +90,19 @@ static void InitDefaultsBase_msg() {
   ::message::Base_msg::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_Base_msg =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsBase_msg}, {
-      &protobuf_message_5fbase_2eproto::scc_info_Base_info.base,}};
+void InitDefaultsBase_msg() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsBase_msgImpl);
+}
 
-static void InitDefaultsError_manager() {
+void InitDefaultsError_managerImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::message::_Error_manager_default_instance_;
     new (ptr) ::message::Error_manager();
@@ -96,12 +111,19 @@ static void InitDefaultsError_manager() {
   ::message::Error_manager::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Error_manager =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsError_manager}, {}};
+void InitDefaultsError_manager() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsError_managerImpl);
+}
 
-static void InitDefaultsLocate_information() {
+void InitDefaultsLocate_informationImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::message::_Locate_information_default_instance_;
     new (ptr) ::message::Locate_information();
@@ -110,12 +132,19 @@ static void InitDefaultsLocate_information() {
   ::message::Locate_information::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Locate_information =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsLocate_information}, {}};
+void InitDefaultsLocate_information() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsLocate_informationImpl);
+}
 
-static void InitDefaultsCar_info() {
+void InitDefaultsCar_infoImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::message::_Car_info_default_instance_;
     new (ptr) ::message::Car_info();
@@ -124,12 +153,20 @@ static void InitDefaultsCar_info() {
   ::message::Car_info::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Car_info =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCar_info}, {}};
+void InitDefaultsCar_info() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsCar_infoImpl);
+}
 
-static void InitDefaultsParkspace_info() {
+void InitDefaultsParkspace_infoImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_message_5fbase_2eproto::InitDefaultsCar_info();
   {
     void* ptr = &::message::_Parkspace_info_default_instance_;
     new (ptr) ::message::Parkspace_info();
@@ -138,17 +175,9 @@ static void InitDefaultsParkspace_info() {
   ::message::Parkspace_info::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_Parkspace_info =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsParkspace_info}, {
-      &protobuf_message_5fbase_2eproto::scc_info_Car_info.base,}};
-
-void InitDefaults() {
-  ::google::protobuf::internal::InitSCC(&scc_info_Base_info.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Base_msg.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Error_manager.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Locate_information.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Car_info.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Parkspace_info.base);
+void InitDefaultsParkspace_info() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsParkspace_infoImpl);
 }
 
 ::google::protobuf::Metadata file_level_metadata[6];
@@ -272,14 +301,15 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
 
 void protobuf_AssignDescriptors() {
   AddDescriptors();
+  ::google::protobuf::MessageFactory* factory = NULL;
   AssignDescriptors(
-      "message_base.proto", schemas, file_default_instances, TableStruct::offsets,
+      "message_base.proto", schemas, file_default_instances, TableStruct::offsets, factory,
       file_level_metadata, file_level_enum_descriptors, NULL);
 }
 
 void protobuf_AssignDescriptorsOnce() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, protobuf_AssignDescriptors);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
 }
 
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
@@ -373,8 +403,8 @@ void AddDescriptorsImpl() {
 }
 
 void AddDescriptors() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
 }
 // Force AddDescriptors() to be called at dynamic initialization time.
 struct StaticDescriptorInitializer {
@@ -569,15 +599,17 @@ const int Base_info::kReceiverFieldNumber;
 
 Base_info::Base_info()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_message_5fbase_2eproto::scc_info_Base_info.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:message.Base_info)
 }
 Base_info::Base_info(const Base_info& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&msg_type_, &from.msg_type_,
     static_cast<size_t>(reinterpret_cast<char*>(&receiver_) -
@@ -586,6 +618,7 @@ Base_info::Base_info(const Base_info& from)
 }
 
 void Base_info::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&msg_type_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&receiver_) -
       reinterpret_cast<char*>(&msg_type_)) + sizeof(receiver_));
@@ -600,7 +633,9 @@ void Base_info::SharedDtor() {
 }
 
 void Base_info::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Base_info::descriptor() {
   ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
@@ -608,10 +643,17 @@ const ::google::protobuf::Descriptor* Base_info::descriptor() {
 }
 
 const Base_info& Base_info::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_message_5fbase_2eproto::scc_info_Base_info.base);
+  ::protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   return *internal_default_instance();
 }
 
+Base_info* Base_info::New(::google::protobuf::Arena* arena) const {
+  Base_info* n = new Base_info;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Base_info::Clear() {
 // @@protoc_insertion_point(message_clear_start:message.Base_info)
@@ -635,7 +677,7 @@ bool Base_info::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:message.Base_info)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -866,7 +908,9 @@ size_t Base_info::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -941,6 +985,7 @@ void Base_info::InternalSwap(Base_info* other) {
   swap(receiver_, other->receiver_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Base_info::GetMetadata() const {
@@ -961,15 +1006,17 @@ const int Base_msg::kBaseInfoFieldNumber;
 
 Base_msg::Base_msg()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_message_5fbase_2eproto::scc_info_Base_msg.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:message.Base_msg)
 }
 Base_msg::Base_msg(const Base_msg& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_base_info()) {
     base_info_ = new ::message::Base_info(*from.base_info_);
@@ -980,6 +1027,7 @@ Base_msg::Base_msg(const Base_msg& from)
 }
 
 void Base_msg::SharedCtor() {
+  _cached_size_ = 0;
   base_info_ = NULL;
 }
 
@@ -993,7 +1041,9 @@ void Base_msg::SharedDtor() {
 }
 
 void Base_msg::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Base_msg::descriptor() {
   ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
@@ -1001,10 +1051,17 @@ const ::google::protobuf::Descriptor* Base_msg::descriptor() {
 }
 
 const Base_msg& Base_msg::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_message_5fbase_2eproto::scc_info_Base_msg.base);
+  ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msg();
   return *internal_default_instance();
 }
 
+Base_msg* Base_msg::New(::google::protobuf::Arena* arena) const {
+  Base_msg* n = new Base_msg;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Base_msg::Clear() {
 // @@protoc_insertion_point(message_clear_start:message.Base_msg)
@@ -1027,7 +1084,7 @@ bool Base_msg::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:message.Base_msg)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1073,7 +1130,7 @@ void Base_msg::SerializeWithCachedSizes(
   // required .message.Base_info base_info = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, this->_internal_base_info(), output);
+      1, *this->base_info_, output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1095,7 +1152,7 @@ void Base_msg::SerializeWithCachedSizes(
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, this->_internal_base_info(), deterministic, target);
+        1, *this->base_info_, deterministic, target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1119,10 +1176,12 @@ size_t Base_msg::ByteSizeLong() const {
   if (has_base_info()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *base_info_);
+        *this->base_info_);
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -1184,6 +1243,7 @@ void Base_msg::InternalSwap(Base_msg* other) {
   swap(base_info_, other->base_info_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Base_msg::GetMetadata() const {
@@ -1204,15 +1264,17 @@ const int Error_manager::kErrorDescriptionFieldNumber;
 
 Error_manager::Error_manager()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_message_5fbase_2eproto::scc_info_Error_manager.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:message.Error_manager)
 }
 Error_manager::Error_manager(const Error_manager& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   error_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.has_error_description()) {
@@ -1225,6 +1287,7 @@ Error_manager::Error_manager(const Error_manager& from)
 }
 
 void Error_manager::SharedCtor() {
+  _cached_size_ = 0;
   error_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   ::memset(&error_code_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&error_level_) -
@@ -1241,7 +1304,9 @@ void Error_manager::SharedDtor() {
 }
 
 void Error_manager::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Error_manager::descriptor() {
   ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
@@ -1249,10 +1314,17 @@ const ::google::protobuf::Descriptor* Error_manager::descriptor() {
 }
 
 const Error_manager& Error_manager::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_message_5fbase_2eproto::scc_info_Error_manager.base);
+  ::protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
   return *internal_default_instance();
 }
 
+Error_manager* Error_manager::New(::google::protobuf::Arena* arena) const {
+  Error_manager* n = new Error_manager;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Error_manager::Clear() {
 // @@protoc_insertion_point(message_clear_start:message.Error_manager)
@@ -1262,7 +1334,8 @@ void Error_manager::Clear() {
 
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 0x00000001u) {
-    error_description_.ClearNonDefaultToEmptyNoArena();
+    GOOGLE_DCHECK(!error_description_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+    (*error_description_.UnsafeRawStringPointer())->clear();
   }
   if (cached_has_bits & 6u) {
     ::memset(&error_code_, 0, static_cast<size_t>(
@@ -1279,7 +1352,7 @@ bool Error_manager::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:message.Error_manager)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1455,7 +1528,9 @@ size_t Error_manager::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -1522,12 +1597,12 @@ void Error_manager::Swap(Error_manager* other) {
 }
 void Error_manager::InternalSwap(Error_manager* other) {
   using std::swap;
-  error_description_.Swap(&other->error_description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  error_description_.Swap(&other->error_description_);
   swap(error_code_, other->error_code_);
   swap(error_level_, other->error_level_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Error_manager::GetMetadata() const {
@@ -1555,15 +1630,17 @@ const int Locate_information::kLocateFrontThetaFieldNumber;
 
 Locate_information::Locate_information()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_message_5fbase_2eproto::scc_info_Locate_information.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:message.Locate_information)
 }
 Locate_information::Locate_information(const Locate_information& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&locate_x_, &from.locate_x_,
     static_cast<size_t>(reinterpret_cast<char*>(&locate_front_theta_) -
@@ -1572,6 +1649,7 @@ Locate_information::Locate_information(const Locate_information& from)
 }
 
 void Locate_information::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&locate_x_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&locate_front_theta_) -
       reinterpret_cast<char*>(&locate_x_)) + sizeof(locate_front_theta_));
@@ -1586,7 +1664,9 @@ void Locate_information::SharedDtor() {
 }
 
 void Locate_information::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Locate_information::descriptor() {
   ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
@@ -1594,10 +1674,17 @@ const ::google::protobuf::Descriptor* Locate_information::descriptor() {
 }
 
 const Locate_information& Locate_information::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_message_5fbase_2eproto::scc_info_Locate_information.base);
+  ::protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   return *internal_default_instance();
 }
 
+Locate_information* Locate_information::New(::google::protobuf::Arena* arena) const {
+  Locate_information* n = new Locate_information;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Locate_information::Clear() {
 // @@protoc_insertion_point(message_clear_start:message.Locate_information)
@@ -1626,7 +1713,7 @@ bool Locate_information::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:message.Locate_information)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1984,7 +2071,9 @@ size_t Locate_information::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2085,6 +2174,7 @@ void Locate_information::InternalSwap(Locate_information* other) {
   swap(locate_front_theta_, other->locate_front_theta_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Locate_information::GetMetadata() const {
@@ -2106,15 +2196,17 @@ const int Car_info::kLicenseFieldNumber;
 
 Car_info::Car_info()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_message_5fbase_2eproto::scc_info_Car_info.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsCar_info();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:message.Car_info)
 }
 Car_info::Car_info(const Car_info& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   license_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.has_license()) {
@@ -2127,6 +2219,7 @@ Car_info::Car_info(const Car_info& from)
 }
 
 void Car_info::SharedCtor() {
+  _cached_size_ = 0;
   license_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   ::memset(&car_length_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&car_height_) -
@@ -2143,7 +2236,9 @@ void Car_info::SharedDtor() {
 }
 
 void Car_info::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Car_info::descriptor() {
   ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
@@ -2151,10 +2246,17 @@ const ::google::protobuf::Descriptor* Car_info::descriptor() {
 }
 
 const Car_info& Car_info::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_message_5fbase_2eproto::scc_info_Car_info.base);
+  ::protobuf_message_5fbase_2eproto::InitDefaultsCar_info();
   return *internal_default_instance();
 }
 
+Car_info* Car_info::New(::google::protobuf::Arena* arena) const {
+  Car_info* n = new Car_info;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Car_info::Clear() {
 // @@protoc_insertion_point(message_clear_start:message.Car_info)
@@ -2164,7 +2266,8 @@ void Car_info::Clear() {
 
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 0x00000001u) {
-    license_.ClearNonDefaultToEmptyNoArena();
+    GOOGLE_DCHECK(!license_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+    (*license_.UnsafeRawStringPointer())->clear();
   }
   if (cached_has_bits & 14u) {
     ::memset(&car_length_, 0, static_cast<size_t>(
@@ -2181,7 +2284,7 @@ bool Car_info::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:message.Car_info)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -2378,7 +2481,9 @@ size_t Car_info::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2447,13 +2552,13 @@ void Car_info::Swap(Car_info* other) {
 }
 void Car_info::InternalSwap(Car_info* other) {
   using std::swap;
-  license_.Swap(&other->license_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  license_.Swap(&other->license_);
   swap(car_length_, other->car_length_);
   swap(car_width_, other->car_width_);
   swap(car_height_, other->car_height_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Car_info::GetMetadata() const {
@@ -2484,15 +2589,17 @@ const int Parkspace_info::kLeaveTimeFieldNumber;
 
 Parkspace_info::Parkspace_info()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_message_5fbase_2eproto::scc_info_Parkspace_info.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsParkspace_info();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:message.Parkspace_info)
 }
 Parkspace_info::Parkspace_info(const Parkspace_info& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   entry_time_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.has_entry_time()) {
@@ -2514,6 +2621,7 @@ Parkspace_info::Parkspace_info(const Parkspace_info& from)
 }
 
 void Parkspace_info::SharedCtor() {
+  _cached_size_ = 0;
   entry_time_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   leave_time_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   ::memset(&car_info_, 0, static_cast<size_t>(
@@ -2534,7 +2642,9 @@ void Parkspace_info::SharedDtor() {
 }
 
 void Parkspace_info::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Parkspace_info::descriptor() {
   ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
@@ -2542,10 +2652,17 @@ const ::google::protobuf::Descriptor* Parkspace_info::descriptor() {
 }
 
 const Parkspace_info& Parkspace_info::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_message_5fbase_2eproto::scc_info_Parkspace_info.base);
+  ::protobuf_message_5fbase_2eproto::InitDefaultsParkspace_info();
   return *internal_default_instance();
 }
 
+Parkspace_info* Parkspace_info::New(::google::protobuf::Arena* arena) const {
+  Parkspace_info* n = new Parkspace_info;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Parkspace_info::Clear() {
 // @@protoc_insertion_point(message_clear_start:message.Parkspace_info)
@@ -2556,10 +2673,12 @@ void Parkspace_info::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 7u) {
     if (cached_has_bits & 0x00000001u) {
-      entry_time_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!entry_time_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*entry_time_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000002u) {
-      leave_time_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!leave_time_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*leave_time_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000004u) {
       GOOGLE_DCHECK(car_info_ != NULL);
@@ -2587,7 +2706,7 @@ bool Parkspace_info::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:message.Parkspace_info)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -2831,7 +2950,7 @@ void Parkspace_info::SerializeWithCachedSizes(
   // optional .message.Car_info car_info = 9;
   if (cached_has_bits & 0x00000004u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      9, this->_internal_car_info(), output);
+      9, *this->car_info_, output);
   }
 
   // optional string entry_time = 10;
@@ -2915,7 +3034,7 @@ void Parkspace_info::SerializeWithCachedSizes(
   if (cached_has_bits & 0x00000004u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        9, this->_internal_car_info(), deterministic, target);
+        9, *this->car_info_, deterministic, target);
   }
 
   // optional string entry_time = 10;
@@ -2976,7 +3095,7 @@ size_t Parkspace_info::ByteSizeLong() const {
     if (has_car_info()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::MessageSize(
-          *car_info_);
+          *this->car_info_);
     }
 
     // optional int32 parkspace_id = 1;
@@ -3031,7 +3150,9 @@ size_t Parkspace_info::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -3125,10 +3246,8 @@ void Parkspace_info::Swap(Parkspace_info* other) {
 }
 void Parkspace_info::InternalSwap(Parkspace_info* other) {
   using std::swap;
-  entry_time_.Swap(&other->entry_time_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  leave_time_.Swap(&other->leave_time_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  entry_time_.Swap(&other->entry_time_);
+  leave_time_.Swap(&other->leave_time_);
   swap(car_info_, other->car_info_);
   swap(parkspace_id_, other->parkspace_id_);
   swap(index_, other->index_);
@@ -3140,6 +3259,7 @@ void Parkspace_info::InternalSwap(Parkspace_info* other) {
   swap(direction_, other->direction_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Parkspace_info::GetMetadata() const {
@@ -3150,27 +3270,5 @@ void Parkspace_info::InternalSwap(Parkspace_info* other) {
 
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace message
-namespace google {
-namespace protobuf {
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Base_info* Arena::CreateMaybeMessage< ::message::Base_info >(Arena* arena) {
-  return Arena::CreateInternal< ::message::Base_info >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Base_msg* Arena::CreateMaybeMessage< ::message::Base_msg >(Arena* arena) {
-  return Arena::CreateInternal< ::message::Base_msg >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Error_manager* Arena::CreateMaybeMessage< ::message::Error_manager >(Arena* arena) {
-  return Arena::CreateInternal< ::message::Error_manager >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Locate_information* Arena::CreateMaybeMessage< ::message::Locate_information >(Arena* arena) {
-  return Arena::CreateInternal< ::message::Locate_information >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Car_info* Arena::CreateMaybeMessage< ::message::Car_info >(Arena* arena) {
-  return Arena::CreateInternal< ::message::Car_info >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::message::Parkspace_info* Arena::CreateMaybeMessage< ::message::Parkspace_info >(Arena* arena) {
-  return Arena::CreateInternal< ::message::Parkspace_info >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
 
 // @@protoc_insertion_point(global_scope)

+ 135 - 177
message/message_base.pb.h

@@ -1,19 +1,19 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: message_base.proto
 
-#ifndef PROTOBUF_INCLUDED_message_5fbase_2eproto
-#define PROTOBUF_INCLUDED_message_5fbase_2eproto
+#ifndef PROTOBUF_message_5fbase_2eproto__INCLUDED
+#define PROTOBUF_message_5fbase_2eproto__INCLUDED
 
 #include <string>
 
 #include <google/protobuf/stubs/common.h>
 
-#if GOOGLE_PROTOBUF_VERSION < 3006001
+#if GOOGLE_PROTOBUF_VERSION < 3005000
 #error This file was generated by a newer version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please update
 #error your headers.
 #endif
-#if 3006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 3005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
 #error This file was generated by an older version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please
 #error regenerate this file with a newer version of protoc.
@@ -24,7 +24,6 @@
 #include <google/protobuf/arenastring.h>
 #include <google/protobuf/generated_message_table_driven.h>
 #include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
 #include <google/protobuf/metadata.h>
 #include <google/protobuf/message.h>
 #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
@@ -32,7 +31,6 @@
 #include <google/protobuf/generated_enum_reflection.h>
 #include <google/protobuf/unknown_field_set.h>
 // @@protoc_insertion_point(includes)
-#define PROTOBUF_INTERNAL_EXPORT_protobuf_message_5fbase_2eproto 
 
 namespace protobuf_message_5fbase_2eproto {
 // Internal implementation detail -- do not use these members.
@@ -45,6 +43,26 @@ struct TableStruct {
   static const ::google::protobuf::uint32 offsets[];
 };
 void AddDescriptors();
+void InitDefaultsBase_infoImpl();
+void InitDefaultsBase_info();
+void InitDefaultsBase_msgImpl();
+void InitDefaultsBase_msg();
+void InitDefaultsError_managerImpl();
+void InitDefaultsError_manager();
+void InitDefaultsLocate_informationImpl();
+void InitDefaultsLocate_information();
+void InitDefaultsCar_infoImpl();
+void InitDefaultsCar_info();
+void InitDefaultsParkspace_infoImpl();
+void InitDefaultsParkspace_info();
+inline void InitDefaults() {
+  InitDefaultsBase_info();
+  InitDefaultsBase_msg();
+  InitDefaultsError_manager();
+  InitDefaultsLocate_information();
+  InitDefaultsCar_info();
+  InitDefaultsParkspace_info();
+}
 }  // namespace protobuf_message_5fbase_2eproto
 namespace message {
 class Base_info;
@@ -66,16 +84,6 @@ class Parkspace_info;
 class Parkspace_infoDefaultTypeInternal;
 extern Parkspace_infoDefaultTypeInternal _Parkspace_info_default_instance_;
 }  // namespace message
-namespace google {
-namespace protobuf {
-template<> ::message::Base_info* Arena::CreateMaybeMessage<::message::Base_info>(Arena*);
-template<> ::message::Base_msg* Arena::CreateMaybeMessage<::message::Base_msg>(Arena*);
-template<> ::message::Car_info* Arena::CreateMaybeMessage<::message::Car_info>(Arena*);
-template<> ::message::Error_manager* Arena::CreateMaybeMessage<::message::Error_manager>(Arena*);
-template<> ::message::Locate_information* Arena::CreateMaybeMessage<::message::Locate_information>(Arena*);
-template<> ::message::Parkspace_info* Arena::CreateMaybeMessage<::message::Parkspace_info>(Arena*);
-}  // namespace protobuf
-}  // namespace google
 namespace message {
 
 enum Message_type {
@@ -332,7 +340,7 @@ class Base_info : public ::google::protobuf::Message /* @@protoc_insertion_point
     return reinterpret_cast<const Base_info*>(
                &_Base_info_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
   void Swap(Base_info* other);
@@ -342,33 +350,28 @@ class Base_info : public ::google::protobuf::Message /* @@protoc_insertion_point
 
   // implements Message ----------------------------------------------
 
-  inline Base_info* New() const final {
-    return CreateMaybeMessage<Base_info>(NULL);
-  }
+  inline Base_info* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Base_info* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Base_info>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Base_info* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Base_info& from);
   void MergeFrom(const Base_info& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Base_info* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -379,7 +382,7 @@ class Base_info : public ::google::protobuf::Message /* @@protoc_insertion_point
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -429,12 +432,13 @@ class Base_info : public ::google::protobuf::Message /* @@protoc_insertion_point
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   int msg_type_;
   ::google::protobuf::int32 timeout_ms_;
   int sender_;
   int receiver_;
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsBase_infoImpl();
 };
 // -------------------------------------------------------------------
 
@@ -479,7 +483,7 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
     return reinterpret_cast<const Base_msg*>(
                &_Base_msg_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     1;
 
   void Swap(Base_msg* other);
@@ -489,33 +493,28 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
 
   // implements Message ----------------------------------------------
 
-  inline Base_msg* New() const final {
-    return CreateMaybeMessage<Base_msg>(NULL);
-  }
+  inline Base_msg* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Base_msg* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Base_msg>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Base_msg* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Base_msg& from);
   void MergeFrom(const Base_msg& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Base_msg* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -526,7 +525,7 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -536,9 +535,6 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
   bool has_base_info() const;
   void clear_base_info();
   static const int kBaseInfoFieldNumber = 1;
-  private:
-  const ::message::Base_info& _internal_base_info() const;
-  public:
   const ::message::Base_info& base_info() const;
   ::message::Base_info* release_base_info();
   ::message::Base_info* mutable_base_info();
@@ -551,9 +547,10 @@ class Base_msg : public ::google::protobuf::Message /* @@protoc_insertion_point(
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::message::Base_info* base_info_;
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsBase_msgImpl();
 };
 // -------------------------------------------------------------------
 
@@ -598,7 +595,7 @@ class Error_manager : public ::google::protobuf::Message /* @@protoc_insertion_p
     return reinterpret_cast<const Error_manager*>(
                &_Error_manager_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     2;
 
   void Swap(Error_manager* other);
@@ -608,33 +605,28 @@ class Error_manager : public ::google::protobuf::Message /* @@protoc_insertion_p
 
   // implements Message ----------------------------------------------
 
-  inline Error_manager* New() const final {
-    return CreateMaybeMessage<Error_manager>(NULL);
-  }
+  inline Error_manager* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Error_manager* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Error_manager>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Error_manager* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Error_manager& from);
   void MergeFrom(const Error_manager& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Error_manager* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -645,7 +637,7 @@ class Error_manager : public ::google::protobuf::Message /* @@protoc_insertion_p
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -691,11 +683,12 @@ class Error_manager : public ::google::protobuf::Message /* @@protoc_insertion_p
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::internal::ArenaStringPtr error_description_;
   ::google::protobuf::int32 error_code_;
   int error_level_;
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsError_managerImpl();
 };
 // -------------------------------------------------------------------
 
@@ -740,7 +733,7 @@ class Locate_information : public ::google::protobuf::Message /* @@protoc_insert
     return reinterpret_cast<const Locate_information*>(
                &_Locate_information_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     3;
 
   void Swap(Locate_information* other);
@@ -750,33 +743,28 @@ class Locate_information : public ::google::protobuf::Message /* @@protoc_insert
 
   // implements Message ----------------------------------------------
 
-  inline Locate_information* New() const final {
-    return CreateMaybeMessage<Locate_information>(NULL);
-  }
+  inline Locate_information* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Locate_information* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Locate_information>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Locate_information* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Locate_information& from);
   void MergeFrom(const Locate_information& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Locate_information* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -787,7 +775,7 @@ class Locate_information : public ::google::protobuf::Message /* @@protoc_insert
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -888,7 +876,7 @@ class Locate_information : public ::google::protobuf::Message /* @@protoc_insert
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   float locate_x_;
   float locate_y_;
   float locate_angle_;
@@ -900,6 +888,7 @@ class Locate_information : public ::google::protobuf::Message /* @@protoc_insert
   bool locate_correct_;
   float locate_front_theta_;
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsLocate_informationImpl();
 };
 // -------------------------------------------------------------------
 
@@ -944,7 +933,7 @@ class Car_info : public ::google::protobuf::Message /* @@protoc_insertion_point(
     return reinterpret_cast<const Car_info*>(
                &_Car_info_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     4;
 
   void Swap(Car_info* other);
@@ -954,33 +943,28 @@ class Car_info : public ::google::protobuf::Message /* @@protoc_insertion_point(
 
   // implements Message ----------------------------------------------
 
-  inline Car_info* New() const final {
-    return CreateMaybeMessage<Car_info>(NULL);
-  }
+  inline Car_info* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Car_info* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Car_info>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Car_info* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Car_info& from);
   void MergeFrom(const Car_info& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Car_info* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -991,7 +975,7 @@ class Car_info : public ::google::protobuf::Message /* @@protoc_insertion_point(
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -1046,12 +1030,13 @@ class Car_info : public ::google::protobuf::Message /* @@protoc_insertion_point(
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::internal::ArenaStringPtr license_;
   float car_length_;
   float car_width_;
   float car_height_;
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsCar_infoImpl();
 };
 // -------------------------------------------------------------------
 
@@ -1096,7 +1081,7 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
     return reinterpret_cast<const Parkspace_info*>(
                &_Parkspace_info_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     5;
 
   void Swap(Parkspace_info* other);
@@ -1106,33 +1091,28 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
 
   // implements Message ----------------------------------------------
 
-  inline Parkspace_info* New() const final {
-    return CreateMaybeMessage<Parkspace_info>(NULL);
-  }
+  inline Parkspace_info* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Parkspace_info* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Parkspace_info>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Parkspace_info* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Parkspace_info& from);
   void MergeFrom(const Parkspace_info& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Parkspace_info* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -1143,7 +1123,7 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -1183,9 +1163,6 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   bool has_car_info() const;
   void clear_car_info();
   static const int kCarInfoFieldNumber = 9;
-  private:
-  const ::message::Car_info& _internal_car_info() const;
-  public:
   const ::message::Car_info& car_info() const;
   ::message::Car_info* release_car_info();
   ::message::Car_info* mutable_car_info();
@@ -1274,7 +1251,7 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::internal::ArenaStringPtr entry_time_;
   ::google::protobuf::internal::ArenaStringPtr leave_time_;
   ::message::Car_info* car_info_;
@@ -1287,6 +1264,7 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   int parkspace_status_;
   int direction_;
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsParkspace_infoImpl();
 };
 // ===================================================================
 
@@ -1416,9 +1394,6 @@ inline void Base_msg::clear_base_info() {
   if (base_info_ != NULL) base_info_->Clear();
   clear_has_base_info();
 }
-inline const ::message::Base_info& Base_msg::_internal_base_info() const {
-  return *base_info_;
-}
 inline const ::message::Base_info& Base_msg::base_info() const {
   const ::message::Base_info* p = base_info_;
   // @@protoc_insertion_point(field_get:message.Base_msg.base_info)
@@ -1435,8 +1410,7 @@ inline ::message::Base_info* Base_msg::release_base_info() {
 inline ::message::Base_info* Base_msg::mutable_base_info() {
   set_has_base_info();
   if (base_info_ == NULL) {
-    auto* p = CreateMaybeMessage<::message::Base_info>(GetArenaNoVirtual());
-    base_info_ = p;
+    base_info_ = new ::message::Base_info;
   }
   // @@protoc_insertion_point(field_mutable:message.Base_msg.base_info)
   return base_info_;
@@ -1563,11 +1537,8 @@ inline ::std::string* Error_manager::mutable_error_description() {
 }
 inline ::std::string* Error_manager::release_error_description() {
   // @@protoc_insertion_point(field_release:message.Error_manager.error_description)
-  if (!has_error_description()) {
-    return NULL;
-  }
   clear_has_error_description();
-  return error_description_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return error_description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Error_manager::set_allocated_error_description(::std::string* error_description) {
   if (error_description != NULL) {
@@ -1949,11 +1920,8 @@ inline ::std::string* Car_info::mutable_license() {
 }
 inline ::std::string* Car_info::release_license() {
   // @@protoc_insertion_point(field_release:message.Car_info.license)
-  if (!has_license()) {
-    return NULL;
-  }
   clear_has_license();
-  return license_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return license_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Car_info::set_allocated_license(::std::string* license) {
   if (license != NULL) {
@@ -2177,9 +2145,6 @@ inline void Parkspace_info::clear_car_info() {
   if (car_info_ != NULL) car_info_->Clear();
   clear_has_car_info();
 }
-inline const ::message::Car_info& Parkspace_info::_internal_car_info() const {
-  return *car_info_;
-}
 inline const ::message::Car_info& Parkspace_info::car_info() const {
   const ::message::Car_info* p = car_info_;
   // @@protoc_insertion_point(field_get:message.Parkspace_info.car_info)
@@ -2196,8 +2161,7 @@ inline ::message::Car_info* Parkspace_info::release_car_info() {
 inline ::message::Car_info* Parkspace_info::mutable_car_info() {
   set_has_car_info();
   if (car_info_ == NULL) {
-    auto* p = CreateMaybeMessage<::message::Car_info>(GetArenaNoVirtual());
-    car_info_ = p;
+    car_info_ = new ::message::Car_info;
   }
   // @@protoc_insertion_point(field_mutable:message.Parkspace_info.car_info)
   return car_info_;
@@ -2271,11 +2235,8 @@ inline ::std::string* Parkspace_info::mutable_entry_time() {
 }
 inline ::std::string* Parkspace_info::release_entry_time() {
   // @@protoc_insertion_point(field_release:message.Parkspace_info.entry_time)
-  if (!has_entry_time()) {
-    return NULL;
-  }
   clear_has_entry_time();
-  return entry_time_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return entry_time_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Parkspace_info::set_allocated_entry_time(::std::string* entry_time) {
   if (entry_time != NULL) {
@@ -2337,11 +2298,8 @@ inline ::std::string* Parkspace_info::mutable_leave_time() {
 }
 inline ::std::string* Parkspace_info::release_leave_time() {
   // @@protoc_insertion_point(field_release:message.Parkspace_info.leave_time)
-  if (!has_leave_time()) {
-    return NULL;
-  }
   clear_has_leave_time();
-  return leave_time_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return leave_time_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Parkspace_info::set_allocated_leave_time(::std::string* leave_time) {
   if (leave_time != NULL) {
@@ -2374,42 +2332,42 @@ inline void Parkspace_info::set_allocated_leave_time(::std::string* leave_time)
 namespace google {
 namespace protobuf {
 
-template <> struct is_proto_enum< ::message::Message_type> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Message_type> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Message_type>() {
   return ::message::Message_type_descriptor();
 }
-template <> struct is_proto_enum< ::message::Communicator> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Communicator> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Communicator>() {
   return ::message::Communicator_descriptor();
 }
-template <> struct is_proto_enum< ::message::Process_type> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Process_type> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Process_type>() {
   return ::message::Process_type_descriptor();
 }
-template <> struct is_proto_enum< ::message::Error_level> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Error_level> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Error_level>() {
   return ::message::Error_level_descriptor();
 }
-template <> struct is_proto_enum< ::message::Parkspace_status> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Parkspace_status> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Parkspace_status>() {
   return ::message::Parkspace_status_descriptor();
 }
-template <> struct is_proto_enum< ::message::Direction> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Direction> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Direction>() {
   return ::message::Direction_descriptor();
 }
-template <> struct is_proto_enum< ::message::Step_type> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Step_type> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Step_type>() {
   return ::message::Step_type_descriptor();
 }
-template <> struct is_proto_enum< ::message::Step_statu> : ::std::true_type {};
+template <> struct is_proto_enum< ::message::Step_statu> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::message::Step_statu>() {
   return ::message::Step_statu_descriptor();
@@ -2420,4 +2378,4 @@ inline const EnumDescriptor* GetEnumDescriptor< ::message::Step_statu>() {
 
 // @@protoc_insertion_point(global_scope)
 
-#endif  // PROTOBUF_INCLUDED_message_5fbase_2eproto
+#endif  // PROTOBUF_message_5fbase_2eproto__INCLUDED

+ 2 - 2
setting/communication.prototxt

@@ -3,8 +3,8 @@
 communication_parameters
 {
 
-  bind_string:"tcp://192.168.1.2:30010"
-  connect_string_vector:"tcp://192.168.1.2:30000"
+  bind_string:"tcp://192.168.1.233:30010"
+  connect_string_vector:"tcp://192.168.1.233:30000"
  # connect_string_vector:"tcp://192.168.2.166:9002"
 
   # connect_string_vector:"tcp://192.168.2.125:9876"

+ 35 - 35
setting/velodyne_manager.prototxt

@@ -1,7 +1,7 @@
-fence_data_path:"/home/zx/data/ground_detect/"
+fence_data_path:"/home/youchen/extra_space/chutian/fence_wj"
 #fence_log_path:"/home/zx/yct/MainStructure/new_electronic_fence/log"
-left_model_path:"/home/zx/yct/puai_wj_2021/setting/left_model.txt"
-right_model_path:"/home/zx/yct/puai_wj_2021/setting/right_model.txt"
+left_model_path:"/home/youchen/extra_space/chutian/measure/puai_wj_2021/setting/left_model.txt"
+right_model_path:"/home/youchen/extra_space/chutian/measure/puai_wj_2021/setting/right_model.txt"
 distribution_mode:false
 
 # 1 lidar
@@ -12,21 +12,21 @@ velodyne_lidars
     model:"VLP16"
     calibrationFile:"../setting/VLP16db.yaml"
     lidar_id:0
-    max_range:5.0
+    max_range:8.0
     min_range:0.1
-    min_angle:180
+    min_angle:0
     max_angle:360
     rpm:600
     calib
     {
-        # r:0.0310211
-        # p:-0.46
-        # y:0.514386
-        # cz:0.0897851
-        r:-0.623165
-        p:0.601821
-        y:87.0198
-        cz:0.101527
+         r:-0.276397
+         p:-0.11717
+         y:89.6003
+         cz:0.05467
+        #r:-0.623165
+        #p:0.601821
+        #y:87.0198
+        #cz:0.101527
     }
 }
 
@@ -38,21 +38,21 @@ velodyne_lidars
     model:"VLP16"
     calibrationFile:"../setting/VLP16db.yaml"
     lidar_id:1
-    max_range:5.0
+    max_range:8.0
     min_range:0.1
     min_angle:0
-    max_angle:195
+    max_angle:360
     rpm:600
     calib
     {
-        # r:-0.471486
-        # p:-0.599778
-        # y:0.00246781
-        # cz:0.0986272
-        r:0.462994
-        p:1.29624
-        y:96.0048
-        cz:0.09496
+        r:-0.202484
+        p:-0.106456
+        y:88.58717
+        cz:0.071634
+        #r:0.462994
+        #p:1.29624
+        #y:96.0048
+        #cz:0.09496
     }
 }
 
@@ -78,11 +78,11 @@ velodyne_lidars
 # 1 region
 region
 {
-    minx:-3.5
-	maxx:0.0
-	miny:-2.5
-	maxy:2.7
-	minz:-0.02
+    minx:-1.6
+	maxx:1.6
+	miny:-2.6
+	maxy:2.6
+	minz:0.02
 	maxz:0.2
     region_id:0
     lidar_exts
@@ -90,8 +90,8 @@ region
         lidar_id:0
         calib
         {
-            cx:0.0
-            cy:0.0
+            cx:1.9018
+            cy:-0.0175
         }
     }
     lidar_exts
@@ -99,10 +99,10 @@ region
         lidar_id:1
         calib
         {
-            cx:-4.021775
-            cy:-0.039429
-            # cx:0.05668
-            # cy:-3.5723
+            #cx:-4.021775
+            #cy:-0.039429
+            cx:-1.9018
+            cy:0.0175
         }
     }
 }
@@ -135,4 +135,4 @@ region
 #             cy:0.3
 #         }
 #     }
-# }
+# }

+ 189 - 0
velodyne_lidar/car_pose_detector.cpp

@@ -0,0 +1,189 @@
+/*
+ * @Description: 
+ * @Author: yct
+ * @Date: 2021-09-16 15:18:34
+ * @LastEditTime: 2021-09-22 17:26:17
+ * @LastEditors: yct
+ */
+
+#include "car_pose_detector.h"
+
+// 变换点云, 反向平移后旋转
+void Car_pose_detector::inv_trans_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud_ptr, double x, double y, double theta)
+{
+    for (int i = 0; i < cloud_ptr->size(); i++)
+    {
+        Eigen::Matrix<double, 2, 1> t_point(double(cloud_ptr->points[i].x) - x, double(cloud_ptr->points[i].y) - y);
+        Eigen::Rotation2D<double> rotation(theta);
+        Eigen::Matrix<double, 2, 2> rotation_matrix = rotation.toRotationMatrix();
+        Eigen::Matrix<double, 2, 1> trans_point = rotation_matrix * t_point;
+        cloud_ptr->points[i].x = trans_point.x();
+        cloud_ptr->points[i].y = trans_point.y();
+    }
+}
+
+// 变换点云,旋转后平移
+void Car_pose_detector::trans_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud_ptr, double x, double y, double theta)
+{
+    for (int i = 0; i < cloud_ptr->size(); i++)
+    {
+        Eigen::Matrix<double, 2, 1> t_point(double(cloud_ptr->points[i].x), double(cloud_ptr->points[i].y));
+        Eigen::Rotation2D<double> rotation(theta);
+        Eigen::Matrix<double, 2, 2> rotation_matrix = rotation.toRotationMatrix();
+        Eigen::Matrix<double, 2, 1> trans_point = rotation_matrix * t_point;
+        cloud_ptr->points[i].x = trans_point.x()+x;
+        cloud_ptr->points[i].y = trans_point.y()+y;
+    }
+}
+
+// 创建两轴具体曲线
+void Car_pose_detector::create_curve_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud_ptr, double width)
+{
+    for (double x = -2.5; x < 2.5; x += 0.02)
+    {
+        double left_value = 1.0 / (1.0 + exp(30 * (x + width / 2.0)));
+        double right_value = 1.0 / (1.0 + exp(30 * (-x + width / 2.0)));
+        double front_value = 1.0 / (1.0 + exp(15 * (x + 2.2)));
+        double back_value = 1.0 / (1.0 + exp(15 * (-x + 2.2)));
+        cloud_ptr->push_back(pcl::PointXYZ(x, std::max(left_value, right_value) - 3.0, 0.0));
+        cloud_ptr->push_back(pcl::PointXYZ(std::max(front_value, back_value) - 2.0, x, 0.0));
+    }
+}
+
+// 检测底盘z方向值,原始点云去中心,并切除底盘z以上部分
+bool Car_pose_detector::detect_pose(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr, pcl::PointCloud<pcl::PointXYZ>::Ptr out_cloud_ptr, double &x, double &y, double &theta, double &width, double &z_value, bool debug_cloud)
+{
+    pcl::PointCloud<pcl::PointXYZ>::Ptr t_cloud = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
+    t_cloud->operator+=(*cloud_ptr);
+    double t_vars[4] = {0, 0, 0, 1.9};
+    // 去中心化
+    pcl::PointXYZ t_center(0, 0, 0);
+    for (size_t i = 0; i < t_cloud->size(); i++)
+    {
+        // t_cloud->points[i].x /= 1000.0;
+        // t_cloud->points[i].y /= 1000.0;
+        // t_cloud->points[i].z /= 1000.0;
+        t_center.x += t_cloud->points[i].x;
+        t_center.y += t_cloud->points[i].y;
+        // t_center.z += t_cloud->points[i].z;
+    }
+    t_center.x /= t_cloud->size();
+    t_center.y /= t_cloud->size();
+    // t_center.z /= t_cloud->size();
+    for (size_t i = 0; i < t_cloud->size(); i++)
+    {
+        t_cloud->points[i].x -= t_center.x;
+        t_cloud->points[i].y -= t_center.y;
+        // t_cloud->points[i].z -= t_center.z;
+    }
+    // // write_pointcloud(t_cloud, std::to_string(count)+"_ori_");
+
+    // 构建最小二乘问题
+    ceres::Problem problem;
+    problem.AddResidualBlock( // 向问题中添加误差项
+        // 使用自动求导,模板参数:误差类型,输出维度,输入维度,维数要与前面struct中一致
+        new ceres::AutoDiffCostFunction<Car_pose_cost, ceres::DYNAMIC, 3>(
+            new Car_pose_cost(t_cloud), t_cloud->size()),
+        nullptr, // 核函数,这里不使用,为空
+        t_vars   // 待估计参数
+    );
+
+    // 配置求解器
+    ceres::Solver::Options options;                            // 这里有很多配置项可以填
+    options.linear_solver_type = ceres::DENSE_NORMAL_CHOLESKY; // 增量方程如何求解
+    options.minimizer_progress_to_stdout = false;              // 输出到cout
+    // options.max_num_iterations = 100;
+
+    ceres::Solver::Summary summary; // 优化信息
+    std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
+    ceres::Solve(options, &problem, &summary); // 开始优化
+    std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();
+    std::chrono::duration<double> time_used = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1);
+    // std::cout << "solve time cost = " << time_used.count() << " seconds. " << std::endl;
+
+    // 输出结果
+    // std::cout << summary.BriefReport() << std::endl;
+    // t_vars[3] -= 0.4;
+    x = t_vars[0];
+    y = t_vars[1];
+    theta = t_vars[2];
+    if(fabs(theta)>30*M_PI/180.0)
+    {
+        std::cout << "wrong angle, detect failed" << std::endl;
+        return false;
+    }
+
+    inv_trans_cloud(t_cloud, x, y, theta);
+    // viewer.showCloud(cloud_ptr);
+    // write_pointcloud(cloud_ptr, "uniform_");
+
+    // //离群点过滤
+    // pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
+    // sor.setInputCloud(t_cloud);
+    // sor.setMeanK(15);            //K近邻搜索点个数
+    // sor.setStddevMulThresh(3.0); //标准差倍数
+    // sor.setNegative(false);      //保留未滤波点(内点)
+    // sor.filter(*t_cloud);      //保存滤波结果到cloud_filter
+
+    // 判断x方向边界,若不关于中心对称则错误
+    pcl::PointXYZ total_min_p, total_max_p;
+    pcl::getMinMax3D(*t_cloud, total_min_p, total_max_p);
+    double x_diff = fabs(total_max_p.x + total_min_p.x) / 2.0;
+    if (x_diff > 2.0)
+    {
+        // std::cout << "left, right not mirroring----"<<x_diff << std::endl;
+    }
+    else
+    {
+        // std::cout << "x diff " << x_diff << std::endl;
+        width = total_max_p.x - total_min_p.x;
+        // 最大轮宽0.28再加上前轮极限旋转角35度
+        double wheel_width = 0.28 * (1 + sin(35 * M_PI / 180.0));
+        // std::cout << "car width: " << width << std::endl;
+        // 切出底盘点,找最低即为z值
+        pcl::PointCloud<pcl::PointXYZ>::Ptr inside_cloud = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
+        pcl::PassThrough<pcl::PointXYZ> pass;
+        pass.setInputCloud(t_cloud);
+        pass.setFilterFieldName("x");
+        pass.setFilterLimits(-width / 2.0 + wheel_width, width / 2.0 - wheel_width);
+        pass.setFilterLimitsNegative(false);
+        pass.filter(*inside_cloud);
+        // 找最低为z值
+        pcl::PointXYZ min_p, max_p;
+        pcl::getMinMax3D(*inside_cloud, min_p, max_p);
+        z_value = min_p.z-0.01;
+        // 根据z值切原始点云
+        pass.setInputCloud(t_cloud);
+        pass.setFilterFieldName("z");
+        pass.setFilterLimits(total_min_p.z, z_value);
+        pass.setFilterLimitsNegative(false);
+        pass.filter(*t_cloud);
+        // std::cout << "\n--------------------------- chassis z0: " << min_p.z << std::endl;
+
+        if (debug_cloud)
+        {
+            create_curve_cloud(t_cloud, t_vars[3]);
+
+            for (size_t i = 0; i < 60; i++)
+            {
+                t_cloud->push_back(pcl::PointXYZ(-t_vars[3] / 2.0, -3.0 + i * 0.1, 0.0));
+                t_cloud->push_back(pcl::PointXYZ(t_vars[3] / 2.0, -3.0 + i * 0.1, 0.0));
+                t_cloud->push_back(pcl::PointXYZ(-width / 2.0, -3.0 + i * 0.1, 0.0));
+                t_cloud->push_back(pcl::PointXYZ(width / 2.0, -3.0 + i * 0.1, 0.0));
+                t_cloud->push_back(pcl::PointXYZ(-width / 2.0 + wheel_width, -3.0 + i * 0.1, 0.0));
+                t_cloud->push_back(pcl::PointXYZ(width / 2.0 - wheel_width, -3.0 + i * 0.1, 0.0));
+            }
+            out_cloud_ptr->clear();
+            out_cloud_ptr->operator+=(*t_cloud);
+        }else
+        {
+            out_cloud_ptr->clear();
+            out_cloud_ptr->operator+=(*t_cloud);
+        }
+    }
+    x += t_center.x;
+    y += t_center.y;
+    // std::cout << "estimated x,y,theta = " << x << ", " << y << ", " << theta*180.0/M_PI << std::endl;
+    // std::cout << "----------------------------------" << std::endl;
+    return true;
+}

+ 151 - 0
velodyne_lidar/car_pose_detector.h

@@ -0,0 +1,151 @@
+/*
+ * @Description: 底盘z高度检测类,准确识别出平移,旋转,车宽,底盘高度,供3D车轮算法优化出车辆准确信息
+ * @Author: yct
+ * @Date: 2021-09-16 15:02:49
+ * @LastEditTime: 2021-09-22 15:01:45
+ * @LastEditors: yct
+ */
+
+#ifndef Z_DETECTOR_HH
+#define Z_DETECTOR_HH
+
+#include <iostream>
+#include <chrono>
+#include <ceres/ceres.h>
+#include <pcl/common/common.h>
+#include <pcl/point_cloud.h>
+#include <pcl/point_types.h>
+#include <pcl/filters/passthrough.h>
+#include <pcl/filters/statistical_outlier_removal.h>
+
+#include "../tool/singleton.h"
+
+// 代价函数的计算模型
+struct Car_pose_cost
+{
+    Car_pose_cost(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr) : m_cloud_ptr(cloud_ptr) {}
+
+    // 残差的计算
+    template <typename T>
+    bool operator()(
+        const T *const vars, // 模型参数,x y theta w
+        T *residual) const
+    {
+        if (m_cloud_ptr == nullptr || m_cloud_ptr->size() <= 0)
+        {
+            std::cout << "error occured" << std::endl;
+            return false;
+        }
+        const T norm_scale = T(0.002);
+        //residual[0] = T(0);
+        // residual[1] = T(0);
+        // residual[m_cloud_ptr->size()] = T(0.0);
+        // 点云loss
+        const T width = T(2.0); //vars[3];
+        for (int i = 0; i < m_cloud_ptr->size(); i++)
+        {
+            Eigen::Matrix<T, 2, 1> t_point(T(m_cloud_ptr->points[i].x) - vars[0], T(m_cloud_ptr->points[i].y) - vars[1]);
+            Eigen::Rotation2D<T> rotation(vars[2]);
+            Eigen::Matrix<T, 2, 2> rotation_matrix = rotation.toRotationMatrix();
+            Eigen::Matrix<T, 2, 1> t_trans_point = rotation_matrix * t_point;
+
+            T left_loss = T(1.0) / (T(1.0) + ceres::exp(T(30.0) * (t_trans_point.x() + width / T(2.0))));
+            T right_loss = T(1.0) / (T(1.0) + ceres::exp(T(30.0) * (-t_trans_point.x() + width / T(2.0))));
+            T front_loss = T(1.0) / (T(1.0) + ceres::exp(T(15.0) * (t_trans_point.y() + T(2.2))));
+            T back_loss = T(1.0) / (T(1.0) + ceres::exp(T(15.0) * (-t_trans_point.y() + T(2.2))));
+            residual[i] = left_loss + right_loss + front_loss + back_loss; // + norm_scale * ((left_loss - T(0.5)) + (right_loss - T(0.5)));
+            // residual[m_cloud_ptr->size()] += (left_loss - T(0.5)) + (right_loss - T(0.5));
+            // if(left_loss > T(0.01))
+            //   std::cout << "index l r: " << i << ", " << left_loss << ", " << right_loss << ", " << trans_point.x() << std::endl;
+        }
+
+        // // 参数L2正则化loss
+        // residual[m_cloud_ptr->size()] = T(m_cloud_ptr->size()) * width * norm_scale;
+        // residual[1] += ceres::pow(vars[1],2) * norm_scale;
+        // residual[1] += ceres::pow(vars[2],2) * norm_scale;
+        // residual[1] += ceres::pow((vars[3]-T(1.8)),2) * norm_scale;
+        // ((i != 3) ? norm_scale : norm_scale * T(m_cloud_ptr->size()));
+        return true;
+    }
+
+    pcl::PointCloud<pcl::PointXYZ>::Ptr m_cloud_ptr; // x,y数据
+};
+
+#include <opencv2/opencv.hpp>
+// 代价函数的计算模型
+struct Trans_mat_cost
+{
+    Trans_mat_cost(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr, cv::Mat mat) : m_cloud_ptr(cloud_ptr), m_mat(mat) {}
+
+    // 残差的计算
+    template <typename T>
+    bool operator()(
+        const T *const vars, // 模型参数,x y theta w
+        T *residual) const
+    {
+        if (m_cloud_ptr == nullptr || m_cloud_ptr->size() <= 0)
+        {
+            std::cout << "error occured" << std::endl;
+            return false;
+        }
+        const T norm_scale = T(0.002);
+        //residual[0] = T(0);
+        // residual[1] = T(0);
+        // residual[m_cloud_ptr->size()] = T(0.0);
+        // 点云loss
+        const T width = T(2.0); //vars[3];
+        for (int i = 0; i < m_cloud_ptr->size(); i++)
+        {
+            Eigen::Matrix<T, 2, 1> t_point(T(m_cloud_ptr->points[i].x) - vars[0], T(m_cloud_ptr->points[i].y) - vars[1]);
+            Eigen::Rotation2D<T> rotation(vars[2]);
+            Eigen::Matrix<T, 2, 2> rotation_matrix = rotation.toRotationMatrix();
+            Eigen::Matrix<T, 2, 1> t_trans_point = rotation_matrix * t_point;
+
+            T left_loss = T(1.0) / (T(1.0) + ceres::exp(T(30.0) * (t_trans_point.x() + width / T(2.0))));
+            T right_loss = T(1.0) / (T(1.0) + ceres::exp(T(30.0) * (-t_trans_point.x() + width / T(2.0))));
+            T front_loss = T(1.0) / (T(1.0) + ceres::exp(T(15.0) * (t_trans_point.y() + T(2.4))));
+            T back_loss = T(1.0) / (T(1.0) + ceres::exp(T(15.0) * (-t_trans_point.y() + T(2.4))));
+            residual[i] = left_loss + right_loss + front_loss + back_loss; // + norm_scale * ((left_loss - T(0.5)) + (right_loss - T(0.5)));
+            // residual[m_cloud_ptr->size()] += (left_loss - T(0.5)) + (right_loss - T(0.5));
+            // if(left_loss > T(0.01))
+            //   std::cout << "index l r: " << i << ", " << left_loss << ", " << right_loss << ", " << trans_point.x() << std::endl;
+        }
+
+        // // 参数L2正则化loss
+        // residual[m_cloud_ptr->size()] = T(m_cloud_ptr->size()) * width * norm_scale;
+        // residual[1] += ceres::pow(vars[1],2) * norm_scale;
+        // residual[1] += ceres::pow(vars[2],2) * norm_scale;
+        // residual[1] += ceres::pow((vars[3]-T(1.8)),2) * norm_scale;
+        // ((i != 3) ? norm_scale : norm_scale * T(m_cloud_ptr->size()));
+        return true;
+    }
+
+    pcl::PointCloud<pcl::PointXYZ>::Ptr m_cloud_ptr; // x,y数据
+    cv::Mat m_mat;
+};
+
+class Car_pose_detector : public Singleton<Car_pose_detector>
+{
+    friend class Singleton<Car_pose_detector>;
+public:
+    Car_pose_detector(const Car_pose_detector &) = delete;
+    Car_pose_detector &operator=(const Car_pose_detector &) = delete;
+    ~Car_pose_detector() = default;
+
+    // 变换点云
+    void inv_trans_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud_ptr, double x, double y, double theta);
+
+    // 变换点云
+    void trans_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud_ptr, double x, double y, double theta);
+
+    // 创建两轴具体曲线
+    void create_curve_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud_ptr, double width);
+
+    // 检测底盘z方向值,去中心,
+    bool detect_pose(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr, pcl::PointCloud<pcl::PointXYZ>::Ptr out_cloud_ptr, double &x, double &y, double &theta, double &width, double &z_value, bool debug_cloud=false);
+
+private:
+    // 父类的构造函数必须保护,子类的构造函数必须私有。
+    Car_pose_detector() = default;
+};
+#endif // !Z_DETECTOR_HH

+ 281 - 0
velodyne_lidar/chassis_ceres_solver.cpp

@@ -0,0 +1,281 @@
+//
+// Created by zx on 2021/9/17.
+//
+
+#include "chassis_ceres_solver.h"
+
+const float CERES_PA=(100.);
+const float CERES_PB=(300.);
+const float CERES_PC=(300.);
+
+class chassis_ceres_cost
+{
+ private:
+    pcl::PointCloud<pcl::PointXYZ>::Ptr m_cloud;     //点云
+
+ public:
+    chassis_ceres_cost(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud)
+            :m_cloud(cloud)
+    {
+    }
+
+    template<typename T>
+    bool operator()(const T *const variable, T *residual) const
+    {
+        T cx = variable[0];
+        T cy = variable[1];
+        T w=variable[2];
+        T h=variable[3];
+
+        const T PA=T(CERES_PA);
+        const T PB=T(CERES_PB);
+        const T PC=T(CERES_PC);
+        //
+        for (int i = 0; i < m_cloud->size(); ++i)
+        {
+            //先平移后旋转
+            const Eigen::Matrix<T, 2, 1> point((T(m_cloud->points[i].x)),
+                                               (T(m_cloud->points[i].z)));
+            T kx=point(0,0);
+            T ky=point(1,0);
+            T fx=1.0/(1.0+ceres::exp(-PA*(kx-cx+w/2.0)))-1.0/(1.0+ceres::exp(-PA*(kx-cx-w/2.0)));
+            T fy=1.0/(1.0+ceres::exp(-PB*(ky-cy+h/2.0)))-1.0/(1.0+ceres::exp(-PC*((ky-cy)-h/2.0)));
+
+            residual[i] = fx * fy; //+(50./m_cloud->size())/(w*h+1e-16);
+        }
+        residual[m_cloud->size()] = T(1.0) / (w * h + 1e-16);
+        return true;
+    }
+
+};
+
+// 公式转图片优化
+#include <ceres/cubic_interpolation.h>
+
+class GridArrayAdapter
+{
+public:
+    enum { DATA_DIMENSION = 1 };
+
+    explicit GridArrayAdapter(const cv::Mat& grid) : grid_(grid) {}
+
+    void GetValue(const int row, const int column, double* const value) const {
+        if (row < kPadding || column < kPadding || row >= NumRows() - kPadding ||
+            column >= NumCols() - kPadding) {
+            *value = kMaxCorrespondenceCost;
+        } else {
+            *value = static_cast<double>(grid_.at<double >(row - kPadding, column - kPadding));
+        }
+    }
+
+    int NumRows() const {
+        return grid_.rows + 2 * kPadding;
+    }
+
+    int NumCols() const {
+        return grid_.cols + 2 * kPadding;
+    }
+private:
+    const cv::Mat& grid_;
+};
+
+class chassis_mat_cost
+{
+ private:
+    pcl::PointCloud<pcl::PointXYZ>::Ptr m_cloud;     //点云
+    cv::Mat m_mat;
+
+public:
+    chassis_mat_cost(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, cv::Mat mat)
+            :m_cloud(cloud),m_mat(mat)
+    {
+    }
+
+    template<typename T>
+    bool operator()(const T *const variable, T *residual) const
+    {
+        T cx = variable[0];
+        T cy = variable[1];
+        T w_ratio = variable[2]/T(inner_width);
+        T h_ratio = variable[3]/T(chassis_height);
+
+        const GridArrayAdapter adapter(m_mat);
+        ceres::BiCubicInterpolator<GridArrayAdapter> interpolator(adapter);
+        //
+        for (int i = 0; i < m_cloud->size(); ++i)
+        {
+            //先平移后旋转
+            const Eigen::Matrix<T, 2, 1> point((T(m_cloud->points[i].x)-cx),
+                                               (T(m_cloud->points[i].z)-cy));
+            T kx=(point(0,0)*w_ratio-T(startx)) / T(resolutionx);
+            T ky=(point(1,0)*h_ratio-T(starty)) / T(resolutiony);
+            interpolator.Evaluate(kx, ky, &residual[i]);
+
+            // residual[i] = fx * fy; //+(50./m_cloud->size())/(w*h+1e-16);
+        }
+        residual[m_cloud->size()] = (w_ratio - T(1.0));
+        residual[m_cloud->size()+1] = (h_ratio - T(1.0));
+        return true;
+    }
+
+    // 生成debug图片
+    void generate_mat(cv::Mat &mat, pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, double *variables)
+    {
+        mat = m_mat.clone();
+        double w_ratio = variables[2] / inner_width;
+        double h_ratio = variables[3] / chassis_height;
+        for (size_t i = 0; i < cloud->size(); i++)
+        {
+            const Eigen::Vector2d point(
+                ((cloud->points[i].x - variables[0]) * w_ratio - startx) / resolutionx,
+                ((cloud->points[i].z - variables[1]) * h_ratio - starty) / resolutiony);
+            cv::circle(mat, cv::Point2d(point.y(), point.x()), 2, cv::Scalar(0.4), 1);
+            // std::cout << point.y() << ", " << point.x() << std::endl;
+        }
+    }
+
+};
+
+cv::Mat chassis_ceres_solver::m_model = chassis_ceres_solver::create_mat();
+
+chassis_ceres_solver::chassis_ceres_solver(){}
+chassis_ceres_solver::~chassis_ceres_solver(){}
+
+
+/**
+ * @description: 使用sigmoid函数寻找xoz平面平移以及内宽、底盘高度
+ */
+Error_manager chassis_ceres_solver::solve(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud,double& x,double& y,double& w,double& h)
+{
+    double variable[] = {x, y, w, h};
+    /*printf("init solve x:%.3f  y: %.3f  wheel:%.3f  width:%.3f    theta : %.3f   front theta: %.3f\n",
+            variable[0], variable[1], variable[3], variable[4], variable[2], variable[5]);*/
+
+    // 第二部分:构建寻优问题
+    ceres::Problem problem;
+    chassis_ceres_cost *cost_func = new chassis_ceres_cost(cloud);
+    //使用自动求导,将之前的代价函数结构体传入,第一个1是输出维度,即残差的维度,第二个1是输入维度,即待寻优参数x的维度。
+    ceres::CostFunction* cost_function =new
+            ceres::AutoDiffCostFunction<chassis_ceres_cost, ceres::DYNAMIC, 4>(
+            cost_func,cloud->size()+1);
+    problem.AddResidualBlock(cost_function, NULL, variable); //向问题中添加误差项,本问题比较简单,添加一个就行。
+
+
+
+    //第三部分: 配置并运行求解器
+    ceres::Solver::Options options;
+    options.use_nonmonotonic_steps=false;
+    options.linear_solver_type = ceres::DENSE_QR; //配置增量方程的解法
+    //options.logging_type = ceres::LoggingType::SILENT;
+    options.max_num_iterations=500;
+    options.num_threads=1;
+    options.minimizer_progress_to_stdout = false;//输出到cout
+    ceres::Solver::Summary summary;//优化信息
+    ceres::Solve(options, &problem, &summary);//求解!!!
+
+    double loss=summary.final_cost/(cloud->size());
+
+    x=variable[0];
+    y=variable[1];
+//     printf(" loss : %f    x:%.5f   y:%.5f  w:%.5f  h:%.5f\n",
+//             loss,variable[0],variable[1],variable[2],variable[3]);
+
+
+
+    return SUCCESS;
+}
+
+/**
+ * @description: 图片代替函数十倍提升优化速度
+ */
+Error_manager chassis_ceres_solver::solve_mat(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud,double& x,double& y,double& w,double& h, bool update_debug_img)
+{
+    // std::chrono::steady_clock::time_point t0 = std::chrono::steady_clock::now();
+    // create_mat(m_model);
+
+    std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
+    // std::chrono::duration<double> time_used_mat = std::chrono::duration_cast<std::chrono::duration<double>>(t1 - t0);
+
+    double variable[] = {x, y, w, h};
+    /*printf("init solve x:%.3f  y: %.3f  wheel:%.3f  width:%.3f    theta : %.3f   front theta: %.3f\n",
+            variable[0], variable[1], variable[3], variable[4], variable[2], variable[5]);*/
+
+    // 第二部分:构建寻优问题
+    ceres::Problem problem;
+    chassis_mat_cost *cost_func = new chassis_mat_cost(cloud, m_model);
+    //使用自动求导,将之前的代价函数结构体传入,第一个1是输出维度,即残差的维度,第二个1是输入维度,即待寻优参数x的维度。
+    ceres::CostFunction* cost_function =new
+            ceres::AutoDiffCostFunction<chassis_mat_cost, ceres::DYNAMIC, 4>(
+            cost_func, cloud->size()+2);
+    problem.AddResidualBlock(cost_function, NULL, variable); //向问题中添加误差项,本问题比较简单,添加一个就行。
+
+    //第三部分: 配置并运行求解器
+    ceres::Solver::Options options;
+    options.use_nonmonotonic_steps=false;
+    options.linear_solver_type = ceres::DENSE_QR; //配置增量方程的解法
+    //options.logging_type = ceres::LoggingType::SILENT;
+    options.max_num_iterations=500;
+    options.num_threads=1;
+    options.minimizer_progress_to_stdout = false;//输出到cout
+    ceres::Solver::Summary summary;//优化信息
+    ceres::Solve(options, &problem, &summary);//求解!!!
+
+    double loss=summary.final_cost/(cloud->size());
+
+    x = variable[0];
+    y = variable[1];
+    w = variable[2];
+    h = variable[3];
+    // printf(" loss : %f    x:%.5f   y:%.5f  w:%.5f  h:%.5f\n",
+    //         loss,variable[0],variable[1],variable[2],variable[3]);
+
+    std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();
+    std::chrono::duration<double> time_used_solve = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1);
+
+    if(update_debug_img)
+    {
+        cost_func->generate_mat(m_projected_mat, cloud, variable);
+        // cv::namedWindow("win", cv::WINDOW_FREERATIO);
+        // cv::imshow("win", m_projected_mat);
+        // cv::waitKey(30);
+    }
+
+
+    std::chrono::steady_clock::time_point t3 = std::chrono::steady_clock::now();
+    std::chrono::duration<double> time_used_disp = std::chrono::duration_cast<std::chrono::duration<double>>(t3 - t2);
+    // std::cout << "\ntime used for solve, display in ms: " << time_used_solve.count() << ", " << time_used_disp.count() << std::endl
+    //           << std::endl;
+
+    return SUCCESS;
+}
+
+cv::Mat chassis_ceres_solver::create_mat()
+{
+    int rows = (endx - startx) / resolutionx + 1;
+    int cols = (endy - starty) / resolutiony + 1;
+    if(rows<=1 || cols <=1)
+        return cv::Mat();
+    cv::Mat t_mat(rows, cols, CV_32FC1);
+
+    for (size_t i = 0; i < rows; i++)
+    {
+        for (size_t j = 0; j < cols; j++)
+        {
+            double x = i * resolutionx + startx;
+            double y = j * resolutiony + starty;
+            double fx = 1.0 / (1.0 + std::exp(-CERES_PA * (x + inner_width / 2.0))) - 1.0 / (1.0 + std::exp(-CERES_PA * (x - inner_width / 2.0)));
+            double fy = 1.0 / (1.0 + std::exp(-CERES_PB * (y + chassis_height / 2.0))) - 1.0 / (1.0 + std::exp(-CERES_PC * (y - chassis_height / 2.0)));
+            t_mat.at<float>(i, j) = fx * fy;
+            // std::cout << "x,y: " << x << ", " << y << "-----value: " << 1.0 / (1.0 + std::exp(-CERES_PA * (x + default_width / 2.0)))<<", "<<
+            //   1.0 / (1.0 + std::exp(-CERES_PA * (x - default_width / 2.0))) << std::endl;
+        }
+    }
+    cv::normalize(t_mat, t_mat, 1.0, 0.1, cv::NORM_MINMAX);
+    // std::cout << t_mat << std::endl;
+
+    // cv::namedWindow("win", cv::WINDOW_FREERATIO);
+    // cv::imshow("win", t_mat);
+    // cv::waitKey(0);
+
+    return t_mat;
+}

+ 69 - 0
velodyne_lidar/chassis_ceres_solver.h

@@ -0,0 +1,69 @@
+//
+// Created by zx on 2021/9/17.
+//
+
+#ifndef FIND_CHASSIS__CHASSIS_CERES_SOLVER_H_
+#define FIND_CHASSIS__CHASSIS_CERES_SOLVER_H_
+#include <ceres/ceres.h>
+#include <glog/logging.h>
+#include <pcl/point_types.h>
+#include <pcl/point_cloud.h>
+#include <pcl/common/centroid.h>
+#include <opencv2/opencv.hpp>
+#include <iostream>
+#include <string>
+#include <chrono>
+
+#include "../error_code/error_code.h"
+
+constexpr float kMinProbability = 0.01f;
+constexpr float kMaxProbability = 1.f - kMinProbability;
+constexpr float kMaxCorrespondenceCost = 1.f - kMinProbability;
+constexpr int kPadding = INT_MAX / 4;
+constexpr float resolutionx = 0.01;
+constexpr float resolutiony = 0.005;
+constexpr float inner_width = 1.2;
+constexpr float chassis_height = 0.14;
+constexpr float startx = -2.0;
+constexpr float starty = -0.1;
+constexpr float endx = 2.0;
+constexpr float endy = 0.3;
+
+class chassis_ceres_solver
+{
+ public:
+    chassis_ceres_solver();
+    ~chassis_ceres_solver();
+
+    Error_manager solve(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud,double& x,double& z,double& w,double& h);
+
+    // 利用图像优化,计算速度提升
+    Error_manager solve_mat(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud,double& x,double& z,double& w,double& h, bool update_debug_img=false);
+
+    // 创建优化地图
+    static cv::Mat create_mat();
+    // 返回更新投影地图
+    cv::Mat get_projected_mat() { return m_projected_mat; }
+    // 返回投影地图转换的点云, 便于投影到pcl视野中
+    pcl::PointCloud<pcl::PointXYZ>::Ptr get_projected_cloud()
+    {
+       pcl::PointCloud<pcl::PointXYZ>::Ptr t_cloud = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
+       if (m_projected_mat.empty())
+          return t_cloud;
+       for (size_t i = 0; i < m_projected_mat.rows; i++)
+       {
+          for (size_t j = 0; j < m_projected_mat.cols; j++)
+          {
+             double x0 = (i * resolutionx + startx);
+             t_cloud->push_back(pcl::PointXYZ());
+          }
+       }
+       return t_cloud;
+    }
+
+ private:
+    static cv::Mat m_model;
+    cv::Mat m_projected_mat;
+};
+
+#endif //FIND_CHASSIS__CHASSIS_CERES_SOLVER_H_

+ 138 - 28
velodyne_lidar/ground_region.cpp

@@ -13,6 +13,7 @@
 // 测量结果滤波,不影响现有结构
 #include "../tool/measure_filter.h"
 
+
 //欧式聚类*******************************************************
 std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> Ground_region::segmentation(pcl::PointCloud<pcl::PointXYZ>::Ptr sor_cloud)
 {
@@ -220,7 +221,7 @@ bool Ground_region::classify_ceres_detect(pcl::PointCloud<pcl::PointXYZ>::Ptr cl
     //下采样
     pcl::VoxelGrid<pcl::PointXYZ> vox;   //创建滤波对象
     vox.setInputCloud(cloud_filtered);   //设置需要过滤的点云给滤波对象
-    vox.setLeafSize(0.02f, 0.02f, 0.2f); //设置滤波时创建的体素体积为1cm的立方体
+    vox.setLeafSize(0.02f, 0.02f, 0.02f); //设置滤波时创建的体素体积为1cm的立方体
     vox.filter(*cloud_filtered);         //执行滤波处理,存储输出
     if (cloud_filtered->size() == 0)
     {
@@ -265,7 +266,7 @@ bool Ground_region::classify_ceres_detect(pcl::PointCloud<pcl::PointXYZ>::Ptr cl
         }
         else
         {
-            LOG(WARNING) << error_str;
+            // LOG(WARNING) << error_str;
             return false;
         }
     }
@@ -301,6 +302,7 @@ Error_manager Ground_region::init(velodyne::Region region, pcl::PointCloud<pcl::
     m_detector = new detect_wheel_ceres3d(left_model,right_model);
     mp_cloud_collection = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
     mp_cloud_filtered = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
+    mp_cloud_detect_z = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
     m_measure_thread = new std::thread(&Ground_region::thread_measure_func, this);
     m_measure_condition.reset();
     m_region_status = E_READY;
@@ -330,6 +332,7 @@ Error_manager Ground_region::detect(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, d
     if (cloud->size() == 0)
         return Error_manager(VELODYNE_REGION_EMPTY_CLOUD, NORMAL, "no point");
 
+    std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
     pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);
     for (int i = 0; i < cloud->size(); ++i)
     {
@@ -339,47 +342,141 @@ Error_manager Ground_region::detect(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, d
             cloud_filtered->push_back(pt);
         }
     }
+    //离群点过滤
+    pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
+    sor.setInputCloud(cloud_filtered);
+    sor.setMeanK(15);            //K近邻搜索点个数
+    sor.setStddevMulThresh(3.0); //标准差倍数
+    sor.setNegative(false);      //保留未滤波点(内点)
+    sor.filter(*cloud_filtered);      //保存滤波结果到cloud_filter
+
+    //下采样
+    pcl::ApproximateVoxelGrid<pcl::PointXYZ> vox;   //创建滤波对象
+    vox.setInputCloud(cloud_filtered);   //设置需要过滤的点云给滤波对象
+    vox.setLeafSize(0.02f, 0.02f, 0.02f); //设置滤波时创建的体素体积为1cm的立方体
+    vox.filter(*cloud_filtered);         //执行滤波处理,存储输出
+
     if (cloud_filtered->size() == 0)
         return Error_manager(VELODYNE_REGION_EMPTY_CLOUD, NORMAL, "filtered no point");
 
+    // 更新过滤点
     m_filtered_cloud_mutex.lock();
     mp_cloud_filtered->clear();
     mp_cloud_filtered->operator+=(*cloud_filtered);
     m_filtered_cloud_mutex.unlock();
 
-    float start_z = m_region.minz();
-    float max_z = 0.2;
-    float center_z = (start_z + max_z) / 2.0;
-    float last_center_z = start_z;
-    float last_succ_z = -1.0;
-    int count = 0;
-    //二分法 找识别成功的 最高的z
-    std::vector<detect_wheel_ceres3d::Detect_result> results;
-    do
+    // z detect
+    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_detect_z(new pcl::PointCloud<pcl::PointXYZ>);
+    double x, y, theta, width, z_value=0.2;
+    if(!Car_pose_detector::get_instance_references().detect_pose(cloud_filtered, cloud_detect_z, x, y, theta, width, z_value, false))
     {
-        detect_wheel_ceres3d::Detect_result result;
-        bool ret = classify_ceres_detect(cloud_filtered, center_z, result);
-        // std::cout << "z: " << center_z <<", "<<start_z<<"," << max_z <<(ret?"clustered":"clustering failed")<< std::endl;
-        if (ret)
+        return Error_manager(VELODYNE_REGION_CERES_SOLVE_ERROR, NEGLIGIBLE_ERROR, "find chassis z value failed.");
+    }
+    std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();
+    std::chrono::duration<double> time_used_bowl = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1);
+
+    // ***************** 测试xoz优化底盘检测算法 *****************
+    chassis_ceres_solver t_solver;
+    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_z_solver(new pcl::PointCloud<pcl::PointXYZ>);
+    for (int i = 0; i < cloud->size(); ++i)
+    {
+        pcl::PointXYZ pt = cloud->points[i];
+        if (pt.x > m_region.minx() && pt.x < m_region.maxx() && pt.y > m_region.miny() && pt.y < m_region.maxy())
         {
-            results.push_back(result);
-            last_succ_z = center_z;
-            start_z = center_z;
-            last_center_z = center_z;
+            cloud_z_solver->push_back(pt);
         }
-        else
+    }
+    double mid_z = 0.05, height = 0.08;
+    Car_pose_detector::get_instance_references().inv_trans_cloud(cloud_z_solver, x, y, theta);
+    // //下采样
+    // vox.setInputCloud(cloud_z_solver);   //设置需要过滤的点云给滤波对象
+    // vox.setLeafSize(0.02f, 0.02f, 0.02f); //设置滤波时创建的体素体积为1cm的立方体
+    // vox.filter(*cloud_z_solver);         //执行滤波处理,存储输出
+
+    x = 0.0;
+    width = 1.0;
+    // Error_manager ec = t_solver.solve(cloud_z_solver, x, mid_z, width, height);
+    Error_manager ec = t_solver.solve_mat(cloud_z_solver, x, mid_z, width, height, false);
+    // 切除大于height高度以外点,并显示width直线
+    // 根据z值切原始点云
+    pcl::PassThrough<pcl::PointXYZ> pass;
+    pass.setInputCloud(cloud_z_solver);
+    pass.setFilterFieldName("z");
+    pass.setFilterLimits(m_region.minz(), mid_z + height / 2.0);
+    pass.setFilterLimitsNegative(false);
+    pass.filter(*cloud_z_solver);
+    for (double i = -3.0; i < 3.0; i+=0.02)
+    {
+        cloud_z_solver->push_back(pcl::PointXYZ(-width/2.0, i, 0));
+        cloud_z_solver->push_back(pcl::PointXYZ(width/2.0, i, 0));
+    }
+    // std::cout << "\n------------------------------------ chassis z1: " << mid_z + height / 2.0 << std::endl;
+    std::chrono::steady_clock::time_point t3 = std::chrono::steady_clock::now();
+    std::chrono::duration<double> time_used_block = std::chrono::duration_cast<std::chrono::duration<double>>(t3 - t2);
+
+    // 更新z中间点
+    m_detect_z_cloud_mutex.lock();
+    mp_cloud_detect_z->clear();
+    mp_cloud_detect_z->operator+=(*cloud_z_solver);
+    m_detect_z_cloud_mutex.unlock();
+
+    // 二分法存在错误,直接使用底盘z值
+    std::vector<detect_wheel_ceres3d::Detect_result> results;
+    detect_wheel_ceres3d::Detect_result result;
+    double chassis_z = mid_z + height / 2.0; // + 0.02;
+    if(chassis_z > m_region.maxz() || chassis_z < m_region.minz())
+    {
+        return Error_manager(VELODYNE_REGION_CERES_SOLVE_ERROR, NEGLIGIBLE_ERROR, (std::string("failed to find chassis z value: ")+std::to_string(chassis_z)).c_str());
+    }
+    bool ret = false;
+    while(chassis_z > mid_z)
+    {
+        ret = classify_ceres_detect(cloud_filtered, chassis_z, result);
+        // changed by yct, 暂时直接识别,调试用,之后将条件恢复
+        if(ret)
         {
-            max_z = center_z;
-            last_center_z = center_z;
+            results.push_back(result);
+            break;
+        }else{
+            chassis_z -= 0.01;
         }
-        center_z = (start_z + max_z) / 2.0;
-        count++;
-
-    } while (fabs(center_z - last_center_z) > 0.01);
+    }
+    // float start_z = m_region.minz();
+    // float max_z = z_value;//0.2;
+    // float center_z = (start_z + max_z) / 2.0;
+    // float last_center_z = start_z;
+    // float last_succ_z = -1.0;
+    // int count = 0;
+    // //二分法 找识别成功的 最高的z
+    // std::vector<detect_wheel_ceres3d::Detect_result> results;
+    // do
+    // {
+    //     detect_wheel_ceres3d::Detect_result result;
+    //     bool ret = classify_ceres_detect(cloud_filtered, center_z, result);
+    //     // std::cout << "z: " << center_z <<", "<<start_z<<"," << max_z <<(ret?"clustered":"clustering failed")<< std::endl;
+    //     if (ret)
+    //     {
+    //         results.push_back(result);
+    //         last_succ_z = center_z;
+    //         start_z = center_z;
+    //         last_center_z = center_z;
+    //     }
+    //     else
+    //     {
+    //         max_z = center_z;
+    //         last_center_z = center_z;
+    //     }
+    //     center_z = (start_z + max_z) / 2.0;
+    //     count++;
+
+    // } while (fabs(center_z - last_center_z) > 0.01);
+    std::chrono::steady_clock::time_point t4 = std::chrono::steady_clock::now();
+    std::chrono::duration<double> time_used_div = std::chrono::duration_cast<std::chrono::duration<double>>(t4 - t3);
+    // std::cout << "\n------------------------------------------------------------ " << std::to_string(time_used_bowl.count()) << " " << std::to_string(time_used_block.count()) << " " << std::to_string(time_used_div.count()) << std::endl;
 
-    //
     if (results.size() == 0)
     {
+        std::cout << "\n-------- no result: " << std::endl;
         return Error_manager(FAILED, NORMAL, "no car detected");
     }
     ///  to be
@@ -404,7 +501,16 @@ Error_manager Ground_region::detect(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, d
     // printf("z : %.3f  angle : %.3f front : %.3f wheel_base:%.3f,width:%.3f, mean:%.5f\n",
     //        center_z, last_result.theta, last_result.front_theta, last_result.wheel_base, last_result.width,
     //        min_mean_loss);
-    //m_detector->save_debug_data("/home/zx/zzw/catkin_ws/src/feature_extra/debug");
+    // std::cout << "\n-------- final z: " << chassis_z << std::endl;
+    // std::cout << "cx: " << last_result.cx << ", cy: " << last_result.cy << ", theta: " << last_result.theta
+    //           << ", front: " << last_result.front_theta << ", wheelbase: " << last_result.wheel_base << ", width: " << last_result.width << std::endl;
+
+    // last_result.cx -= x;
+    // last_result.cy -= y;
+    // last_result.theta -= theta;
+
+    // // changed by yct, save 3d wheel detect result.
+    // m_detector->save_debug_data("/home/youchen/extra_space/chutian/measure/chutian_velo_ws/log/debug");
     return SUCCESS;
 }
 
@@ -476,6 +582,10 @@ Error_manager Ground_region::update_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr cl
     // LOG(WARNING) << "update region cloud size: " << mp_cloud_collection->size() << ",,, input size: " << cloud->size();
     m_cloud_collection_time = std::chrono::system_clock::now();
     m_measure_condition.notify_one(false, true);
+
+    // std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
+    // std::chrono::duration<double> time_used_update = std::chrono::duration_cast<std::chrono::duration<double>>(t1 - t0);
+    // std::cout << "update cloud time: " << time_used_update.count() << std::endl;
     return SUCCESS;
 }
 

+ 12 - 1
velodyne_lidar/ground_region.h

@@ -14,12 +14,15 @@
 #include "velodyne_config.pb.h"
 #include "../message/measure_message.pb.h"
 #include "../verify/Verify_result.h"
+#include "car_pose_detector.h"
+#include "chassis_ceres_solver.h"
 
 #include <opencv2/opencv.hpp>
 #include <glog/logging.h>
 
 #include <pcl/point_types.h>
 #include <pcl/point_cloud.h>
+#include <pcl/filters/approximate_voxel_grid.h>
 
 class Ground_region
 {
@@ -32,6 +35,7 @@ public:
       right_front = 3,
       right_back = 4,
       filtered = 5,
+      detect_z=6,
    };
    enum Ground_region_status
    {
@@ -60,7 +64,6 @@ public:
 
    void get_region_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr &out_cloud, Region_cloud_type type)
    {
-      std::lock_guard<std::mutex> lck(m_cloud_collection_mutex);
       out_cloud->clear();
       if(m_detector==nullptr)
          return;
@@ -89,6 +92,11 @@ public:
          out_cloud->operator+=(*mp_cloud_filtered);
          m_filtered_cloud_mutex.unlock();
          break;
+      case Region_cloud_type::detect_z:
+         m_detect_z_cloud_mutex.lock();
+         out_cloud->operator+=(*mp_cloud_detect_z);
+         m_detect_z_cloud_mutex.unlock();
+         break;
       }
    }
    // 获取区域终端号, 注意!未初始化调用将返回-1
@@ -146,6 +154,9 @@ private:
    std::mutex	 								      m_filtered_cloud_mutex;       // 点云更新互斥锁, 内存由上级管理
    pcl::PointCloud<pcl::PointXYZ>::Ptr       mp_cloud_filtered;      // 区域切除后的点
 
+   std::mutex	 								      m_detect_z_cloud_mutex;       // 点云更新互斥锁, 内存由上级管理
+   pcl::PointCloud<pcl::PointXYZ>::Ptr       mp_cloud_detect_z;      // 区域切除后的点
+
    Common_data::Car_wheel_information			m_car_wheel_information;		//车轮的定位结果,
 	std::chrono::system_clock::time_point		m_detect_update_time;			//定位结果的更新时间.
 };

+ 214 - 145
velodyne_lidar/velodyne_config.pb.cc

@@ -7,6 +7,7 @@
 
 #include <google/protobuf/stubs/common.h>
 #include <google/protobuf/stubs/port.h>
+#include <google/protobuf/stubs/once.h>
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/wire_format_lite_inl.h>
 #include <google/protobuf/descriptor.h>
@@ -18,13 +19,6 @@
 #include "third_party/protobuf/version.h"
 #endif
 // @@protoc_insertion_point(includes)
-
-namespace protobuf_velodyne_5fconfig_2eproto {
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_velodyne_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CalibParameter;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_velodyne_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Region;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_velodyne_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_lidarExtrinsic;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_velodyne_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_velodyneLidarParams;
-}  // namespace protobuf_velodyne_5fconfig_2eproto
 namespace velodyne {
 class velodyneManagerParamsDefaultTypeInternal {
  public:
@@ -53,9 +47,16 @@ class RegionDefaultTypeInternal {
 } _Region_default_instance_;
 }  // namespace velodyne
 namespace protobuf_velodyne_5fconfig_2eproto {
-static void InitDefaultsvelodyneManagerParams() {
+void InitDefaultsvelodyneManagerParamsImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_velodyne_5fconfig_2eproto::InitDefaultsvelodyneLidarParams();
+  protobuf_velodyne_5fconfig_2eproto::InitDefaultsRegion();
   {
     void* ptr = &::velodyne::_velodyneManagerParams_default_instance_;
     new (ptr) ::velodyne::velodyneManagerParams();
@@ -64,18 +65,24 @@ static void InitDefaultsvelodyneManagerParams() {
   ::velodyne::velodyneManagerParams::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<2> scc_info_velodyneManagerParams =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsvelodyneManagerParams}, {
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_velodyneLidarParams.base,
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_Region.base,}};
+void InitDefaultsvelodyneManagerParams() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsvelodyneManagerParamsImpl);
+}
 
-static void InitDefaultsvelodyneLidarParams() {
+void InitDefaultsvelodyneLidarParamsImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
-  ::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.DefaultConstruct();
-  *::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get_mutable() = ::std::string("VLP16", 5);
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_velodyne_5fconfig_2eproto::InitDefaultsCalibParameter();
+  ::velodyne::velodyneLidarParams::_default_model_.DefaultConstruct();
+  *::velodyne::velodyneLidarParams::_default_model_.get_mutable() = ::std::string("VLP16", 5);
   ::google::protobuf::internal::OnShutdownDestroyString(
-      ::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get_mutable());
+      ::velodyne::velodyneLidarParams::_default_model_.get_mutable());
   {
     void* ptr = &::velodyne::_velodyneLidarParams_default_instance_;
     new (ptr) ::velodyne::velodyneLidarParams();
@@ -84,13 +91,19 @@ static void InitDefaultsvelodyneLidarParams() {
   ::velodyne::velodyneLidarParams::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_velodyneLidarParams =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsvelodyneLidarParams}, {
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_CalibParameter.base,}};
+void InitDefaultsvelodyneLidarParams() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsvelodyneLidarParamsImpl);
+}
 
-static void InitDefaultsCalibParameter() {
+void InitDefaultsCalibParameterImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::velodyne::_CalibParameter_default_instance_;
     new (ptr) ::velodyne::CalibParameter();
@@ -99,12 +112,20 @@ static void InitDefaultsCalibParameter() {
   ::velodyne::CalibParameter::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_CalibParameter =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCalibParameter}, {}};
+void InitDefaultsCalibParameter() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsCalibParameterImpl);
+}
 
-static void InitDefaultslidarExtrinsic() {
+void InitDefaultslidarExtrinsicImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_velodyne_5fconfig_2eproto::InitDefaultsCalibParameter();
   {
     void* ptr = &::velodyne::_lidarExtrinsic_default_instance_;
     new (ptr) ::velodyne::lidarExtrinsic();
@@ -113,13 +134,20 @@ static void InitDefaultslidarExtrinsic() {
   ::velodyne::lidarExtrinsic::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_lidarExtrinsic =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultslidarExtrinsic}, {
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_CalibParameter.base,}};
+void InitDefaultslidarExtrinsic() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultslidarExtrinsicImpl);
+}
 
-static void InitDefaultsRegion() {
+void InitDefaultsRegionImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_velodyne_5fconfig_2eproto::InitDefaultslidarExtrinsic();
   {
     void* ptr = &::velodyne::_Region_default_instance_;
     new (ptr) ::velodyne::Region();
@@ -128,16 +156,9 @@ static void InitDefaultsRegion() {
   ::velodyne::Region::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_Region =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsRegion}, {
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_lidarExtrinsic.base,}};
-
-void InitDefaults() {
-  ::google::protobuf::internal::InitSCC(&scc_info_velodyneManagerParams.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_velodyneLidarParams.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_CalibParameter.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_lidarExtrinsic.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Region.base);
+void InitDefaultsRegion() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsRegionImpl);
 }
 
 ::google::protobuf::Metadata file_level_metadata[5];
@@ -255,14 +276,15 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
 
 void protobuf_AssignDescriptors() {
   AddDescriptors();
+  ::google::protobuf::MessageFactory* factory = NULL;
   AssignDescriptors(
-      "velodyne_config.proto", schemas, file_default_instances, TableStruct::offsets,
+      "velodyne_config.proto", schemas, file_default_instances, TableStruct::offsets, factory,
       file_level_metadata, NULL, NULL);
 }
 
 void protobuf_AssignDescriptorsOnce() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, protobuf_AssignDescriptors);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
 }
 
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
@@ -305,8 +327,8 @@ void AddDescriptorsImpl() {
 }
 
 void AddDescriptors() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
 }
 // Force AddDescriptors() to be called at dynamic initialization time.
 struct StaticDescriptorInitializer {
@@ -333,8 +355,9 @@ const int velodyneManagerParams::kDistributionModeFieldNumber;
 
 velodyneManagerParams::velodyneManagerParams()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_velodyneManagerParams.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsvelodyneManagerParams();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:velodyne.velodyneManagerParams)
 }
@@ -342,6 +365,7 @@ velodyneManagerParams::velodyneManagerParams(const velodyneManagerParams& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
+      _cached_size_(0),
       velodyne_lidars_(from.velodyne_lidars_),
       region_(from.region_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
@@ -366,6 +390,7 @@ velodyneManagerParams::velodyneManagerParams(const velodyneManagerParams& from)
 }
 
 void velodyneManagerParams::SharedCtor() {
+  _cached_size_ = 0;
   fence_data_path_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   fence_log_path_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   left_model_path_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
@@ -386,7 +411,9 @@ void velodyneManagerParams::SharedDtor() {
 }
 
 void velodyneManagerParams::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* velodyneManagerParams::descriptor() {
   ::protobuf_velodyne_5fconfig_2eproto::protobuf_AssignDescriptorsOnce();
@@ -394,10 +421,17 @@ const ::google::protobuf::Descriptor* velodyneManagerParams::descriptor() {
 }
 
 const velodyneManagerParams& velodyneManagerParams::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_velodyne_5fconfig_2eproto::scc_info_velodyneManagerParams.base);
+  ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsvelodyneManagerParams();
   return *internal_default_instance();
 }
 
+velodyneManagerParams* velodyneManagerParams::New(::google::protobuf::Arena* arena) const {
+  velodyneManagerParams* n = new velodyneManagerParams;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void velodyneManagerParams::Clear() {
 // @@protoc_insertion_point(message_clear_start:velodyne.velodyneManagerParams)
@@ -410,16 +444,20 @@ void velodyneManagerParams::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 15u) {
     if (cached_has_bits & 0x00000001u) {
-      fence_data_path_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!fence_data_path_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*fence_data_path_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000002u) {
-      fence_log_path_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!fence_log_path_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*fence_log_path_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000004u) {
-      left_model_path_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!left_model_path_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*left_model_path_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000008u) {
-      right_model_path_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!right_model_path_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*right_model_path_.UnsafeRawStringPointer())->clear();
     }
   }
   distribution_mode_ = false;
@@ -433,7 +471,7 @@ bool velodyneManagerParams::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:velodyne.velodyneManagerParams)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -441,8 +479,7 @@ bool velodyneManagerParams::MergePartialFromCodedStream(
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_velodyne_lidars()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_velodyne_lidars()));
         } else {
           goto handle_unusual;
         }
@@ -453,8 +490,7 @@ bool velodyneManagerParams::MergePartialFromCodedStream(
       case 2: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_region()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_region()));
         } else {
           goto handle_unusual;
         }
@@ -569,18 +605,14 @@ void velodyneManagerParams::SerializeWithCachedSizes(
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->velodyne_lidars_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1,
-      this->velodyne_lidars(static_cast<int>(i)),
-      output);
+      1, this->velodyne_lidars(static_cast<int>(i)), output);
   }
 
   // repeated .velodyne.Region region = 2;
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->region_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2,
-      this->region(static_cast<int>(i)),
-      output);
+      2, this->region(static_cast<int>(i)), output);
   }
 
   cached_has_bits = _has_bits_[0];
@@ -783,7 +815,9 @@ size_t velodyneManagerParams::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -863,19 +897,16 @@ void velodyneManagerParams::Swap(velodyneManagerParams* other) {
 }
 void velodyneManagerParams::InternalSwap(velodyneManagerParams* other) {
   using std::swap;
-  CastToBase(&velodyne_lidars_)->InternalSwap(CastToBase(&other->velodyne_lidars_));
-  CastToBase(&region_)->InternalSwap(CastToBase(&other->region_));
-  fence_data_path_.Swap(&other->fence_data_path_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  fence_log_path_.Swap(&other->fence_log_path_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  left_model_path_.Swap(&other->left_model_path_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  right_model_path_.Swap(&other->right_model_path_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  velodyne_lidars_.InternalSwap(&other->velodyne_lidars_);
+  region_.InternalSwap(&other->region_);
+  fence_data_path_.Swap(&other->fence_data_path_);
+  fence_log_path_.Swap(&other->fence_log_path_);
+  left_model_path_.Swap(&other->left_model_path_);
+  right_model_path_.Swap(&other->right_model_path_);
   swap(distribution_mode_, other->distribution_mode_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata velodyneManagerParams::GetMetadata() const {
@@ -890,7 +921,7 @@ void velodyneLidarParams::InitAsDefaultInstance() {
   ::velodyne::_velodyneLidarParams_default_instance_._instance.get_mutable()->calib_ = const_cast< ::velodyne::CalibParameter*>(
       ::velodyne::CalibParameter::internal_default_instance());
 }
-::google::protobuf::internal::ExplicitlyConstructed<::std::string> velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_;
+::google::protobuf::internal::ExplicitlyConstructed< ::std::string> velodyneLidarParams::_default_model_;
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int velodyneLidarParams::kIpFieldNumber;
 const int velodyneLidarParams::kPortFieldNumber;
@@ -907,23 +938,25 @@ const int velodyneLidarParams::kCalibFieldNumber;
 
 velodyneLidarParams::velodyneLidarParams()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_velodyneLidarParams.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsvelodyneLidarParams();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:velodyne.velodyneLidarParams)
 }
 velodyneLidarParams::velodyneLidarParams(const velodyneLidarParams& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ip_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.has_ip()) {
     ip_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.ip_);
   }
-  model_.UnsafeSetDefault(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get());
+  model_.UnsafeSetDefault(&::velodyne::velodyneLidarParams::_default_model_.get());
   if (from.has_model()) {
-    model_.AssignWithDefault(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(), from.model_);
+    model_.AssignWithDefault(&::velodyne::velodyneLidarParams::_default_model_.get(), from.model_);
   }
   calibrationfile_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.has_calibrationfile()) {
@@ -941,8 +974,9 @@ velodyneLidarParams::velodyneLidarParams(const velodyneLidarParams& from)
 }
 
 void velodyneLidarParams::SharedCtor() {
+  _cached_size_ = 0;
   ip_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  model_.UnsafeSetDefault(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get());
+  model_.UnsafeSetDefault(&::velodyne::velodyneLidarParams::_default_model_.get());
   calibrationfile_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   ::memset(&calib_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&min_angle_) -
@@ -961,13 +995,15 @@ velodyneLidarParams::~velodyneLidarParams() {
 
 void velodyneLidarParams::SharedDtor() {
   ip_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  model_.DestroyNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get());
+  model_.DestroyNoArena(&::velodyne::velodyneLidarParams::_default_model_.get());
   calibrationfile_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete calib_;
 }
 
 void velodyneLidarParams::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* velodyneLidarParams::descriptor() {
   ::protobuf_velodyne_5fconfig_2eproto::protobuf_AssignDescriptorsOnce();
@@ -975,10 +1011,17 @@ const ::google::protobuf::Descriptor* velodyneLidarParams::descriptor() {
 }
 
 const velodyneLidarParams& velodyneLidarParams::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_velodyne_5fconfig_2eproto::scc_info_velodyneLidarParams.base);
+  ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsvelodyneLidarParams();
   return *internal_default_instance();
 }
 
+velodyneLidarParams* velodyneLidarParams::New(::google::protobuf::Arena* arena) const {
+  velodyneLidarParams* n = new velodyneLidarParams;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void velodyneLidarParams::Clear() {
 // @@protoc_insertion_point(message_clear_start:velodyne.velodyneLidarParams)
@@ -989,13 +1032,16 @@ void velodyneLidarParams::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 15u) {
     if (cached_has_bits & 0x00000001u) {
-      ip_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!ip_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*ip_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000002u) {
-      model_.UnsafeMutablePointer()->assign(*&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get());
+      GOOGLE_DCHECK(!model_.IsDefault(&::velodyne::velodyneLidarParams::_default_model_.get()));
+      (*model_.UnsafeRawStringPointer())->assign(*&::velodyne::velodyneLidarParams::_default_model_.get());
     }
     if (cached_has_bits & 0x00000004u) {
-      calibrationfile_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!calibrationfile_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*calibrationfile_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000008u) {
       GOOGLE_DCHECK(calib_ != NULL);
@@ -1024,7 +1070,7 @@ bool velodyneLidarParams::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:velodyne.velodyneLidarParams)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1281,7 +1327,7 @@ void velodyneLidarParams::SerializeWithCachedSizes(
   // optional .velodyne.CalibParameter calib = 11;
   if (cached_has_bits & 0x00000008u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      11, this->_internal_calib(), output);
+      11, *this->calib_, output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1371,7 +1417,7 @@ void velodyneLidarParams::SerializeWithCachedSizes(
   if (cached_has_bits & 0x00000008u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        11, this->_internal_calib(), deterministic, target);
+        11, *this->calib_, deterministic, target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1465,7 +1511,7 @@ size_t velodyneLidarParams::ByteSizeLong() const {
   if (has_calib()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *calib_);
+        *this->calib_);
   }
 
   if (_has_bits_[0 / 32] & 96u) {
@@ -1504,7 +1550,9 @@ size_t velodyneLidarParams::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -1538,7 +1586,7 @@ void velodyneLidarParams::MergeFrom(const velodyneLidarParams& from) {
     }
     if (cached_has_bits & 0x00000002u) {
       set_has_model();
-      model_.AssignWithDefault(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(), from.model_);
+      model_.AssignWithDefault(&::velodyne::velodyneLidarParams::_default_model_.get(), from.model_);
     }
     if (cached_has_bits & 0x00000004u) {
       set_has_calibrationfile();
@@ -1600,12 +1648,9 @@ void velodyneLidarParams::Swap(velodyneLidarParams* other) {
 }
 void velodyneLidarParams::InternalSwap(velodyneLidarParams* other) {
   using std::swap;
-  ip_.Swap(&other->ip_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  model_.Swap(&other->model_, &::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(),
-    GetArenaNoVirtual());
-  calibrationfile_.Swap(&other->calibrationfile_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  ip_.Swap(&other->ip_);
+  model_.Swap(&other->model_);
+  calibrationfile_.Swap(&other->calibrationfile_);
   swap(calib_, other->calib_);
   swap(lidar_id_, other->lidar_id_);
   swap(min_angle_, other->min_angle_);
@@ -1616,6 +1661,7 @@ void velodyneLidarParams::InternalSwap(velodyneLidarParams* other) {
   swap(max_angle_, other->max_angle_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata velodyneLidarParams::GetMetadata() const {
@@ -1639,15 +1685,17 @@ const int CalibParameter::kCzFieldNumber;
 
 CalibParameter::CalibParameter()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_CalibParameter.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsCalibParameter();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:velodyne.CalibParameter)
 }
 CalibParameter::CalibParameter(const CalibParameter& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&r_, &from.r_,
     static_cast<size_t>(reinterpret_cast<char*>(&cz_) -
@@ -1656,6 +1704,7 @@ CalibParameter::CalibParameter(const CalibParameter& from)
 }
 
 void CalibParameter::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&r_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&cz_) -
       reinterpret_cast<char*>(&r_)) + sizeof(cz_));
@@ -1670,7 +1719,9 @@ void CalibParameter::SharedDtor() {
 }
 
 void CalibParameter::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* CalibParameter::descriptor() {
   ::protobuf_velodyne_5fconfig_2eproto::protobuf_AssignDescriptorsOnce();
@@ -1678,10 +1729,17 @@ const ::google::protobuf::Descriptor* CalibParameter::descriptor() {
 }
 
 const CalibParameter& CalibParameter::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_velodyne_5fconfig_2eproto::scc_info_CalibParameter.base);
+  ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsCalibParameter();
   return *internal_default_instance();
 }
 
+CalibParameter* CalibParameter::New(::google::protobuf::Arena* arena) const {
+  CalibParameter* n = new CalibParameter;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void CalibParameter::Clear() {
 // @@protoc_insertion_point(message_clear_start:velodyne.CalibParameter)
@@ -1705,7 +1763,7 @@ bool CalibParameter::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:velodyne.CalibParameter)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1945,7 +2003,9 @@ size_t CalibParameter::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2027,6 +2087,7 @@ void CalibParameter::InternalSwap(CalibParameter* other) {
   swap(cz_, other->cz_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata CalibParameter::GetMetadata() const {
@@ -2048,15 +2109,17 @@ const int lidarExtrinsic::kCalibFieldNumber;
 
 lidarExtrinsic::lidarExtrinsic()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_lidarExtrinsic.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_velodyne_5fconfig_2eproto::InitDefaultslidarExtrinsic();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:velodyne.lidarExtrinsic)
 }
 lidarExtrinsic::lidarExtrinsic(const lidarExtrinsic& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_calib()) {
     calib_ = new ::velodyne::CalibParameter(*from.calib_);
@@ -2068,6 +2131,7 @@ lidarExtrinsic::lidarExtrinsic(const lidarExtrinsic& from)
 }
 
 void lidarExtrinsic::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&calib_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&lidar_id_) -
       reinterpret_cast<char*>(&calib_)) + sizeof(lidar_id_));
@@ -2083,7 +2147,9 @@ void lidarExtrinsic::SharedDtor() {
 }
 
 void lidarExtrinsic::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* lidarExtrinsic::descriptor() {
   ::protobuf_velodyne_5fconfig_2eproto::protobuf_AssignDescriptorsOnce();
@@ -2091,10 +2157,17 @@ const ::google::protobuf::Descriptor* lidarExtrinsic::descriptor() {
 }
 
 const lidarExtrinsic& lidarExtrinsic::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_velodyne_5fconfig_2eproto::scc_info_lidarExtrinsic.base);
+  ::protobuf_velodyne_5fconfig_2eproto::InitDefaultslidarExtrinsic();
   return *internal_default_instance();
 }
 
+lidarExtrinsic* lidarExtrinsic::New(::google::protobuf::Arena* arena) const {
+  lidarExtrinsic* n = new lidarExtrinsic;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void lidarExtrinsic::Clear() {
 // @@protoc_insertion_point(message_clear_start:velodyne.lidarExtrinsic)
@@ -2118,7 +2191,7 @@ bool lidarExtrinsic::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:velodyne.lidarExtrinsic)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -2183,7 +2256,7 @@ void lidarExtrinsic::SerializeWithCachedSizes(
   // optional .velodyne.CalibParameter calib = 2;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2, this->_internal_calib(), output);
+      2, *this->calib_, output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -2210,7 +2283,7 @@ void lidarExtrinsic::SerializeWithCachedSizes(
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        2, this->_internal_calib(), deterministic, target);
+        2, *this->calib_, deterministic, target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -2240,11 +2313,13 @@ size_t lidarExtrinsic::ByteSizeLong() const {
   if (has_calib()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *calib_);
+        *this->calib_);
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2311,6 +2386,7 @@ void lidarExtrinsic::InternalSwap(lidarExtrinsic* other) {
   swap(lidar_id_, other->lidar_id_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata lidarExtrinsic::GetMetadata() const {
@@ -2336,8 +2412,9 @@ const int Region::kLidarExtsFieldNumber;
 
 Region::Region()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_velodyne_5fconfig_2eproto::scc_info_Region.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsRegion();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:velodyne.Region)
 }
@@ -2345,6 +2422,7 @@ Region::Region(const Region& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
+      _cached_size_(0),
       lidar_exts_(from.lidar_exts_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&minx_, &from.minx_,
@@ -2354,6 +2432,7 @@ Region::Region(const Region& from)
 }
 
 void Region::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&minx_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&region_id_) -
       reinterpret_cast<char*>(&minx_)) + sizeof(region_id_));
@@ -2368,7 +2447,9 @@ void Region::SharedDtor() {
 }
 
 void Region::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Region::descriptor() {
   ::protobuf_velodyne_5fconfig_2eproto::protobuf_AssignDescriptorsOnce();
@@ -2376,10 +2457,17 @@ const ::google::protobuf::Descriptor* Region::descriptor() {
 }
 
 const Region& Region::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_velodyne_5fconfig_2eproto::scc_info_Region.base);
+  ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsRegion();
   return *internal_default_instance();
 }
 
+Region* Region::New(::google::protobuf::Arena* arena) const {
+  Region* n = new Region;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Region::Clear() {
 // @@protoc_insertion_point(message_clear_start:velodyne.Region)
@@ -2404,7 +2492,7 @@ bool Region::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:velodyne.Region)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -2510,8 +2598,7 @@ bool Region::MergePartialFromCodedStream(
       case 8: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_lidar_exts()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_lidar_exts()));
         } else {
           goto handle_unusual;
         }
@@ -2584,9 +2671,7 @@ void Region::SerializeWithCachedSizes(
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->lidar_exts_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      8,
-      this->lidar_exts(static_cast<int>(i)),
-      output);
+      8, this->lidar_exts(static_cast<int>(i)), output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -2746,7 +2831,9 @@ size_t Region::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2826,7 +2913,7 @@ void Region::Swap(Region* other) {
 }
 void Region::InternalSwap(Region* other) {
   using std::swap;
-  CastToBase(&lidar_exts_)->InternalSwap(CastToBase(&other->lidar_exts_));
+  lidar_exts_.InternalSwap(&other->lidar_exts_);
   swap(minx_, other->minx_);
   swap(maxx_, other->maxx_);
   swap(miny_, other->miny_);
@@ -2836,6 +2923,7 @@ void Region::InternalSwap(Region* other) {
   swap(region_id_, other->region_id_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Region::GetMetadata() const {
@@ -2846,24 +2934,5 @@ void Region::InternalSwap(Region* other) {
 
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace velodyne
-namespace google {
-namespace protobuf {
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::velodyne::velodyneManagerParams* Arena::CreateMaybeMessage< ::velodyne::velodyneManagerParams >(Arena* arena) {
-  return Arena::CreateInternal< ::velodyne::velodyneManagerParams >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::velodyne::velodyneLidarParams* Arena::CreateMaybeMessage< ::velodyne::velodyneLidarParams >(Arena* arena) {
-  return Arena::CreateInternal< ::velodyne::velodyneLidarParams >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::velodyne::CalibParameter* Arena::CreateMaybeMessage< ::velodyne::CalibParameter >(Arena* arena) {
-  return Arena::CreateInternal< ::velodyne::CalibParameter >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::velodyne::lidarExtrinsic* Arena::CreateMaybeMessage< ::velodyne::lidarExtrinsic >(Arena* arena) {
-  return Arena::CreateInternal< ::velodyne::lidarExtrinsic >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::velodyne::Region* Arena::CreateMaybeMessage< ::velodyne::Region >(Arena* arena) {
-  return Arena::CreateInternal< ::velodyne::Region >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
 
 // @@protoc_insertion_point(global_scope)

+ 149 - 200
velodyne_lidar/velodyne_config.pb.h

@@ -1,19 +1,19 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: velodyne_config.proto
 
-#ifndef PROTOBUF_INCLUDED_velodyne_5fconfig_2eproto
-#define PROTOBUF_INCLUDED_velodyne_5fconfig_2eproto
+#ifndef PROTOBUF_velodyne_5fconfig_2eproto__INCLUDED
+#define PROTOBUF_velodyne_5fconfig_2eproto__INCLUDED
 
 #include <string>
 
 #include <google/protobuf/stubs/common.h>
 
-#if GOOGLE_PROTOBUF_VERSION < 3006001
+#if GOOGLE_PROTOBUF_VERSION < 3005000
 #error This file was generated by a newer version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please update
 #error your headers.
 #endif
-#if 3006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 3005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
 #error This file was generated by an older version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please
 #error regenerate this file with a newer version of protoc.
@@ -24,14 +24,12 @@
 #include <google/protobuf/arenastring.h>
 #include <google/protobuf/generated_message_table_driven.h>
 #include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
 #include <google/protobuf/metadata.h>
 #include <google/protobuf/message.h>
 #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
 #include <google/protobuf/extension_set.h>  // IWYU pragma: export
 #include <google/protobuf/unknown_field_set.h>
 // @@protoc_insertion_point(includes)
-#define PROTOBUF_INTERNAL_EXPORT_protobuf_velodyne_5fconfig_2eproto 
 
 namespace protobuf_velodyne_5fconfig_2eproto {
 // Internal implementation detail -- do not use these members.
@@ -44,6 +42,23 @@ struct TableStruct {
   static const ::google::protobuf::uint32 offsets[];
 };
 void AddDescriptors();
+void InitDefaultsvelodyneManagerParamsImpl();
+void InitDefaultsvelodyneManagerParams();
+void InitDefaultsvelodyneLidarParamsImpl();
+void InitDefaultsvelodyneLidarParams();
+void InitDefaultsCalibParameterImpl();
+void InitDefaultsCalibParameter();
+void InitDefaultslidarExtrinsicImpl();
+void InitDefaultslidarExtrinsic();
+void InitDefaultsRegionImpl();
+void InitDefaultsRegion();
+inline void InitDefaults() {
+  InitDefaultsvelodyneManagerParams();
+  InitDefaultsvelodyneLidarParams();
+  InitDefaultsCalibParameter();
+  InitDefaultslidarExtrinsic();
+  InitDefaultsRegion();
+}
 }  // namespace protobuf_velodyne_5fconfig_2eproto
 namespace velodyne {
 class CalibParameter;
@@ -62,15 +77,6 @@ class velodyneManagerParams;
 class velodyneManagerParamsDefaultTypeInternal;
 extern velodyneManagerParamsDefaultTypeInternal _velodyneManagerParams_default_instance_;
 }  // namespace velodyne
-namespace google {
-namespace protobuf {
-template<> ::velodyne::CalibParameter* Arena::CreateMaybeMessage<::velodyne::CalibParameter>(Arena*);
-template<> ::velodyne::Region* Arena::CreateMaybeMessage<::velodyne::Region>(Arena*);
-template<> ::velodyne::lidarExtrinsic* Arena::CreateMaybeMessage<::velodyne::lidarExtrinsic>(Arena*);
-template<> ::velodyne::velodyneLidarParams* Arena::CreateMaybeMessage<::velodyne::velodyneLidarParams>(Arena*);
-template<> ::velodyne::velodyneManagerParams* Arena::CreateMaybeMessage<::velodyne::velodyneManagerParams>(Arena*);
-}  // namespace protobuf
-}  // namespace google
 namespace velodyne {
 
 // ===================================================================
@@ -116,7 +122,7 @@ class velodyneManagerParams : public ::google::protobuf::Message /* @@protoc_ins
     return reinterpret_cast<const velodyneManagerParams*>(
                &_velodyneManagerParams_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
   void Swap(velodyneManagerParams* other);
@@ -126,33 +132,28 @@ class velodyneManagerParams : public ::google::protobuf::Message /* @@protoc_ins
 
   // implements Message ----------------------------------------------
 
-  inline velodyneManagerParams* New() const final {
-    return CreateMaybeMessage<velodyneManagerParams>(NULL);
-  }
+  inline velodyneManagerParams* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  velodyneManagerParams* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<velodyneManagerParams>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  velodyneManagerParams* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const velodyneManagerParams& from);
   void MergeFrom(const velodyneManagerParams& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(velodyneManagerParams* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -163,7 +164,7 @@ class velodyneManagerParams : public ::google::protobuf::Message /* @@protoc_ins
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -173,11 +174,11 @@ class velodyneManagerParams : public ::google::protobuf::Message /* @@protoc_ins
   int velodyne_lidars_size() const;
   void clear_velodyne_lidars();
   static const int kVelodyneLidarsFieldNumber = 1;
+  const ::velodyne::velodyneLidarParams& velodyne_lidars(int index) const;
   ::velodyne::velodyneLidarParams* mutable_velodyne_lidars(int index);
+  ::velodyne::velodyneLidarParams* add_velodyne_lidars();
   ::google::protobuf::RepeatedPtrField< ::velodyne::velodyneLidarParams >*
       mutable_velodyne_lidars();
-  const ::velodyne::velodyneLidarParams& velodyne_lidars(int index) const;
-  ::velodyne::velodyneLidarParams* add_velodyne_lidars();
   const ::google::protobuf::RepeatedPtrField< ::velodyne::velodyneLidarParams >&
       velodyne_lidars() const;
 
@@ -185,11 +186,11 @@ class velodyneManagerParams : public ::google::protobuf::Message /* @@protoc_ins
   int region_size() const;
   void clear_region();
   static const int kRegionFieldNumber = 2;
+  const ::velodyne::Region& region(int index) const;
   ::velodyne::Region* mutable_region(int index);
+  ::velodyne::Region* add_region();
   ::google::protobuf::RepeatedPtrField< ::velodyne::Region >*
       mutable_region();
-  const ::velodyne::Region& region(int index) const;
-  ::velodyne::Region* add_region();
   const ::google::protobuf::RepeatedPtrField< ::velodyne::Region >&
       region() const;
 
@@ -275,7 +276,7 @@ class velodyneManagerParams : public ::google::protobuf::Message /* @@protoc_ins
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::velodyne::velodyneLidarParams > velodyne_lidars_;
   ::google::protobuf::RepeatedPtrField< ::velodyne::Region > region_;
   ::google::protobuf::internal::ArenaStringPtr fence_data_path_;
@@ -284,6 +285,7 @@ class velodyneManagerParams : public ::google::protobuf::Message /* @@protoc_ins
   ::google::protobuf::internal::ArenaStringPtr right_model_path_;
   bool distribution_mode_;
   friend struct ::protobuf_velodyne_5fconfig_2eproto::TableStruct;
+  friend void ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsvelodyneManagerParamsImpl();
 };
 // -------------------------------------------------------------------
 
@@ -328,7 +330,7 @@ class velodyneLidarParams : public ::google::protobuf::Message /* @@protoc_inser
     return reinterpret_cast<const velodyneLidarParams*>(
                &_velodyneLidarParams_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     1;
 
   void Swap(velodyneLidarParams* other);
@@ -338,33 +340,28 @@ class velodyneLidarParams : public ::google::protobuf::Message /* @@protoc_inser
 
   // implements Message ----------------------------------------------
 
-  inline velodyneLidarParams* New() const final {
-    return CreateMaybeMessage<velodyneLidarParams>(NULL);
-  }
+  inline velodyneLidarParams* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  velodyneLidarParams* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<velodyneLidarParams>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  velodyneLidarParams* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const velodyneLidarParams& from);
   void MergeFrom(const velodyneLidarParams& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(velodyneLidarParams* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -375,7 +372,7 @@ class velodyneLidarParams : public ::google::protobuf::Message /* @@protoc_inser
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -430,9 +427,6 @@ class velodyneLidarParams : public ::google::protobuf::Message /* @@protoc_inser
   bool has_calib() const;
   void clear_calib();
   static const int kCalibFieldNumber = 11;
-  private:
-  const ::velodyne::CalibParameter& _internal_calib() const;
-  public:
   const ::velodyne::CalibParameter& calib() const;
   ::velodyne::CalibParameter* release_calib();
   ::velodyne::CalibParameter* mutable_calib();
@@ -517,11 +511,9 @@ class velodyneLidarParams : public ::google::protobuf::Message /* @@protoc_inser
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::internal::ArenaStringPtr ip_;
-  public:
-  static ::google::protobuf::internal::ExplicitlyConstructed< ::std::string> _i_give_permission_to_break_this_code_default_model_;
-  private:
+  static ::google::protobuf::internal::ExplicitlyConstructed< ::std::string> _default_model_;
   ::google::protobuf::internal::ArenaStringPtr model_;
   ::google::protobuf::internal::ArenaStringPtr calibrationfile_;
   ::velodyne::CalibParameter* calib_;
@@ -533,6 +525,7 @@ class velodyneLidarParams : public ::google::protobuf::Message /* @@protoc_inser
   float min_range_;
   ::google::protobuf::int32 max_angle_;
   friend struct ::protobuf_velodyne_5fconfig_2eproto::TableStruct;
+  friend void ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsvelodyneLidarParamsImpl();
 };
 // -------------------------------------------------------------------
 
@@ -577,7 +570,7 @@ class CalibParameter : public ::google::protobuf::Message /* @@protoc_insertion_
     return reinterpret_cast<const CalibParameter*>(
                &_CalibParameter_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     2;
 
   void Swap(CalibParameter* other);
@@ -587,33 +580,28 @@ class CalibParameter : public ::google::protobuf::Message /* @@protoc_insertion_
 
   // implements Message ----------------------------------------------
 
-  inline CalibParameter* New() const final {
-    return CreateMaybeMessage<CalibParameter>(NULL);
-  }
+  inline CalibParameter* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  CalibParameter* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<CalibParameter>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  CalibParameter* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const CalibParameter& from);
   void MergeFrom(const CalibParameter& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(CalibParameter* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -624,7 +612,7 @@ class CalibParameter : public ::google::protobuf::Message /* @@protoc_insertion_
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -689,7 +677,7 @@ class CalibParameter : public ::google::protobuf::Message /* @@protoc_insertion_
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   float r_;
   float p_;
   float y_;
@@ -697,6 +685,7 @@ class CalibParameter : public ::google::protobuf::Message /* @@protoc_insertion_
   float cy_;
   float cz_;
   friend struct ::protobuf_velodyne_5fconfig_2eproto::TableStruct;
+  friend void ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsCalibParameterImpl();
 };
 // -------------------------------------------------------------------
 
@@ -741,7 +730,7 @@ class lidarExtrinsic : public ::google::protobuf::Message /* @@protoc_insertion_
     return reinterpret_cast<const lidarExtrinsic*>(
                &_lidarExtrinsic_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     3;
 
   void Swap(lidarExtrinsic* other);
@@ -751,33 +740,28 @@ class lidarExtrinsic : public ::google::protobuf::Message /* @@protoc_insertion_
 
   // implements Message ----------------------------------------------
 
-  inline lidarExtrinsic* New() const final {
-    return CreateMaybeMessage<lidarExtrinsic>(NULL);
-  }
+  inline lidarExtrinsic* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  lidarExtrinsic* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<lidarExtrinsic>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  lidarExtrinsic* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const lidarExtrinsic& from);
   void MergeFrom(const lidarExtrinsic& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(lidarExtrinsic* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -788,7 +772,7 @@ class lidarExtrinsic : public ::google::protobuf::Message /* @@protoc_insertion_
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -798,9 +782,6 @@ class lidarExtrinsic : public ::google::protobuf::Message /* @@protoc_insertion_
   bool has_calib() const;
   void clear_calib();
   static const int kCalibFieldNumber = 2;
-  private:
-  const ::velodyne::CalibParameter& _internal_calib() const;
-  public:
   const ::velodyne::CalibParameter& calib() const;
   ::velodyne::CalibParameter* release_calib();
   ::velodyne::CalibParameter* mutable_calib();
@@ -822,10 +803,11 @@ class lidarExtrinsic : public ::google::protobuf::Message /* @@protoc_insertion_
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::velodyne::CalibParameter* calib_;
   ::google::protobuf::int32 lidar_id_;
   friend struct ::protobuf_velodyne_5fconfig_2eproto::TableStruct;
+  friend void ::protobuf_velodyne_5fconfig_2eproto::InitDefaultslidarExtrinsicImpl();
 };
 // -------------------------------------------------------------------
 
@@ -870,7 +852,7 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
     return reinterpret_cast<const Region*>(
                &_Region_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     4;
 
   void Swap(Region* other);
@@ -880,33 +862,28 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
 
   // implements Message ----------------------------------------------
 
-  inline Region* New() const final {
-    return CreateMaybeMessage<Region>(NULL);
-  }
+  inline Region* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Region* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Region>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Region* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Region& from);
   void MergeFrom(const Region& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Region* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -917,7 +894,7 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -927,11 +904,11 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
   int lidar_exts_size() const;
   void clear_lidar_exts();
   static const int kLidarExtsFieldNumber = 8;
+  const ::velodyne::lidarExtrinsic& lidar_exts(int index) const;
   ::velodyne::lidarExtrinsic* mutable_lidar_exts(int index);
+  ::velodyne::lidarExtrinsic* add_lidar_exts();
   ::google::protobuf::RepeatedPtrField< ::velodyne::lidarExtrinsic >*
       mutable_lidar_exts();
-  const ::velodyne::lidarExtrinsic& lidar_exts(int index) const;
-  ::velodyne::lidarExtrinsic* add_lidar_exts();
   const ::google::protobuf::RepeatedPtrField< ::velodyne::lidarExtrinsic >&
       lidar_exts() const;
 
@@ -1006,7 +983,7 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::velodyne::lidarExtrinsic > lidar_exts_;
   float minx_;
   float maxx_;
@@ -1016,6 +993,7 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
   float maxz_;
   ::google::protobuf::int32 region_id_;
   friend struct ::protobuf_velodyne_5fconfig_2eproto::TableStruct;
+  friend void ::protobuf_velodyne_5fconfig_2eproto::InitDefaultsRegionImpl();
 };
 // ===================================================================
 
@@ -1035,23 +1013,23 @@ inline int velodyneManagerParams::velodyne_lidars_size() const {
 inline void velodyneManagerParams::clear_velodyne_lidars() {
   velodyne_lidars_.Clear();
 }
+inline const ::velodyne::velodyneLidarParams& velodyneManagerParams::velodyne_lidars(int index) const {
+  // @@protoc_insertion_point(field_get:velodyne.velodyneManagerParams.velodyne_lidars)
+  return velodyne_lidars_.Get(index);
+}
 inline ::velodyne::velodyneLidarParams* velodyneManagerParams::mutable_velodyne_lidars(int index) {
   // @@protoc_insertion_point(field_mutable:velodyne.velodyneManagerParams.velodyne_lidars)
   return velodyne_lidars_.Mutable(index);
 }
+inline ::velodyne::velodyneLidarParams* velodyneManagerParams::add_velodyne_lidars() {
+  // @@protoc_insertion_point(field_add:velodyne.velodyneManagerParams.velodyne_lidars)
+  return velodyne_lidars_.Add();
+}
 inline ::google::protobuf::RepeatedPtrField< ::velodyne::velodyneLidarParams >*
 velodyneManagerParams::mutable_velodyne_lidars() {
   // @@protoc_insertion_point(field_mutable_list:velodyne.velodyneManagerParams.velodyne_lidars)
   return &velodyne_lidars_;
 }
-inline const ::velodyne::velodyneLidarParams& velodyneManagerParams::velodyne_lidars(int index) const {
-  // @@protoc_insertion_point(field_get:velodyne.velodyneManagerParams.velodyne_lidars)
-  return velodyne_lidars_.Get(index);
-}
-inline ::velodyne::velodyneLidarParams* velodyneManagerParams::add_velodyne_lidars() {
-  // @@protoc_insertion_point(field_add:velodyne.velodyneManagerParams.velodyne_lidars)
-  return velodyne_lidars_.Add();
-}
 inline const ::google::protobuf::RepeatedPtrField< ::velodyne::velodyneLidarParams >&
 velodyneManagerParams::velodyne_lidars() const {
   // @@protoc_insertion_point(field_list:velodyne.velodyneManagerParams.velodyne_lidars)
@@ -1065,23 +1043,23 @@ inline int velodyneManagerParams::region_size() const {
 inline void velodyneManagerParams::clear_region() {
   region_.Clear();
 }
+inline const ::velodyne::Region& velodyneManagerParams::region(int index) const {
+  // @@protoc_insertion_point(field_get:velodyne.velodyneManagerParams.region)
+  return region_.Get(index);
+}
 inline ::velodyne::Region* velodyneManagerParams::mutable_region(int index) {
   // @@protoc_insertion_point(field_mutable:velodyne.velodyneManagerParams.region)
   return region_.Mutable(index);
 }
+inline ::velodyne::Region* velodyneManagerParams::add_region() {
+  // @@protoc_insertion_point(field_add:velodyne.velodyneManagerParams.region)
+  return region_.Add();
+}
 inline ::google::protobuf::RepeatedPtrField< ::velodyne::Region >*
 velodyneManagerParams::mutable_region() {
   // @@protoc_insertion_point(field_mutable_list:velodyne.velodyneManagerParams.region)
   return &region_;
 }
-inline const ::velodyne::Region& velodyneManagerParams::region(int index) const {
-  // @@protoc_insertion_point(field_get:velodyne.velodyneManagerParams.region)
-  return region_.Get(index);
-}
-inline ::velodyne::Region* velodyneManagerParams::add_region() {
-  // @@protoc_insertion_point(field_add:velodyne.velodyneManagerParams.region)
-  return region_.Add();
-}
 inline const ::google::protobuf::RepeatedPtrField< ::velodyne::Region >&
 velodyneManagerParams::region() const {
   // @@protoc_insertion_point(field_list:velodyne.velodyneManagerParams.region)
@@ -1138,11 +1116,8 @@ inline ::std::string* velodyneManagerParams::mutable_fence_data_path() {
 }
 inline ::std::string* velodyneManagerParams::release_fence_data_path() {
   // @@protoc_insertion_point(field_release:velodyne.velodyneManagerParams.fence_data_path)
-  if (!has_fence_data_path()) {
-    return NULL;
-  }
   clear_has_fence_data_path();
-  return fence_data_path_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return fence_data_path_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void velodyneManagerParams::set_allocated_fence_data_path(::std::string* fence_data_path) {
   if (fence_data_path != NULL) {
@@ -1204,11 +1179,8 @@ inline ::std::string* velodyneManagerParams::mutable_fence_log_path() {
 }
 inline ::std::string* velodyneManagerParams::release_fence_log_path() {
   // @@protoc_insertion_point(field_release:velodyne.velodyneManagerParams.fence_log_path)
-  if (!has_fence_log_path()) {
-    return NULL;
-  }
   clear_has_fence_log_path();
-  return fence_log_path_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return fence_log_path_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void velodyneManagerParams::set_allocated_fence_log_path(::std::string* fence_log_path) {
   if (fence_log_path != NULL) {
@@ -1270,11 +1242,8 @@ inline ::std::string* velodyneManagerParams::mutable_left_model_path() {
 }
 inline ::std::string* velodyneManagerParams::release_left_model_path() {
   // @@protoc_insertion_point(field_release:velodyne.velodyneManagerParams.left_model_path)
-  if (!has_left_model_path()) {
-    return NULL;
-  }
   clear_has_left_model_path();
-  return left_model_path_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return left_model_path_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void velodyneManagerParams::set_allocated_left_model_path(::std::string* left_model_path) {
   if (left_model_path != NULL) {
@@ -1336,11 +1305,8 @@ inline ::std::string* velodyneManagerParams::mutable_right_model_path() {
 }
 inline ::std::string* velodyneManagerParams::release_right_model_path() {
   // @@protoc_insertion_point(field_release:velodyne.velodyneManagerParams.right_model_path)
-  if (!has_right_model_path()) {
-    return NULL;
-  }
   clear_has_right_model_path();
-  return right_model_path_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return right_model_path_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void velodyneManagerParams::set_allocated_right_model_path(::std::string* right_model_path) {
   if (right_model_path != NULL) {
@@ -1430,11 +1396,8 @@ inline ::std::string* velodyneLidarParams::mutable_ip() {
 }
 inline ::std::string* velodyneLidarParams::release_ip() {
   // @@protoc_insertion_point(field_release:velodyne.velodyneLidarParams.ip)
-  if (!has_ip()) {
-    return NULL;
-  }
   clear_has_ip();
-  return ip_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return ip_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void velodyneLidarParams::set_allocated_ip(::std::string* ip) {
   if (ip != NULL) {
@@ -1481,7 +1444,7 @@ inline void velodyneLidarParams::clear_has_model() {
   _has_bits_[0] &= ~0x00000002u;
 }
 inline void velodyneLidarParams::clear_model() {
-  model_.ClearToDefaultNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get());
+  model_.ClearToDefaultNoArena(&::velodyne::velodyneLidarParams::_default_model_.get());
   clear_has_model();
 }
 inline const ::std::string& velodyneLidarParams::model() const {
@@ -1490,41 +1453,38 @@ inline const ::std::string& velodyneLidarParams::model() const {
 }
 inline void velodyneLidarParams::set_model(const ::std::string& value) {
   set_has_model();
-  model_.SetNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(), value);
+  model_.SetNoArena(&::velodyne::velodyneLidarParams::_default_model_.get(), value);
   // @@protoc_insertion_point(field_set:velodyne.velodyneLidarParams.model)
 }
 #if LANG_CXX11
 inline void velodyneLidarParams::set_model(::std::string&& value) {
   set_has_model();
   model_.SetNoArena(
-    &::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(), ::std::move(value));
+    &::velodyne::velodyneLidarParams::_default_model_.get(), ::std::move(value));
   // @@protoc_insertion_point(field_set_rvalue:velodyne.velodyneLidarParams.model)
 }
 #endif
 inline void velodyneLidarParams::set_model(const char* value) {
   GOOGLE_DCHECK(value != NULL);
   set_has_model();
-  model_.SetNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(), ::std::string(value));
+  model_.SetNoArena(&::velodyne::velodyneLidarParams::_default_model_.get(), ::std::string(value));
   // @@protoc_insertion_point(field_set_char:velodyne.velodyneLidarParams.model)
 }
 inline void velodyneLidarParams::set_model(const char* value, size_t size) {
   set_has_model();
-  model_.SetNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(),
+  model_.SetNoArena(&::velodyne::velodyneLidarParams::_default_model_.get(),
       ::std::string(reinterpret_cast<const char*>(value), size));
   // @@protoc_insertion_point(field_set_pointer:velodyne.velodyneLidarParams.model)
 }
 inline ::std::string* velodyneLidarParams::mutable_model() {
   set_has_model();
   // @@protoc_insertion_point(field_mutable:velodyne.velodyneLidarParams.model)
-  return model_.MutableNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get());
+  return model_.MutableNoArena(&::velodyne::velodyneLidarParams::_default_model_.get());
 }
 inline ::std::string* velodyneLidarParams::release_model() {
   // @@protoc_insertion_point(field_release:velodyne.velodyneLidarParams.model)
-  if (!has_model()) {
-    return NULL;
-  }
   clear_has_model();
-  return model_.ReleaseNonDefaultNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get());
+  return model_.ReleaseNoArena(&::velodyne::velodyneLidarParams::_default_model_.get());
 }
 inline void velodyneLidarParams::set_allocated_model(::std::string* model) {
   if (model != NULL) {
@@ -1532,7 +1492,7 @@ inline void velodyneLidarParams::set_allocated_model(::std::string* model) {
   } else {
     clear_has_model();
   }
-  model_.SetAllocatedNoArena(&::velodyne::velodyneLidarParams::_i_give_permission_to_break_this_code_default_model_.get(), model);
+  model_.SetAllocatedNoArena(&::velodyne::velodyneLidarParams::_default_model_.get(), model);
   // @@protoc_insertion_point(field_set_allocated:velodyne.velodyneLidarParams.model)
 }
 
@@ -1586,11 +1546,8 @@ inline ::std::string* velodyneLidarParams::mutable_calibrationfile() {
 }
 inline ::std::string* velodyneLidarParams::release_calibrationfile() {
   // @@protoc_insertion_point(field_release:velodyne.velodyneLidarParams.calibrationFile)
-  if (!has_calibrationfile()) {
-    return NULL;
-  }
   clear_has_calibrationfile();
-  return calibrationfile_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return calibrationfile_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void velodyneLidarParams::set_allocated_calibrationfile(::std::string* calibrationfile) {
   if (calibrationfile != NULL) {
@@ -1760,9 +1717,6 @@ inline void velodyneLidarParams::clear_calib() {
   if (calib_ != NULL) calib_->Clear();
   clear_has_calib();
 }
-inline const ::velodyne::CalibParameter& velodyneLidarParams::_internal_calib() const {
-  return *calib_;
-}
 inline const ::velodyne::CalibParameter& velodyneLidarParams::calib() const {
   const ::velodyne::CalibParameter* p = calib_;
   // @@protoc_insertion_point(field_get:velodyne.velodyneLidarParams.calib)
@@ -1779,8 +1733,7 @@ inline ::velodyne::CalibParameter* velodyneLidarParams::release_calib() {
 inline ::velodyne::CalibParameter* velodyneLidarParams::mutable_calib() {
   set_has_calib();
   if (calib_ == NULL) {
-    auto* p = CreateMaybeMessage<::velodyne::CalibParameter>(GetArenaNoVirtual());
-    calib_ = p;
+    calib_ = new ::velodyne::CalibParameter;
   }
   // @@protoc_insertion_point(field_mutable:velodyne.velodyneLidarParams.calib)
   return calib_;
@@ -1994,9 +1947,6 @@ inline void lidarExtrinsic::clear_calib() {
   if (calib_ != NULL) calib_->Clear();
   clear_has_calib();
 }
-inline const ::velodyne::CalibParameter& lidarExtrinsic::_internal_calib() const {
-  return *calib_;
-}
 inline const ::velodyne::CalibParameter& lidarExtrinsic::calib() const {
   const ::velodyne::CalibParameter* p = calib_;
   // @@protoc_insertion_point(field_get:velodyne.lidarExtrinsic.calib)
@@ -2013,8 +1963,7 @@ inline ::velodyne::CalibParameter* lidarExtrinsic::release_calib() {
 inline ::velodyne::CalibParameter* lidarExtrinsic::mutable_calib() {
   set_has_calib();
   if (calib_ == NULL) {
-    auto* p = CreateMaybeMessage<::velodyne::CalibParameter>(GetArenaNoVirtual());
-    calib_ = p;
+    calib_ = new ::velodyne::CalibParameter;
   }
   // @@protoc_insertion_point(field_mutable:velodyne.lidarExtrinsic.calib)
   return calib_;
@@ -2217,23 +2166,23 @@ inline int Region::lidar_exts_size() const {
 inline void Region::clear_lidar_exts() {
   lidar_exts_.Clear();
 }
+inline const ::velodyne::lidarExtrinsic& Region::lidar_exts(int index) const {
+  // @@protoc_insertion_point(field_get:velodyne.Region.lidar_exts)
+  return lidar_exts_.Get(index);
+}
 inline ::velodyne::lidarExtrinsic* Region::mutable_lidar_exts(int index) {
   // @@protoc_insertion_point(field_mutable:velodyne.Region.lidar_exts)
   return lidar_exts_.Mutable(index);
 }
+inline ::velodyne::lidarExtrinsic* Region::add_lidar_exts() {
+  // @@protoc_insertion_point(field_add:velodyne.Region.lidar_exts)
+  return lidar_exts_.Add();
+}
 inline ::google::protobuf::RepeatedPtrField< ::velodyne::lidarExtrinsic >*
 Region::mutable_lidar_exts() {
   // @@protoc_insertion_point(field_mutable_list:velodyne.Region.lidar_exts)
   return &lidar_exts_;
 }
-inline const ::velodyne::lidarExtrinsic& Region::lidar_exts(int index) const {
-  // @@protoc_insertion_point(field_get:velodyne.Region.lidar_exts)
-  return lidar_exts_.Get(index);
-}
-inline ::velodyne::lidarExtrinsic* Region::add_lidar_exts() {
-  // @@protoc_insertion_point(field_add:velodyne.Region.lidar_exts)
-  return lidar_exts_.Add();
-}
 inline const ::google::protobuf::RepeatedPtrField< ::velodyne::lidarExtrinsic >&
 Region::lidar_exts() const {
   // @@protoc_insertion_point(field_list:velodyne.Region.lidar_exts)
@@ -2258,4 +2207,4 @@ Region::lidar_exts() const {
 
 // @@protoc_insertion_point(global_scope)
 
-#endif  // PROTOBUF_INCLUDED_velodyne_5fconfig_2eproto
+#endif  // PROTOBUF_velodyne_5fconfig_2eproto__INCLUDED

+ 6 - 5
velodyne_lidar/velodyne_driver/velodyne_lidar_device.cpp

@@ -538,7 +538,7 @@ void Velodyne_lidar_device::capture_thread_fun()
 
 	while (m_capture_condition.is_alive())
 	{
-		m_capture_condition.wait_for_millisecond(1);
+		m_capture_condition.wait_for_ex(std::chrono::microseconds(10));
 		if (m_capture_condition.is_alive())
 		{
 			// socket状态正常才更新状态
@@ -556,9 +556,9 @@ void Velodyne_lidar_device::capture_thread_fun()
 			{
 				m_velodyne_socket_status = E_DISCONNECT;
 			}
-			// 队列有数据,激活解析线程
-			if (m_communication_data_queue.size() > 0)
-				m_parse_condition.notify_one(false, true);
+			// !!!!!!解析线程自行取数据解析,不由采集线程主动激活 队列有数据,激活解析线程
+			// if (m_communication_data_queue.size() > 0)
+			// 	m_parse_condition.notify_one(false, true);
 		}
 	}
 	LOG(INFO) << " Velodyne_lidar_device::capture_thread_fun() end :" << this;
@@ -572,7 +572,8 @@ void Velodyne_lidar_device::parse_thread_fun()
 
 	while (m_parse_condition.is_alive())
 	{
-		m_parse_condition.wait();
+		// m_parse_condition.wait();
+		m_parse_condition.wait_for_ex(std::chrono::microseconds(10));
 		if (m_parse_condition.is_alive())
 		{
 			if (m_velodyne_protocol_status == E_READY)

+ 17 - 2
velodyne_lidar/velodyne_manager.cpp

@@ -2,7 +2,7 @@
  * @Description: 
  * @Author: yct
  * @Date: 2021-07-23 16:39:04
- * @LastEditTime: 2021-09-03 18:05:56
+ * @LastEditTime: 2021-09-22 16:53:09
  * @LastEditors: yct
  */
 #include "velodyne_manager.h"
@@ -343,15 +343,22 @@ void Velodyne_manager::collect_cloud_thread_fun()
 	LOG(INFO) << " Velodyne_manager::collect_cloud_thread_fun() start "<< this;
 	Error_manager t_error;
 	Error_manager t_result;
+	// std::chrono::steady_clock::time_point t0 = std::chrono::steady_clock::now();
 
 	while (m_collect_cloud_condition.is_alive())
 	{
+
 		cloud_count++;
 		//暂时固定为一个扫描周期, 就循环一次
 		//后期可以根据每个小雷达的刷新情况, 实时更改总点云.....
 		m_collect_cloud_condition.wait_for_millisecond(VLP16_SCAN_CYCLE_MS);
 		if ( m_collect_cloud_condition.is_alive() )
 		{
+
+			// std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
+			// std::chrono::duration<double> time_used_update = std::chrono::duration_cast<std::chrono::duration<double>>(t1 - t0);
+			// std::cout << "update cloud time: " << time_used_update.count() << std::endl;
+
 			{
 				//全局加锁
 				std::unique_lock<std::mutex> t_lock(m_cloud_collection_mutex);
@@ -430,6 +437,8 @@ void Velodyne_manager::collect_cloud_thread_fun()
 			}
 		}
         t_result.error_manager_clear_all();
+
+		// t0 = std::chrono::steady_clock::now();
 	}
 	LOG(INFO) << " Velodyne_manager::collect_cloud_thread_fun() end "<< this;
 	return;
@@ -438,6 +447,8 @@ void Velodyne_manager::collect_cloud_thread_fun()
 //更新点云,自行计算
 Error_manager Velodyne_manager::update_region_cloud()
 {
+	// static std::chrono::steady_clock::time_point t0 = std::chrono::steady_clock::now();
+	
 	for (auto iter = m_ground_region_map.begin(); iter != m_ground_region_map.end(); ++iter)
 	{
 		pcl::PointCloud<pcl::PointXYZ>::Ptr t_region_cloud = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
@@ -471,7 +482,11 @@ Error_manager Velodyne_manager::update_region_cloud()
 		}
 
 		iter->second->update_cloud(t_region_cloud);
-		// LOG(WARNING) << "send to region " << iter->first << " with cloud size: " << t_region_cloud->size();
+
+		// std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
+		// std::chrono::duration<double> time_used_update = std::chrono::duration_cast<std::chrono::duration<double>>(t1 - t0);
+		// t0 = std::chrono::steady_clock::now();
+		// LOG(WARNING) << "send to region " << iter->first << " with cloud size: " << t_region_cloud->size() << ", update cloud time ms: " << time_used_update.count();
 	}
 	return Error_code::SUCCESS;
 }

+ 109 - 71
verify/hardware_limit.pb.cc

@@ -7,6 +7,7 @@
 
 #include <google/protobuf/stubs/common.h>
 #include <google/protobuf/stubs/port.h>
+#include <google/protobuf/stubs/once.h>
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/wire_format_lite_inl.h>
 #include <google/protobuf/descriptor.h>
@@ -18,11 +19,6 @@
 #include "third_party/protobuf/version.h"
 #endif
 // @@protoc_insertion_point(includes)
-
-namespace protobuf_hardware_5flimit_2eproto {
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_hardware_5flimit_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Railing;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_hardware_5flimit_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Theta_range;
-}  // namespace protobuf_hardware_5flimit_2eproto
 namespace Hardware_limit {
 class RailingDefaultTypeInternal {
  public:
@@ -41,9 +37,14 @@ class Hardware_parameterDefaultTypeInternal {
 } _Hardware_parameter_default_instance_;
 }  // namespace Hardware_limit
 namespace protobuf_hardware_5flimit_2eproto {
-static void InitDefaultsRailing() {
+void InitDefaultsRailingImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::Hardware_limit::_Railing_default_instance_;
     new (ptr) ::Hardware_limit::Railing();
@@ -52,12 +53,19 @@ static void InitDefaultsRailing() {
   ::Hardware_limit::Railing::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Railing =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRailing}, {}};
+void InitDefaultsRailing() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsRailingImpl);
+}
 
-static void InitDefaultsTheta_range() {
+void InitDefaultsTheta_rangeImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::Hardware_limit::_Theta_range_default_instance_;
     new (ptr) ::Hardware_limit::Theta_range();
@@ -66,12 +74,21 @@ static void InitDefaultsTheta_range() {
   ::Hardware_limit::Theta_range::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Theta_range =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTheta_range}, {}};
+void InitDefaultsTheta_range() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsTheta_rangeImpl);
+}
 
-static void InitDefaultsHardware_parameter() {
+void InitDefaultsHardware_parameterImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_hardware_5flimit_2eproto::InitDefaultsRailing();
+  protobuf_hardware_5flimit_2eproto::InitDefaultsTheta_range();
   {
     void* ptr = &::Hardware_limit::_Hardware_parameter_default_instance_;
     new (ptr) ::Hardware_limit::Hardware_parameter();
@@ -80,15 +97,9 @@ static void InitDefaultsHardware_parameter() {
   ::Hardware_limit::Hardware_parameter::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<2> scc_info_Hardware_parameter =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsHardware_parameter}, {
-      &protobuf_hardware_5flimit_2eproto::scc_info_Railing.base,
-      &protobuf_hardware_5flimit_2eproto::scc_info_Theta_range.base,}};
-
-void InitDefaults() {
-  ::google::protobuf::internal::InitSCC(&scc_info_Railing.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Theta_range.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Hardware_parameter.base);
+void InitDefaultsHardware_parameter() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsHardware_parameterImpl);
 }
 
 ::google::protobuf::Metadata file_level_metadata[3];
@@ -154,14 +165,15 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
 
 void protobuf_AssignDescriptors() {
   AddDescriptors();
+  ::google::protobuf::MessageFactory* factory = NULL;
   AssignDescriptors(
-      "hardware_limit.proto", schemas, file_default_instances, TableStruct::offsets,
+      "hardware_limit.proto", schemas, file_default_instances, TableStruct::offsets, factory,
       file_level_metadata, NULL, NULL);
 }
 
 void protobuf_AssignDescriptorsOnce() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, protobuf_AssignDescriptors);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
 }
 
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
@@ -192,8 +204,8 @@ void AddDescriptorsImpl() {
 }
 
 void AddDescriptors() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
 }
 // Force AddDescriptors() to be called at dynamic initialization time.
 struct StaticDescriptorInitializer {
@@ -217,15 +229,17 @@ const int Railing::kRailingWidthFieldNumber;
 
 Railing::Railing()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_hardware_5flimit_2eproto::scc_info_Railing.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_hardware_5flimit_2eproto::InitDefaultsRailing();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:Hardware_limit.Railing)
 }
 Railing::Railing(const Railing& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&pa_, &from.pa_,
     static_cast<size_t>(reinterpret_cast<char*>(&railing_width_) -
@@ -234,6 +248,7 @@ Railing::Railing(const Railing& from)
 }
 
 void Railing::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&pa_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&railing_width_) -
       reinterpret_cast<char*>(&pa_)) + sizeof(railing_width_));
@@ -248,7 +263,9 @@ void Railing::SharedDtor() {
 }
 
 void Railing::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Railing::descriptor() {
   ::protobuf_hardware_5flimit_2eproto::protobuf_AssignDescriptorsOnce();
@@ -256,10 +273,17 @@ const ::google::protobuf::Descriptor* Railing::descriptor() {
 }
 
 const Railing& Railing::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_hardware_5flimit_2eproto::scc_info_Railing.base);
+  ::protobuf_hardware_5flimit_2eproto::InitDefaultsRailing();
   return *internal_default_instance();
 }
 
+Railing* Railing::New(::google::protobuf::Arena* arena) const {
+  Railing* n = new Railing;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Railing::Clear() {
 // @@protoc_insertion_point(message_clear_start:Hardware_limit.Railing)
@@ -283,7 +307,7 @@ bool Railing::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:Hardware_limit.Railing)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -482,7 +506,9 @@ size_t Railing::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -557,6 +583,7 @@ void Railing::InternalSwap(Railing* other) {
   swap(railing_width_, other->railing_width_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Railing::GetMetadata() const {
@@ -576,15 +603,17 @@ const int Theta_range::kMaxThetaFieldNumber;
 
 Theta_range::Theta_range()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_hardware_5flimit_2eproto::scc_info_Theta_range.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_hardware_5flimit_2eproto::InitDefaultsTheta_range();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:Hardware_limit.Theta_range)
 }
 Theta_range::Theta_range(const Theta_range& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&min_theta_, &from.min_theta_,
     static_cast<size_t>(reinterpret_cast<char*>(&max_theta_) -
@@ -593,6 +622,7 @@ Theta_range::Theta_range(const Theta_range& from)
 }
 
 void Theta_range::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&min_theta_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&max_theta_) -
       reinterpret_cast<char*>(&min_theta_)) + sizeof(max_theta_));
@@ -607,7 +637,9 @@ void Theta_range::SharedDtor() {
 }
 
 void Theta_range::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Theta_range::descriptor() {
   ::protobuf_hardware_5flimit_2eproto::protobuf_AssignDescriptorsOnce();
@@ -615,10 +647,17 @@ const ::google::protobuf::Descriptor* Theta_range::descriptor() {
 }
 
 const Theta_range& Theta_range::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_hardware_5flimit_2eproto::scc_info_Theta_range.base);
+  ::protobuf_hardware_5flimit_2eproto::InitDefaultsTheta_range();
   return *internal_default_instance();
 }
 
+Theta_range* Theta_range::New(::google::protobuf::Arena* arena) const {
+  Theta_range* n = new Theta_range;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Theta_range::Clear() {
 // @@protoc_insertion_point(message_clear_start:Hardware_limit.Theta_range)
@@ -642,7 +681,7 @@ bool Theta_range::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:Hardware_limit.Theta_range)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -780,7 +819,9 @@ size_t Theta_range::ByteSizeLong() const {
     total_size += RequiredFieldsByteSizeFallback();
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -847,6 +888,7 @@ void Theta_range::InternalSwap(Theta_range* other) {
   swap(max_theta_, other->max_theta_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Theta_range::GetMetadata() const {
@@ -873,8 +915,9 @@ const int Hardware_parameter::kHeightFieldNumber;
 
 Hardware_parameter::Hardware_parameter()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_hardware_5flimit_2eproto::scc_info_Hardware_parameter.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_hardware_5flimit_2eproto::InitDefaultsHardware_parameter();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:Hardware_limit.Hardware_parameter)
 }
@@ -882,6 +925,7 @@ Hardware_parameter::Hardware_parameter(const Hardware_parameter& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
+      _cached_size_(0),
       railing_parameter_(from.railing_parameter_),
       theta_range_(from.theta_range_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
@@ -892,6 +936,7 @@ Hardware_parameter::Hardware_parameter(const Hardware_parameter& from)
 }
 
 void Hardware_parameter::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&center_min_y_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&height_) -
       reinterpret_cast<char*>(&center_min_y_)) + sizeof(height_));
@@ -906,7 +951,9 @@ void Hardware_parameter::SharedDtor() {
 }
 
 void Hardware_parameter::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Hardware_parameter::descriptor() {
   ::protobuf_hardware_5flimit_2eproto::protobuf_AssignDescriptorsOnce();
@@ -914,10 +961,17 @@ const ::google::protobuf::Descriptor* Hardware_parameter::descriptor() {
 }
 
 const Hardware_parameter& Hardware_parameter::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_hardware_5flimit_2eproto::scc_info_Hardware_parameter.base);
+  ::protobuf_hardware_5flimit_2eproto::InitDefaultsHardware_parameter();
   return *internal_default_instance();
 }
 
+Hardware_parameter* Hardware_parameter::New(::google::protobuf::Arena* arena) const {
+  Hardware_parameter* n = new Hardware_parameter;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Hardware_parameter::Clear() {
 // @@protoc_insertion_point(message_clear_start:Hardware_limit.Hardware_parameter)
@@ -943,7 +997,7 @@ bool Hardware_parameter::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:Hardware_limit.Hardware_parameter)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -951,8 +1005,7 @@ bool Hardware_parameter::MergePartialFromCodedStream(
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_railing_parameter()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_railing_parameter()));
         } else {
           goto handle_unusual;
         }
@@ -1047,8 +1100,7 @@ bool Hardware_parameter::MergePartialFromCodedStream(
       case 8: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_theta_range()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_theta_range()));
         } else {
           goto handle_unusual;
         }
@@ -1099,9 +1151,7 @@ void Hardware_parameter::SerializeWithCachedSizes(
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->railing_parameter_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1,
-      this->railing_parameter(static_cast<int>(i)),
-      output);
+      1, this->railing_parameter(static_cast<int>(i)), output);
   }
 
   cached_has_bits = _has_bits_[0];
@@ -1139,9 +1189,7 @@ void Hardware_parameter::SerializeWithCachedSizes(
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->theta_range_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      8,
-      this->theta_range(static_cast<int>(i)),
-      output);
+      8, this->theta_range(static_cast<int>(i)), output);
   }
 
   // required float height = 9;
@@ -1321,7 +1369,9 @@ size_t Hardware_parameter::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -1403,8 +1453,8 @@ void Hardware_parameter::Swap(Hardware_parameter* other) {
 }
 void Hardware_parameter::InternalSwap(Hardware_parameter* other) {
   using std::swap;
-  CastToBase(&railing_parameter_)->InternalSwap(CastToBase(&other->railing_parameter_));
-  CastToBase(&theta_range_)->InternalSwap(CastToBase(&other->theta_range_));
+  railing_parameter_.InternalSwap(&other->railing_parameter_);
+  theta_range_.InternalSwap(&other->theta_range_);
   swap(center_min_y_, other->center_min_y_);
   swap(center_max_y_, other->center_max_y_);
   swap(center_min_x_, other->center_min_x_);
@@ -1414,6 +1464,7 @@ void Hardware_parameter::InternalSwap(Hardware_parameter* other) {
   swap(height_, other->height_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Hardware_parameter::GetMetadata() const {
@@ -1424,18 +1475,5 @@ void Hardware_parameter::InternalSwap(Hardware_parameter* other) {
 
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace Hardware_limit
-namespace google {
-namespace protobuf {
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::Hardware_limit::Railing* Arena::CreateMaybeMessage< ::Hardware_limit::Railing >(Arena* arena) {
-  return Arena::CreateInternal< ::Hardware_limit::Railing >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::Hardware_limit::Theta_range* Arena::CreateMaybeMessage< ::Hardware_limit::Theta_range >(Arena* arena) {
-  return Arena::CreateInternal< ::Hardware_limit::Theta_range >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::Hardware_limit::Hardware_parameter* Arena::CreateMaybeMessage< ::Hardware_limit::Hardware_parameter >(Arena* arena) {
-  return Arena::CreateInternal< ::Hardware_limit::Hardware_parameter >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
 
 // @@protoc_insertion_point(global_scope)

+ 84 - 94
verify/hardware_limit.pb.h

@@ -1,19 +1,19 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: hardware_limit.proto
 
-#ifndef PROTOBUF_INCLUDED_hardware_5flimit_2eproto
-#define PROTOBUF_INCLUDED_hardware_5flimit_2eproto
+#ifndef PROTOBUF_hardware_5flimit_2eproto__INCLUDED
+#define PROTOBUF_hardware_5flimit_2eproto__INCLUDED
 
 #include <string>
 
 #include <google/protobuf/stubs/common.h>
 
-#if GOOGLE_PROTOBUF_VERSION < 3006001
+#if GOOGLE_PROTOBUF_VERSION < 3005000
 #error This file was generated by a newer version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please update
 #error your headers.
 #endif
-#if 3006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 3005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
 #error This file was generated by an older version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please
 #error regenerate this file with a newer version of protoc.
@@ -24,14 +24,12 @@
 #include <google/protobuf/arenastring.h>
 #include <google/protobuf/generated_message_table_driven.h>
 #include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
 #include <google/protobuf/metadata.h>
 #include <google/protobuf/message.h>
 #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
 #include <google/protobuf/extension_set.h>  // IWYU pragma: export
 #include <google/protobuf/unknown_field_set.h>
 // @@protoc_insertion_point(includes)
-#define PROTOBUF_INTERNAL_EXPORT_protobuf_hardware_5flimit_2eproto 
 
 namespace protobuf_hardware_5flimit_2eproto {
 // Internal implementation detail -- do not use these members.
@@ -44,6 +42,17 @@ struct TableStruct {
   static const ::google::protobuf::uint32 offsets[];
 };
 void AddDescriptors();
+void InitDefaultsRailingImpl();
+void InitDefaultsRailing();
+void InitDefaultsTheta_rangeImpl();
+void InitDefaultsTheta_range();
+void InitDefaultsHardware_parameterImpl();
+void InitDefaultsHardware_parameter();
+inline void InitDefaults() {
+  InitDefaultsRailing();
+  InitDefaultsTheta_range();
+  InitDefaultsHardware_parameter();
+}
 }  // namespace protobuf_hardware_5flimit_2eproto
 namespace Hardware_limit {
 class Hardware_parameter;
@@ -56,13 +65,6 @@ class Theta_range;
 class Theta_rangeDefaultTypeInternal;
 extern Theta_rangeDefaultTypeInternal _Theta_range_default_instance_;
 }  // namespace Hardware_limit
-namespace google {
-namespace protobuf {
-template<> ::Hardware_limit::Hardware_parameter* Arena::CreateMaybeMessage<::Hardware_limit::Hardware_parameter>(Arena*);
-template<> ::Hardware_limit::Railing* Arena::CreateMaybeMessage<::Hardware_limit::Railing>(Arena*);
-template<> ::Hardware_limit::Theta_range* Arena::CreateMaybeMessage<::Hardware_limit::Theta_range>(Arena*);
-}  // namespace protobuf
-}  // namespace google
 namespace Hardware_limit {
 
 // ===================================================================
@@ -108,7 +110,7 @@ class Railing : public ::google::protobuf::Message /* @@protoc_insertion_point(c
     return reinterpret_cast<const Railing*>(
                &_Railing_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
   void Swap(Railing* other);
@@ -118,33 +120,28 @@ class Railing : public ::google::protobuf::Message /* @@protoc_insertion_point(c
 
   // implements Message ----------------------------------------------
 
-  inline Railing* New() const final {
-    return CreateMaybeMessage<Railing>(NULL);
-  }
+  inline Railing* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Railing* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Railing>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Railing* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Railing& from);
   void MergeFrom(const Railing& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Railing* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -155,7 +152,7 @@ class Railing : public ::google::protobuf::Message /* @@protoc_insertion_point(c
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -205,12 +202,13 @@ class Railing : public ::google::protobuf::Message /* @@protoc_insertion_point(c
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   float pa_;
   float pb_;
   float pc_;
   float railing_width_;
   friend struct ::protobuf_hardware_5flimit_2eproto::TableStruct;
+  friend void ::protobuf_hardware_5flimit_2eproto::InitDefaultsRailingImpl();
 };
 // -------------------------------------------------------------------
 
@@ -255,7 +253,7 @@ class Theta_range : public ::google::protobuf::Message /* @@protoc_insertion_poi
     return reinterpret_cast<const Theta_range*>(
                &_Theta_range_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     1;
 
   void Swap(Theta_range* other);
@@ -265,33 +263,28 @@ class Theta_range : public ::google::protobuf::Message /* @@protoc_insertion_poi
 
   // implements Message ----------------------------------------------
 
-  inline Theta_range* New() const final {
-    return CreateMaybeMessage<Theta_range>(NULL);
-  }
+  inline Theta_range* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Theta_range* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Theta_range>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Theta_range* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Theta_range& from);
   void MergeFrom(const Theta_range& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Theta_range* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -302,7 +295,7 @@ class Theta_range : public ::google::protobuf::Message /* @@protoc_insertion_poi
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -334,10 +327,11 @@ class Theta_range : public ::google::protobuf::Message /* @@protoc_insertion_poi
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   float min_theta_;
   float max_theta_;
   friend struct ::protobuf_hardware_5flimit_2eproto::TableStruct;
+  friend void ::protobuf_hardware_5flimit_2eproto::InitDefaultsTheta_rangeImpl();
 };
 // -------------------------------------------------------------------
 
@@ -382,7 +376,7 @@ class Hardware_parameter : public ::google::protobuf::Message /* @@protoc_insert
     return reinterpret_cast<const Hardware_parameter*>(
                &_Hardware_parameter_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     2;
 
   void Swap(Hardware_parameter* other);
@@ -392,33 +386,28 @@ class Hardware_parameter : public ::google::protobuf::Message /* @@protoc_insert
 
   // implements Message ----------------------------------------------
 
-  inline Hardware_parameter* New() const final {
-    return CreateMaybeMessage<Hardware_parameter>(NULL);
-  }
+  inline Hardware_parameter* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Hardware_parameter* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Hardware_parameter>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Hardware_parameter* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Hardware_parameter& from);
   void MergeFrom(const Hardware_parameter& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Hardware_parameter* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -429,7 +418,7 @@ class Hardware_parameter : public ::google::protobuf::Message /* @@protoc_insert
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -439,11 +428,11 @@ class Hardware_parameter : public ::google::protobuf::Message /* @@protoc_insert
   int railing_parameter_size() const;
   void clear_railing_parameter();
   static const int kRailingParameterFieldNumber = 1;
+  const ::Hardware_limit::Railing& railing_parameter(int index) const;
   ::Hardware_limit::Railing* mutable_railing_parameter(int index);
+  ::Hardware_limit::Railing* add_railing_parameter();
   ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Railing >*
       mutable_railing_parameter();
-  const ::Hardware_limit::Railing& railing_parameter(int index) const;
-  ::Hardware_limit::Railing* add_railing_parameter();
   const ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Railing >&
       railing_parameter() const;
 
@@ -451,11 +440,11 @@ class Hardware_parameter : public ::google::protobuf::Message /* @@protoc_insert
   int theta_range_size() const;
   void clear_theta_range();
   static const int kThetaRangeFieldNumber = 8;
+  const ::Hardware_limit::Theta_range& theta_range(int index) const;
   ::Hardware_limit::Theta_range* mutable_theta_range(int index);
+  ::Hardware_limit::Theta_range* add_theta_range();
   ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Theta_range >*
       mutable_theta_range();
-  const ::Hardware_limit::Theta_range& theta_range(int index) const;
-  ::Hardware_limit::Theta_range* add_theta_range();
   const ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Theta_range >&
       theta_range() const;
 
@@ -530,7 +519,7 @@ class Hardware_parameter : public ::google::protobuf::Message /* @@protoc_insert
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Railing > railing_parameter_;
   ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Theta_range > theta_range_;
   float center_min_y_;
@@ -541,6 +530,7 @@ class Hardware_parameter : public ::google::protobuf::Message /* @@protoc_insert
   float corner_max_y_;
   float height_;
   friend struct ::protobuf_hardware_5flimit_2eproto::TableStruct;
+  friend void ::protobuf_hardware_5flimit_2eproto::InitDefaultsHardware_parameterImpl();
 };
 // ===================================================================
 
@@ -712,23 +702,23 @@ inline int Hardware_parameter::railing_parameter_size() const {
 inline void Hardware_parameter::clear_railing_parameter() {
   railing_parameter_.Clear();
 }
+inline const ::Hardware_limit::Railing& Hardware_parameter::railing_parameter(int index) const {
+  // @@protoc_insertion_point(field_get:Hardware_limit.Hardware_parameter.railing_parameter)
+  return railing_parameter_.Get(index);
+}
 inline ::Hardware_limit::Railing* Hardware_parameter::mutable_railing_parameter(int index) {
   // @@protoc_insertion_point(field_mutable:Hardware_limit.Hardware_parameter.railing_parameter)
   return railing_parameter_.Mutable(index);
 }
+inline ::Hardware_limit::Railing* Hardware_parameter::add_railing_parameter() {
+  // @@protoc_insertion_point(field_add:Hardware_limit.Hardware_parameter.railing_parameter)
+  return railing_parameter_.Add();
+}
 inline ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Railing >*
 Hardware_parameter::mutable_railing_parameter() {
   // @@protoc_insertion_point(field_mutable_list:Hardware_limit.Hardware_parameter.railing_parameter)
   return &railing_parameter_;
 }
-inline const ::Hardware_limit::Railing& Hardware_parameter::railing_parameter(int index) const {
-  // @@protoc_insertion_point(field_get:Hardware_limit.Hardware_parameter.railing_parameter)
-  return railing_parameter_.Get(index);
-}
-inline ::Hardware_limit::Railing* Hardware_parameter::add_railing_parameter() {
-  // @@protoc_insertion_point(field_add:Hardware_limit.Hardware_parameter.railing_parameter)
-  return railing_parameter_.Add();
-}
 inline const ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Railing >&
 Hardware_parameter::railing_parameter() const {
   // @@protoc_insertion_point(field_list:Hardware_limit.Hardware_parameter.railing_parameter)
@@ -886,23 +876,23 @@ inline int Hardware_parameter::theta_range_size() const {
 inline void Hardware_parameter::clear_theta_range() {
   theta_range_.Clear();
 }
+inline const ::Hardware_limit::Theta_range& Hardware_parameter::theta_range(int index) const {
+  // @@protoc_insertion_point(field_get:Hardware_limit.Hardware_parameter.theta_range)
+  return theta_range_.Get(index);
+}
 inline ::Hardware_limit::Theta_range* Hardware_parameter::mutable_theta_range(int index) {
   // @@protoc_insertion_point(field_mutable:Hardware_limit.Hardware_parameter.theta_range)
   return theta_range_.Mutable(index);
 }
+inline ::Hardware_limit::Theta_range* Hardware_parameter::add_theta_range() {
+  // @@protoc_insertion_point(field_add:Hardware_limit.Hardware_parameter.theta_range)
+  return theta_range_.Add();
+}
 inline ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Theta_range >*
 Hardware_parameter::mutable_theta_range() {
   // @@protoc_insertion_point(field_mutable_list:Hardware_limit.Hardware_parameter.theta_range)
   return &theta_range_;
 }
-inline const ::Hardware_limit::Theta_range& Hardware_parameter::theta_range(int index) const {
-  // @@protoc_insertion_point(field_get:Hardware_limit.Hardware_parameter.theta_range)
-  return theta_range_.Get(index);
-}
-inline ::Hardware_limit::Theta_range* Hardware_parameter::add_theta_range() {
-  // @@protoc_insertion_point(field_add:Hardware_limit.Hardware_parameter.theta_range)
-  return theta_range_.Add();
-}
 inline const ::google::protobuf::RepeatedPtrField< ::Hardware_limit::Theta_range >&
 Hardware_parameter::theta_range() const {
   // @@protoc_insertion_point(field_list:Hardware_limit.Hardware_parameter.theta_range)
@@ -947,4 +937,4 @@ inline void Hardware_parameter::set_height(float value) {
 
 // @@protoc_insertion_point(global_scope)
 
-#endif  // PROTOBUF_INCLUDED_hardware_5flimit_2eproto
+#endif  // PROTOBUF_hardware_5flimit_2eproto__INCLUDED

+ 241 - 152
wanji_lidar/wj_lidar_conf.pb.cc

@@ -7,6 +7,7 @@
 
 #include <google/protobuf/stubs/common.h>
 #include <google/protobuf/stubs/port.h>
+#include <google/protobuf/stubs/once.h>
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/wire_format_lite_inl.h>
 #include <google/protobuf/descriptor.h>
@@ -18,14 +19,6 @@
 #include "third_party/protobuf/version.h"
 #endif
 // @@protoc_insertion_point(includes)
-
-namespace protobuf_wj_5flidar_5fconf_2eproto {
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_wj_5flidar_5fconf_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Region;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_wj_5flidar_5fconf_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Transform2d;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_wj_5flidar_5fconf_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_netConfig;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_wj_5flidar_5fconf_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_scanLimit;
-extern PROTOBUF_INTERNAL_EXPORT_protobuf_wj_5flidar_5fconf_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_wjLidarParams;
-}  // namespace protobuf_wj_5flidar_5fconf_2eproto
 namespace wj {
 class wjManagerParamsDefaultTypeInternal {
  public:
@@ -59,13 +52,20 @@ class scanLimitDefaultTypeInternal {
 } _scanLimit_default_instance_;
 }  // namespace wj
 namespace protobuf_wj_5flidar_5fconf_2eproto {
-static void InitDefaultswjManagerParams() {
+void InitDefaultswjManagerParamsImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
-  ::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.DefaultConstruct();
-  *::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get_mutable() = ::std::string("192.168.0.1", 11);
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_wj_5flidar_5fconf_2eproto::InitDefaultswjLidarParams();
+  protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsRegion();
+  ::wj::wjManagerParams::_default_plc_ip_address_.DefaultConstruct();
+  *::wj::wjManagerParams::_default_plc_ip_address_.get_mutable() = ::std::string("192.168.0.1", 11);
   ::google::protobuf::internal::OnShutdownDestroyString(
-      ::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get_mutable());
+      ::wj::wjManagerParams::_default_plc_ip_address_.get_mutable());
   {
     void* ptr = &::wj::_wjManagerParams_default_instance_;
     new (ptr) ::wj::wjManagerParams();
@@ -74,14 +74,19 @@ static void InitDefaultswjManagerParams() {
   ::wj::wjManagerParams::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<2> scc_info_wjManagerParams =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultswjManagerParams}, {
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_wjLidarParams.base,
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_Region.base,}};
+void InitDefaultswjManagerParams() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultswjManagerParamsImpl);
+}
 
-static void InitDefaultsRegion() {
+void InitDefaultsRegionImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::wj::_Region_default_instance_;
     new (ptr) ::wj::Region();
@@ -90,12 +95,22 @@ static void InitDefaultsRegion() {
   ::wj::Region::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Region =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRegion}, {}};
+void InitDefaultsRegion() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsRegionImpl);
+}
 
-static void InitDefaultswjLidarParams() {
+void InitDefaultswjLidarParamsImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsnetConfig();
+  protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsTransform2d();
+  protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsscanLimit();
   {
     void* ptr = &::wj::_wjLidarParams_default_instance_;
     new (ptr) ::wj::wjLidarParams();
@@ -104,15 +119,19 @@ static void InitDefaultswjLidarParams() {
   ::wj::wjLidarParams::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<3> scc_info_wjLidarParams =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultswjLidarParams}, {
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_netConfig.base,
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_Transform2d.base,
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_scanLimit.base,}};
+void InitDefaultswjLidarParams() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultswjLidarParamsImpl);
+}
 
-static void InitDefaultsnetConfig() {
+void InitDefaultsnetConfigImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::wj::_netConfig_default_instance_;
     new (ptr) ::wj::netConfig();
@@ -121,12 +140,19 @@ static void InitDefaultsnetConfig() {
   ::wj::netConfig::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_netConfig =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsnetConfig}, {}};
+void InitDefaultsnetConfig() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsnetConfigImpl);
+}
 
-static void InitDefaultsTransform2d() {
+void InitDefaultsTransform2dImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::wj::_Transform2d_default_instance_;
     new (ptr) ::wj::Transform2d();
@@ -135,12 +161,19 @@ static void InitDefaultsTransform2d() {
   ::wj::Transform2d::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Transform2d =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTransform2d}, {}};
+void InitDefaultsTransform2d() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsTransform2dImpl);
+}
 
-static void InitDefaultsscanLimit() {
+void InitDefaultsscanLimitImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::wj::_scanLimit_default_instance_;
     new (ptr) ::wj::scanLimit();
@@ -149,16 +182,9 @@ static void InitDefaultsscanLimit() {
   ::wj::scanLimit::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_scanLimit =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsscanLimit}, {}};
-
-void InitDefaults() {
-  ::google::protobuf::internal::InitSCC(&scc_info_wjManagerParams.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Region.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_wjLidarParams.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_netConfig.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Transform2d.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_scanLimit.base);
+void InitDefaultsscanLimit() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsscanLimitImpl);
 }
 
 ::google::protobuf::Metadata file_level_metadata[6];
@@ -277,14 +303,15 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
 
 void protobuf_AssignDescriptors() {
   AddDescriptors();
+  ::google::protobuf::MessageFactory* factory = NULL;
   AssignDescriptors(
-      "wj_lidar_conf.proto", schemas, file_default_instances, TableStruct::offsets,
+      "wj_lidar_conf.proto", schemas, file_default_instances, TableStruct::offsets, factory,
       file_level_metadata, NULL, NULL);
 }
 
 void protobuf_AssignDescriptorsOnce() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, protobuf_AssignDescriptors);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
 }
 
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
@@ -326,8 +353,8 @@ void AddDescriptorsImpl() {
 }
 
 void AddDescriptors() {
-  static ::google::protobuf::internal::once_flag once;
-  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
 }
 // Force AddDescriptors() to be called at dynamic initialization time.
 struct StaticDescriptorInitializer {
@@ -342,7 +369,7 @@ namespace wj {
 
 void wjManagerParams::InitAsDefaultInstance() {
 }
-::google::protobuf::internal::ExplicitlyConstructed<::std::string> wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_;
+::google::protobuf::internal::ExplicitlyConstructed< ::std::string> wjManagerParams::_default_plc_ip_address_;
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int wjManagerParams::kWjLidarFieldNumber;
 const int wjManagerParams::kRegionsFieldNumber;
@@ -353,8 +380,9 @@ const int wjManagerParams::kPlcIpAddressFieldNumber;
 
 wjManagerParams::wjManagerParams()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_wjManagerParams.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultswjManagerParams();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:wj.wjManagerParams)
 }
@@ -362,6 +390,7 @@ wjManagerParams::wjManagerParams(const wjManagerParams& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
+      _cached_size_(0),
       wj_lidar_(from.wj_lidar_),
       regions_(from.regions_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
@@ -373,17 +402,18 @@ wjManagerParams::wjManagerParams(const wjManagerParams& from)
   if (from.has_fence_log_path()) {
     fence_log_path_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.fence_log_path_);
   }
-  plc_ip_address_.UnsafeSetDefault(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get());
+  plc_ip_address_.UnsafeSetDefault(&::wj::wjManagerParams::_default_plc_ip_address_.get());
   if (from.has_plc_ip_address()) {
-    plc_ip_address_.AssignWithDefault(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(), from.plc_ip_address_);
+    plc_ip_address_.AssignWithDefault(&::wj::wjManagerParams::_default_plc_ip_address_.get(), from.plc_ip_address_);
   }
   // @@protoc_insertion_point(copy_constructor:wj.wjManagerParams)
 }
 
 void wjManagerParams::SharedCtor() {
+  _cached_size_ = 0;
   fence_data_path_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   fence_log_path_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  plc_ip_address_.UnsafeSetDefault(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get());
+  plc_ip_address_.UnsafeSetDefault(&::wj::wjManagerParams::_default_plc_ip_address_.get());
 }
 
 wjManagerParams::~wjManagerParams() {
@@ -394,11 +424,13 @@ wjManagerParams::~wjManagerParams() {
 void wjManagerParams::SharedDtor() {
   fence_data_path_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   fence_log_path_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  plc_ip_address_.DestroyNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get());
+  plc_ip_address_.DestroyNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get());
 }
 
 void wjManagerParams::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* wjManagerParams::descriptor() {
   ::protobuf_wj_5flidar_5fconf_2eproto::protobuf_AssignDescriptorsOnce();
@@ -406,10 +438,17 @@ const ::google::protobuf::Descriptor* wjManagerParams::descriptor() {
 }
 
 const wjManagerParams& wjManagerParams::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_wj_5flidar_5fconf_2eproto::scc_info_wjManagerParams.base);
+  ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultswjManagerParams();
   return *internal_default_instance();
 }
 
+wjManagerParams* wjManagerParams::New(::google::protobuf::Arena* arena) const {
+  wjManagerParams* n = new wjManagerParams;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void wjManagerParams::Clear() {
 // @@protoc_insertion_point(message_clear_start:wj.wjManagerParams)
@@ -422,13 +461,16 @@ void wjManagerParams::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 7u) {
     if (cached_has_bits & 0x00000001u) {
-      fence_data_path_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!fence_data_path_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*fence_data_path_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000002u) {
-      fence_log_path_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!fence_log_path_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*fence_log_path_.UnsafeRawStringPointer())->clear();
     }
     if (cached_has_bits & 0x00000004u) {
-      plc_ip_address_.UnsafeMutablePointer()->assign(*&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get());
+      GOOGLE_DCHECK(!plc_ip_address_.IsDefault(&::wj::wjManagerParams::_default_plc_ip_address_.get()));
+      (*plc_ip_address_.UnsafeRawStringPointer())->assign(*&::wj::wjManagerParams::_default_plc_ip_address_.get());
     }
   }
   _has_bits_.Clear();
@@ -441,7 +483,7 @@ bool wjManagerParams::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:wj.wjManagerParams)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -449,8 +491,7 @@ bool wjManagerParams::MergePartialFromCodedStream(
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_wj_lidar()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_wj_lidar()));
         } else {
           goto handle_unusual;
         }
@@ -461,8 +502,7 @@ bool wjManagerParams::MergePartialFromCodedStream(
       case 2: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_regions()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_regions()));
         } else {
           goto handle_unusual;
         }
@@ -547,18 +587,14 @@ void wjManagerParams::SerializeWithCachedSizes(
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->wj_lidar_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1,
-      this->wj_lidar(static_cast<int>(i)),
-      output);
+      1, this->wj_lidar(static_cast<int>(i)), output);
   }
 
   // repeated .wj.Region regions = 2;
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->regions_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2,
-      this->regions(static_cast<int>(i)),
-      output);
+      2, this->regions(static_cast<int>(i)), output);
   }
 
   cached_has_bits = _has_bits_[0];
@@ -719,7 +755,9 @@ size_t wjManagerParams::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -759,7 +797,7 @@ void wjManagerParams::MergeFrom(const wjManagerParams& from) {
     }
     if (cached_has_bits & 0x00000004u) {
       set_has_plc_ip_address();
-      plc_ip_address_.AssignWithDefault(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(), from.plc_ip_address_);
+      plc_ip_address_.AssignWithDefault(&::wj::wjManagerParams::_default_plc_ip_address_.get(), from.plc_ip_address_);
     }
   }
 }
@@ -790,16 +828,14 @@ void wjManagerParams::Swap(wjManagerParams* other) {
 }
 void wjManagerParams::InternalSwap(wjManagerParams* other) {
   using std::swap;
-  CastToBase(&wj_lidar_)->InternalSwap(CastToBase(&other->wj_lidar_));
-  CastToBase(&regions_)->InternalSwap(CastToBase(&other->regions_));
-  fence_data_path_.Swap(&other->fence_data_path_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  fence_log_path_.Swap(&other->fence_log_path_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  plc_ip_address_.Swap(&other->plc_ip_address_, &::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(),
-    GetArenaNoVirtual());
+  wj_lidar_.InternalSwap(&other->wj_lidar_);
+  regions_.InternalSwap(&other->regions_);
+  fence_data_path_.Swap(&other->fence_data_path_);
+  fence_log_path_.Swap(&other->fence_log_path_);
+  plc_ip_address_.Swap(&other->plc_ip_address_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata wjManagerParams::GetMetadata() const {
@@ -821,15 +857,17 @@ const int Region::kMaxyFieldNumber;
 
 Region::Region()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_Region.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsRegion();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:wj.Region)
 }
 Region::Region(const Region& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&minx_, &from.minx_,
     static_cast<size_t>(reinterpret_cast<char*>(&maxy_) -
@@ -838,6 +876,7 @@ Region::Region(const Region& from)
 }
 
 void Region::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&minx_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&maxy_) -
       reinterpret_cast<char*>(&minx_)) + sizeof(maxy_));
@@ -852,7 +891,9 @@ void Region::SharedDtor() {
 }
 
 void Region::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Region::descriptor() {
   ::protobuf_wj_5flidar_5fconf_2eproto::protobuf_AssignDescriptorsOnce();
@@ -860,10 +901,17 @@ const ::google::protobuf::Descriptor* Region::descriptor() {
 }
 
 const Region& Region::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_wj_5flidar_5fconf_2eproto::scc_info_Region.base);
+  ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsRegion();
   return *internal_default_instance();
 }
 
+Region* Region::New(::google::protobuf::Arena* arena) const {
+  Region* n = new Region;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Region::Clear() {
 // @@protoc_insertion_point(message_clear_start:wj.Region)
@@ -887,7 +935,7 @@ bool Region::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:wj.Region)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1089,7 +1137,9 @@ size_t Region::ByteSizeLong() const {
     total_size += RequiredFieldsByteSizeFallback();
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -1164,6 +1214,7 @@ void Region::InternalSwap(Region* other) {
   swap(maxy_, other->maxy_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Region::GetMetadata() const {
@@ -1196,15 +1247,17 @@ const int wjLidarParams::kScanLimitFieldNumber;
 
 wjLidarParams::wjLidarParams()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_wjLidarParams.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultswjLidarParams();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:wj.wjLidarParams)
 }
 wjLidarParams::wjLidarParams(const wjLidarParams& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_net_config()) {
     net_config_ = new ::wj::netConfig(*from.net_config_);
@@ -1228,6 +1281,7 @@ wjLidarParams::wjLidarParams(const wjLidarParams& from)
 }
 
 void wjLidarParams::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&net_config_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&range_min_) -
       reinterpret_cast<char*>(&net_config_)) + sizeof(range_min_));
@@ -1250,7 +1304,9 @@ void wjLidarParams::SharedDtor() {
 }
 
 void wjLidarParams::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* wjLidarParams::descriptor() {
   ::protobuf_wj_5flidar_5fconf_2eproto::protobuf_AssignDescriptorsOnce();
@@ -1258,10 +1314,17 @@ const ::google::protobuf::Descriptor* wjLidarParams::descriptor() {
 }
 
 const wjLidarParams& wjLidarParams::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_wj_5flidar_5fconf_2eproto::scc_info_wjLidarParams.base);
+  ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultswjLidarParams();
   return *internal_default_instance();
 }
 
+wjLidarParams* wjLidarParams::New(::google::protobuf::Arena* arena) const {
+  wjLidarParams* n = new wjLidarParams;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void wjLidarParams::Clear() {
 // @@protoc_insertion_point(message_clear_start:wj.wjLidarParams)
@@ -1302,7 +1365,7 @@ bool wjLidarParams::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:wj.wjLidarParams)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1486,19 +1549,19 @@ void wjLidarParams::SerializeWithCachedSizes(
   // required .wj.netConfig net_config = 7;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      7, this->_internal_net_config(), output);
+      7, *this->net_config_, output);
   }
 
   // required .wj.Transform2d transform = 8;
   if (cached_has_bits & 0x00000002u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      8, this->_internal_transform(), output);
+      8, *this->transform_, output);
   }
 
   // required .wj.scanLimit scan_limit = 9;
   if (cached_has_bits & 0x00000004u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      9, this->_internal_scan_limit(), output);
+      9, *this->scan_limit_, output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1550,21 +1613,21 @@ void wjLidarParams::SerializeWithCachedSizes(
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        7, this->_internal_net_config(), deterministic, target);
+        7, *this->net_config_, deterministic, target);
   }
 
   // required .wj.Transform2d transform = 8;
   if (cached_has_bits & 0x00000002u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        8, this->_internal_transform(), deterministic, target);
+        8, *this->transform_, deterministic, target);
   }
 
   // required .wj.scanLimit scan_limit = 9;
   if (cached_has_bits & 0x00000004u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        9, this->_internal_scan_limit(), deterministic, target);
+        9, *this->scan_limit_, deterministic, target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1583,21 +1646,21 @@ size_t wjLidarParams::RequiredFieldsByteSizeFallback() const {
     // required .wj.netConfig net_config = 7;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *net_config_);
+        *this->net_config_);
   }
 
   if (has_transform()) {
     // required .wj.Transform2d transform = 8;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *transform_);
+        *this->transform_);
   }
 
   if (has_scan_limit()) {
     // required .wj.scanLimit scan_limit = 9;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *scan_limit_);
+        *this->scan_limit_);
   }
 
   return total_size;
@@ -1615,17 +1678,17 @@ size_t wjLidarParams::ByteSizeLong() const {
     // required .wj.netConfig net_config = 7;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *net_config_);
+        *this->net_config_);
 
     // required .wj.Transform2d transform = 8;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *transform_);
+        *this->transform_);
 
     // required .wj.scanLimit scan_limit = 9;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *scan_limit_);
+        *this->scan_limit_);
 
   } else {
     total_size += RequiredFieldsByteSizeFallback();
@@ -1667,7 +1730,9 @@ size_t wjLidarParams::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -1762,6 +1827,7 @@ void wjLidarParams::InternalSwap(wjLidarParams* other) {
   swap(time_increment_, other->time_increment_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata wjLidarParams::GetMetadata() const {
@@ -1781,15 +1847,17 @@ const int netConfig::kPortFieldNumber;
 
 netConfig::netConfig()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_netConfig.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsnetConfig();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:wj.netConfig)
 }
 netConfig::netConfig(const netConfig& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ip_address_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.has_ip_address()) {
@@ -1800,6 +1868,7 @@ netConfig::netConfig(const netConfig& from)
 }
 
 void netConfig::SharedCtor() {
+  _cached_size_ = 0;
   ip_address_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   port_ = 8000;
 }
@@ -1814,7 +1883,9 @@ void netConfig::SharedDtor() {
 }
 
 void netConfig::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* netConfig::descriptor() {
   ::protobuf_wj_5flidar_5fconf_2eproto::protobuf_AssignDescriptorsOnce();
@@ -1822,10 +1893,17 @@ const ::google::protobuf::Descriptor* netConfig::descriptor() {
 }
 
 const netConfig& netConfig::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_wj_5flidar_5fconf_2eproto::scc_info_netConfig.base);
+  ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsnetConfig();
   return *internal_default_instance();
 }
 
+netConfig* netConfig::New(::google::protobuf::Arena* arena) const {
+  netConfig* n = new netConfig;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void netConfig::Clear() {
 // @@protoc_insertion_point(message_clear_start:wj.netConfig)
@@ -1836,7 +1914,8 @@ void netConfig::Clear() {
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 3u) {
     if (cached_has_bits & 0x00000001u) {
-      ip_address_.ClearNonDefaultToEmptyNoArena();
+      GOOGLE_DCHECK(!ip_address_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+      (*ip_address_.UnsafeRawStringPointer())->clear();
     }
     port_ = 8000;
   }
@@ -1850,7 +1929,7 @@ bool netConfig::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:wj.netConfig)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -1991,7 +2070,9 @@ size_t netConfig::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2054,11 +2135,11 @@ void netConfig::Swap(netConfig* other) {
 }
 void netConfig::InternalSwap(netConfig* other) {
   using std::swap;
-  ip_address_.Swap(&other->ip_address_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  ip_address_.Swap(&other->ip_address_);
   swap(port_, other->port_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata netConfig::GetMetadata() const {
@@ -2082,15 +2163,17 @@ const int Transform2d::kM12FieldNumber;
 
 Transform2d::Transform2d()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_Transform2d.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsTransform2d();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:wj.Transform2d)
 }
 Transform2d::Transform2d(const Transform2d& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&m01_, &from.m01_,
     static_cast<size_t>(reinterpret_cast<char*>(&m11_) -
@@ -2099,6 +2182,7 @@ Transform2d::Transform2d(const Transform2d& from)
 }
 
 void Transform2d::SharedCtor() {
+  _cached_size_ = 0;
   ::memset(&m01_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&m12_) -
       reinterpret_cast<char*>(&m01_)) + sizeof(m12_));
@@ -2115,7 +2199,9 @@ void Transform2d::SharedDtor() {
 }
 
 void Transform2d::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* Transform2d::descriptor() {
   ::protobuf_wj_5flidar_5fconf_2eproto::protobuf_AssignDescriptorsOnce();
@@ -2123,10 +2209,17 @@ const ::google::protobuf::Descriptor* Transform2d::descriptor() {
 }
 
 const Transform2d& Transform2d::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_wj_5flidar_5fconf_2eproto::scc_info_Transform2d.base);
+  ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsTransform2d();
   return *internal_default_instance();
 }
 
+Transform2d* Transform2d::New(::google::protobuf::Arena* arena) const {
+  Transform2d* n = new Transform2d;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Transform2d::Clear() {
 // @@protoc_insertion_point(message_clear_start:wj.Transform2d)
@@ -2152,7 +2245,7 @@ bool Transform2d::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:wj.Transform2d)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -2392,7 +2485,9 @@ size_t Transform2d::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2474,6 +2569,7 @@ void Transform2d::InternalSwap(Transform2d* other) {
   swap(m11_, other->m11_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Transform2d::GetMetadata() const {
@@ -2496,15 +2592,17 @@ const int scanLimit::kMaxyFieldNumber;
 
 scanLimit::scanLimit()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
-  ::google::protobuf::internal::InitSCC(
-      &protobuf_wj_5flidar_5fconf_2eproto::scc_info_scanLimit.base);
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsscanLimit();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:wj.scanLimit)
 }
 scanLimit::scanLimit(const scanLimit& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      _has_bits_(from._has_bits_) {
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&maxy_, &from.maxy_,
     static_cast<size_t>(reinterpret_cast<char*>(&miny_) -
@@ -2513,6 +2611,7 @@ scanLimit::scanLimit(const scanLimit& from)
 }
 
 void scanLimit::SharedCtor() {
+  _cached_size_ = 0;
   maxy_ = 3.5f;
   dist_limit_ = 8;
   minx_ = -6;
@@ -2529,7 +2628,9 @@ void scanLimit::SharedDtor() {
 }
 
 void scanLimit::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
 const ::google::protobuf::Descriptor* scanLimit::descriptor() {
   ::protobuf_wj_5flidar_5fconf_2eproto::protobuf_AssignDescriptorsOnce();
@@ -2537,10 +2638,17 @@ const ::google::protobuf::Descriptor* scanLimit::descriptor() {
 }
 
 const scanLimit& scanLimit::default_instance() {
-  ::google::protobuf::internal::InitSCC(&protobuf_wj_5flidar_5fconf_2eproto::scc_info_scanLimit.base);
+  ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsscanLimit();
   return *internal_default_instance();
 }
 
+scanLimit* scanLimit::New(::google::protobuf::Arena* arena) const {
+  scanLimit* n = new scanLimit;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void scanLimit::Clear() {
 // @@protoc_insertion_point(message_clear_start:wj.scanLimit)
@@ -2566,7 +2674,7 @@ bool scanLimit::MergePartialFromCodedStream(
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:wj.scanLimit)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::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)) {
@@ -2777,7 +2885,9 @@ size_t scanLimit::ByteSizeLong() const {
 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -2855,6 +2965,7 @@ void scanLimit::InternalSwap(scanLimit* other) {
   swap(miny_, other->miny_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata scanLimit::GetMetadata() const {
@@ -2865,27 +2976,5 @@ void scanLimit::InternalSwap(scanLimit* other) {
 
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace wj
-namespace google {
-namespace protobuf {
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::wj::wjManagerParams* Arena::CreateMaybeMessage< ::wj::wjManagerParams >(Arena* arena) {
-  return Arena::CreateInternal< ::wj::wjManagerParams >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::wj::Region* Arena::CreateMaybeMessage< ::wj::Region >(Arena* arena) {
-  return Arena::CreateInternal< ::wj::Region >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::wj::wjLidarParams* Arena::CreateMaybeMessage< ::wj::wjLidarParams >(Arena* arena) {
-  return Arena::CreateInternal< ::wj::wjLidarParams >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::wj::netConfig* Arena::CreateMaybeMessage< ::wj::netConfig >(Arena* arena) {
-  return Arena::CreateInternal< ::wj::netConfig >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::wj::Transform2d* Arena::CreateMaybeMessage< ::wj::Transform2d >(Arena* arena) {
-  return Arena::CreateInternal< ::wj::Transform2d >(arena);
-}
-template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::wj::scanLimit* Arena::CreateMaybeMessage< ::wj::scanLimit >(Arena* arena) {
-  return Arena::CreateInternal< ::wj::scanLimit >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
 
 // @@protoc_insertion_point(global_scope)

+ 156 - 207
wanji_lidar/wj_lidar_conf.pb.h

@@ -1,19 +1,19 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: wj_lidar_conf.proto
 
-#ifndef PROTOBUF_INCLUDED_wj_5flidar_5fconf_2eproto
-#define PROTOBUF_INCLUDED_wj_5flidar_5fconf_2eproto
+#ifndef PROTOBUF_wj_5flidar_5fconf_2eproto__INCLUDED
+#define PROTOBUF_wj_5flidar_5fconf_2eproto__INCLUDED
 
 #include <string>
 
 #include <google/protobuf/stubs/common.h>
 
-#if GOOGLE_PROTOBUF_VERSION < 3006001
+#if GOOGLE_PROTOBUF_VERSION < 3005000
 #error This file was generated by a newer version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please update
 #error your headers.
 #endif
-#if 3006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 3005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
 #error This file was generated by an older version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please
 #error regenerate this file with a newer version of protoc.
@@ -24,14 +24,12 @@
 #include <google/protobuf/arenastring.h>
 #include <google/protobuf/generated_message_table_driven.h>
 #include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
 #include <google/protobuf/metadata.h>
 #include <google/protobuf/message.h>
 #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
 #include <google/protobuf/extension_set.h>  // IWYU pragma: export
 #include <google/protobuf/unknown_field_set.h>
 // @@protoc_insertion_point(includes)
-#define PROTOBUF_INTERNAL_EXPORT_protobuf_wj_5flidar_5fconf_2eproto 
 
 namespace protobuf_wj_5flidar_5fconf_2eproto {
 // Internal implementation detail -- do not use these members.
@@ -44,6 +42,26 @@ struct TableStruct {
   static const ::google::protobuf::uint32 offsets[];
 };
 void AddDescriptors();
+void InitDefaultswjManagerParamsImpl();
+void InitDefaultswjManagerParams();
+void InitDefaultsRegionImpl();
+void InitDefaultsRegion();
+void InitDefaultswjLidarParamsImpl();
+void InitDefaultswjLidarParams();
+void InitDefaultsnetConfigImpl();
+void InitDefaultsnetConfig();
+void InitDefaultsTransform2dImpl();
+void InitDefaultsTransform2d();
+void InitDefaultsscanLimitImpl();
+void InitDefaultsscanLimit();
+inline void InitDefaults() {
+  InitDefaultswjManagerParams();
+  InitDefaultsRegion();
+  InitDefaultswjLidarParams();
+  InitDefaultsnetConfig();
+  InitDefaultsTransform2d();
+  InitDefaultsscanLimit();
+}
 }  // namespace protobuf_wj_5flidar_5fconf_2eproto
 namespace wj {
 class Region;
@@ -65,16 +83,6 @@ class wjManagerParams;
 class wjManagerParamsDefaultTypeInternal;
 extern wjManagerParamsDefaultTypeInternal _wjManagerParams_default_instance_;
 }  // namespace wj
-namespace google {
-namespace protobuf {
-template<> ::wj::Region* Arena::CreateMaybeMessage<::wj::Region>(Arena*);
-template<> ::wj::Transform2d* Arena::CreateMaybeMessage<::wj::Transform2d>(Arena*);
-template<> ::wj::netConfig* Arena::CreateMaybeMessage<::wj::netConfig>(Arena*);
-template<> ::wj::scanLimit* Arena::CreateMaybeMessage<::wj::scanLimit>(Arena*);
-template<> ::wj::wjLidarParams* Arena::CreateMaybeMessage<::wj::wjLidarParams>(Arena*);
-template<> ::wj::wjManagerParams* Arena::CreateMaybeMessage<::wj::wjManagerParams>(Arena*);
-}  // namespace protobuf
-}  // namespace google
 namespace wj {
 
 // ===================================================================
@@ -120,7 +128,7 @@ class wjManagerParams : public ::google::protobuf::Message /* @@protoc_insertion
     return reinterpret_cast<const wjManagerParams*>(
                &_wjManagerParams_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
   void Swap(wjManagerParams* other);
@@ -130,33 +138,28 @@ class wjManagerParams : public ::google::protobuf::Message /* @@protoc_insertion
 
   // implements Message ----------------------------------------------
 
-  inline wjManagerParams* New() const final {
-    return CreateMaybeMessage<wjManagerParams>(NULL);
-  }
+  inline wjManagerParams* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  wjManagerParams* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<wjManagerParams>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  wjManagerParams* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const wjManagerParams& from);
   void MergeFrom(const wjManagerParams& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(wjManagerParams* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -167,7 +170,7 @@ class wjManagerParams : public ::google::protobuf::Message /* @@protoc_insertion
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -177,11 +180,11 @@ class wjManagerParams : public ::google::protobuf::Message /* @@protoc_insertion
   int wj_lidar_size() const;
   void clear_wj_lidar();
   static const int kWjLidarFieldNumber = 1;
+  const ::wj::wjLidarParams& wj_lidar(int index) const;
   ::wj::wjLidarParams* mutable_wj_lidar(int index);
+  ::wj::wjLidarParams* add_wj_lidar();
   ::google::protobuf::RepeatedPtrField< ::wj::wjLidarParams >*
       mutable_wj_lidar();
-  const ::wj::wjLidarParams& wj_lidar(int index) const;
-  ::wj::wjLidarParams* add_wj_lidar();
   const ::google::protobuf::RepeatedPtrField< ::wj::wjLidarParams >&
       wj_lidar() const;
 
@@ -189,11 +192,11 @@ class wjManagerParams : public ::google::protobuf::Message /* @@protoc_insertion
   int regions_size() const;
   void clear_regions();
   static const int kRegionsFieldNumber = 2;
+  const ::wj::Region& regions(int index) const;
   ::wj::Region* mutable_regions(int index);
+  ::wj::Region* add_regions();
   ::google::protobuf::RepeatedPtrField< ::wj::Region >*
       mutable_regions();
-  const ::wj::Region& regions(int index) const;
-  ::wj::Region* add_regions();
   const ::google::protobuf::RepeatedPtrField< ::wj::Region >&
       regions() const;
 
@@ -253,16 +256,15 @@ class wjManagerParams : public ::google::protobuf::Message /* @@protoc_insertion
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::wj::wjLidarParams > wj_lidar_;
   ::google::protobuf::RepeatedPtrField< ::wj::Region > regions_;
   ::google::protobuf::internal::ArenaStringPtr fence_data_path_;
   ::google::protobuf::internal::ArenaStringPtr fence_log_path_;
-  public:
-  static ::google::protobuf::internal::ExplicitlyConstructed< ::std::string> _i_give_permission_to_break_this_code_default_plc_ip_address_;
-  private:
+  static ::google::protobuf::internal::ExplicitlyConstructed< ::std::string> _default_plc_ip_address_;
   ::google::protobuf::internal::ArenaStringPtr plc_ip_address_;
   friend struct ::protobuf_wj_5flidar_5fconf_2eproto::TableStruct;
+  friend void ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultswjManagerParamsImpl();
 };
 // -------------------------------------------------------------------
 
@@ -307,7 +309,7 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
     return reinterpret_cast<const Region*>(
                &_Region_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     1;
 
   void Swap(Region* other);
@@ -317,33 +319,28 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
 
   // implements Message ----------------------------------------------
 
-  inline Region* New() const final {
-    return CreateMaybeMessage<Region>(NULL);
-  }
+  inline Region* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Region* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Region>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Region* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Region& from);
   void MergeFrom(const Region& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Region* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -354,7 +351,7 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -404,12 +401,13 @@ class Region : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   float minx_;
   float maxx_;
   float miny_;
   float maxy_;
   friend struct ::protobuf_wj_5flidar_5fconf_2eproto::TableStruct;
+  friend void ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsRegionImpl();
 };
 // -------------------------------------------------------------------
 
@@ -454,7 +452,7 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
     return reinterpret_cast<const wjLidarParams*>(
                &_wjLidarParams_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     2;
 
   void Swap(wjLidarParams* other);
@@ -464,33 +462,28 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
 
   // implements Message ----------------------------------------------
 
-  inline wjLidarParams* New() const final {
-    return CreateMaybeMessage<wjLidarParams>(NULL);
-  }
+  inline wjLidarParams* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  wjLidarParams* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<wjLidarParams>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  wjLidarParams* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const wjLidarParams& from);
   void MergeFrom(const wjLidarParams& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(wjLidarParams* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -501,7 +494,7 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -511,9 +504,6 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
   bool has_net_config() const;
   void clear_net_config();
   static const int kNetConfigFieldNumber = 7;
-  private:
-  const ::wj::netConfig& _internal_net_config() const;
-  public:
   const ::wj::netConfig& net_config() const;
   ::wj::netConfig* release_net_config();
   ::wj::netConfig* mutable_net_config();
@@ -523,9 +513,6 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
   bool has_transform() const;
   void clear_transform();
   static const int kTransformFieldNumber = 8;
-  private:
-  const ::wj::Transform2d& _internal_transform() const;
-  public:
   const ::wj::Transform2d& transform() const;
   ::wj::Transform2d* release_transform();
   ::wj::Transform2d* mutable_transform();
@@ -535,9 +522,6 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
   bool has_scan_limit() const;
   void clear_scan_limit();
   static const int kScanLimitFieldNumber = 9;
-  private:
-  const ::wj::scanLimit& _internal_scan_limit() const;
-  public:
   const ::wj::scanLimit& scan_limit() const;
   ::wj::scanLimit* release_scan_limit();
   ::wj::scanLimit* mutable_scan_limit();
@@ -611,7 +595,7 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::wj::netConfig* net_config_;
   ::wj::Transform2d* transform_;
   ::wj::scanLimit* scan_limit_;
@@ -622,6 +606,7 @@ class wjLidarParams : public ::google::protobuf::Message /* @@protoc_insertion_p
   float angle_increment_;
   float time_increment_;
   friend struct ::protobuf_wj_5flidar_5fconf_2eproto::TableStruct;
+  friend void ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultswjLidarParamsImpl();
 };
 // -------------------------------------------------------------------
 
@@ -666,7 +651,7 @@ class netConfig : public ::google::protobuf::Message /* @@protoc_insertion_point
     return reinterpret_cast<const netConfig*>(
                &_netConfig_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     3;
 
   void Swap(netConfig* other);
@@ -676,33 +661,28 @@ class netConfig : public ::google::protobuf::Message /* @@protoc_insertion_point
 
   // implements Message ----------------------------------------------
 
-  inline netConfig* New() const final {
-    return CreateMaybeMessage<netConfig>(NULL);
-  }
+  inline netConfig* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  netConfig* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<netConfig>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  netConfig* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const netConfig& from);
   void MergeFrom(const netConfig& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(netConfig* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -713,7 +693,7 @@ class netConfig : public ::google::protobuf::Message /* @@protoc_insertion_point
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -750,10 +730,11 @@ class netConfig : public ::google::protobuf::Message /* @@protoc_insertion_point
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::internal::ArenaStringPtr ip_address_;
   ::google::protobuf::int32 port_;
   friend struct ::protobuf_wj_5flidar_5fconf_2eproto::TableStruct;
+  friend void ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsnetConfigImpl();
 };
 // -------------------------------------------------------------------
 
@@ -798,7 +779,7 @@ class Transform2d : public ::google::protobuf::Message /* @@protoc_insertion_poi
     return reinterpret_cast<const Transform2d*>(
                &_Transform2d_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     4;
 
   void Swap(Transform2d* other);
@@ -808,33 +789,28 @@ class Transform2d : public ::google::protobuf::Message /* @@protoc_insertion_poi
 
   // implements Message ----------------------------------------------
 
-  inline Transform2d* New() const final {
-    return CreateMaybeMessage<Transform2d>(NULL);
-  }
+  inline Transform2d* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Transform2d* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Transform2d>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Transform2d* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Transform2d& from);
   void MergeFrom(const Transform2d& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Transform2d* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -845,7 +821,7 @@ class Transform2d : public ::google::protobuf::Message /* @@protoc_insertion_poi
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -910,7 +886,7 @@ class Transform2d : public ::google::protobuf::Message /* @@protoc_insertion_poi
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   float m01_;
   float m02_;
   float m10_;
@@ -918,6 +894,7 @@ class Transform2d : public ::google::protobuf::Message /* @@protoc_insertion_poi
   float m00_;
   float m11_;
   friend struct ::protobuf_wj_5flidar_5fconf_2eproto::TableStruct;
+  friend void ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsTransform2dImpl();
 };
 // -------------------------------------------------------------------
 
@@ -962,7 +939,7 @@ class scanLimit : public ::google::protobuf::Message /* @@protoc_insertion_point
     return reinterpret_cast<const scanLimit*>(
                &_scanLimit_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     5;
 
   void Swap(scanLimit* other);
@@ -972,33 +949,28 @@ class scanLimit : public ::google::protobuf::Message /* @@protoc_insertion_point
 
   // implements Message ----------------------------------------------
 
-  inline scanLimit* New() const final {
-    return CreateMaybeMessage<scanLimit>(NULL);
-  }
+  inline scanLimit* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  scanLimit* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<scanLimit>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  scanLimit* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const scanLimit& from);
   void MergeFrom(const scanLimit& from);
-  void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(scanLimit* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
@@ -1009,7 +981,7 @@ class scanLimit : public ::google::protobuf::Message /* @@protoc_insertion_point
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -1065,13 +1037,14 @@ class scanLimit : public ::google::protobuf::Message /* @@protoc_insertion_point
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   float maxy_;
   float dist_limit_;
   float minx_;
   float maxx_;
   float miny_;
   friend struct ::protobuf_wj_5flidar_5fconf_2eproto::TableStruct;
+  friend void ::protobuf_wj_5flidar_5fconf_2eproto::InitDefaultsscanLimitImpl();
 };
 // ===================================================================
 
@@ -1091,23 +1064,23 @@ inline int wjManagerParams::wj_lidar_size() const {
 inline void wjManagerParams::clear_wj_lidar() {
   wj_lidar_.Clear();
 }
+inline const ::wj::wjLidarParams& wjManagerParams::wj_lidar(int index) const {
+  // @@protoc_insertion_point(field_get:wj.wjManagerParams.wj_lidar)
+  return wj_lidar_.Get(index);
+}
 inline ::wj::wjLidarParams* wjManagerParams::mutable_wj_lidar(int index) {
   // @@protoc_insertion_point(field_mutable:wj.wjManagerParams.wj_lidar)
   return wj_lidar_.Mutable(index);
 }
+inline ::wj::wjLidarParams* wjManagerParams::add_wj_lidar() {
+  // @@protoc_insertion_point(field_add:wj.wjManagerParams.wj_lidar)
+  return wj_lidar_.Add();
+}
 inline ::google::protobuf::RepeatedPtrField< ::wj::wjLidarParams >*
 wjManagerParams::mutable_wj_lidar() {
   // @@protoc_insertion_point(field_mutable_list:wj.wjManagerParams.wj_lidar)
   return &wj_lidar_;
 }
-inline const ::wj::wjLidarParams& wjManagerParams::wj_lidar(int index) const {
-  // @@protoc_insertion_point(field_get:wj.wjManagerParams.wj_lidar)
-  return wj_lidar_.Get(index);
-}
-inline ::wj::wjLidarParams* wjManagerParams::add_wj_lidar() {
-  // @@protoc_insertion_point(field_add:wj.wjManagerParams.wj_lidar)
-  return wj_lidar_.Add();
-}
 inline const ::google::protobuf::RepeatedPtrField< ::wj::wjLidarParams >&
 wjManagerParams::wj_lidar() const {
   // @@protoc_insertion_point(field_list:wj.wjManagerParams.wj_lidar)
@@ -1121,23 +1094,23 @@ inline int wjManagerParams::regions_size() const {
 inline void wjManagerParams::clear_regions() {
   regions_.Clear();
 }
+inline const ::wj::Region& wjManagerParams::regions(int index) const {
+  // @@protoc_insertion_point(field_get:wj.wjManagerParams.regions)
+  return regions_.Get(index);
+}
 inline ::wj::Region* wjManagerParams::mutable_regions(int index) {
   // @@protoc_insertion_point(field_mutable:wj.wjManagerParams.regions)
   return regions_.Mutable(index);
 }
+inline ::wj::Region* wjManagerParams::add_regions() {
+  // @@protoc_insertion_point(field_add:wj.wjManagerParams.regions)
+  return regions_.Add();
+}
 inline ::google::protobuf::RepeatedPtrField< ::wj::Region >*
 wjManagerParams::mutable_regions() {
   // @@protoc_insertion_point(field_mutable_list:wj.wjManagerParams.regions)
   return &regions_;
 }
-inline const ::wj::Region& wjManagerParams::regions(int index) const {
-  // @@protoc_insertion_point(field_get:wj.wjManagerParams.regions)
-  return regions_.Get(index);
-}
-inline ::wj::Region* wjManagerParams::add_regions() {
-  // @@protoc_insertion_point(field_add:wj.wjManagerParams.regions)
-  return regions_.Add();
-}
 inline const ::google::protobuf::RepeatedPtrField< ::wj::Region >&
 wjManagerParams::regions() const {
   // @@protoc_insertion_point(field_list:wj.wjManagerParams.regions)
@@ -1194,11 +1167,8 @@ inline ::std::string* wjManagerParams::mutable_fence_data_path() {
 }
 inline ::std::string* wjManagerParams::release_fence_data_path() {
   // @@protoc_insertion_point(field_release:wj.wjManagerParams.fence_data_path)
-  if (!has_fence_data_path()) {
-    return NULL;
-  }
   clear_has_fence_data_path();
-  return fence_data_path_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return fence_data_path_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void wjManagerParams::set_allocated_fence_data_path(::std::string* fence_data_path) {
   if (fence_data_path != NULL) {
@@ -1260,11 +1230,8 @@ inline ::std::string* wjManagerParams::mutable_fence_log_path() {
 }
 inline ::std::string* wjManagerParams::release_fence_log_path() {
   // @@protoc_insertion_point(field_release:wj.wjManagerParams.fence_log_path)
-  if (!has_fence_log_path()) {
-    return NULL;
-  }
   clear_has_fence_log_path();
-  return fence_log_path_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return fence_log_path_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void wjManagerParams::set_allocated_fence_log_path(::std::string* fence_log_path) {
   if (fence_log_path != NULL) {
@@ -1287,7 +1254,7 @@ inline void wjManagerParams::clear_has_plc_ip_address() {
   _has_bits_[0] &= ~0x00000004u;
 }
 inline void wjManagerParams::clear_plc_ip_address() {
-  plc_ip_address_.ClearToDefaultNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get());
+  plc_ip_address_.ClearToDefaultNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get());
   clear_has_plc_ip_address();
 }
 inline const ::std::string& wjManagerParams::plc_ip_address() const {
@@ -1296,41 +1263,38 @@ inline const ::std::string& wjManagerParams::plc_ip_address() const {
 }
 inline void wjManagerParams::set_plc_ip_address(const ::std::string& value) {
   set_has_plc_ip_address();
-  plc_ip_address_.SetNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(), value);
+  plc_ip_address_.SetNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get(), value);
   // @@protoc_insertion_point(field_set:wj.wjManagerParams.plc_ip_address)
 }
 #if LANG_CXX11
 inline void wjManagerParams::set_plc_ip_address(::std::string&& value) {
   set_has_plc_ip_address();
   plc_ip_address_.SetNoArena(
-    &::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(), ::std::move(value));
+    &::wj::wjManagerParams::_default_plc_ip_address_.get(), ::std::move(value));
   // @@protoc_insertion_point(field_set_rvalue:wj.wjManagerParams.plc_ip_address)
 }
 #endif
 inline void wjManagerParams::set_plc_ip_address(const char* value) {
   GOOGLE_DCHECK(value != NULL);
   set_has_plc_ip_address();
-  plc_ip_address_.SetNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(), ::std::string(value));
+  plc_ip_address_.SetNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get(), ::std::string(value));
   // @@protoc_insertion_point(field_set_char:wj.wjManagerParams.plc_ip_address)
 }
 inline void wjManagerParams::set_plc_ip_address(const char* value, size_t size) {
   set_has_plc_ip_address();
-  plc_ip_address_.SetNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(),
+  plc_ip_address_.SetNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get(),
       ::std::string(reinterpret_cast<const char*>(value), size));
   // @@protoc_insertion_point(field_set_pointer:wj.wjManagerParams.plc_ip_address)
 }
 inline ::std::string* wjManagerParams::mutable_plc_ip_address() {
   set_has_plc_ip_address();
   // @@protoc_insertion_point(field_mutable:wj.wjManagerParams.plc_ip_address)
-  return plc_ip_address_.MutableNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get());
+  return plc_ip_address_.MutableNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get());
 }
 inline ::std::string* wjManagerParams::release_plc_ip_address() {
   // @@protoc_insertion_point(field_release:wj.wjManagerParams.plc_ip_address)
-  if (!has_plc_ip_address()) {
-    return NULL;
-  }
   clear_has_plc_ip_address();
-  return plc_ip_address_.ReleaseNonDefaultNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get());
+  return plc_ip_address_.ReleaseNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get());
 }
 inline void wjManagerParams::set_allocated_plc_ip_address(::std::string* plc_ip_address) {
   if (plc_ip_address != NULL) {
@@ -1338,7 +1302,7 @@ inline void wjManagerParams::set_allocated_plc_ip_address(::std::string* plc_ip_
   } else {
     clear_has_plc_ip_address();
   }
-  plc_ip_address_.SetAllocatedNoArena(&::wj::wjManagerParams::_i_give_permission_to_break_this_code_default_plc_ip_address_.get(), plc_ip_address);
+  plc_ip_address_.SetAllocatedNoArena(&::wj::wjManagerParams::_default_plc_ip_address_.get(), plc_ip_address);
   // @@protoc_insertion_point(field_set_allocated:wj.wjManagerParams.plc_ip_address)
 }
 
@@ -1604,9 +1568,6 @@ inline void wjLidarParams::clear_net_config() {
   if (net_config_ != NULL) net_config_->Clear();
   clear_has_net_config();
 }
-inline const ::wj::netConfig& wjLidarParams::_internal_net_config() const {
-  return *net_config_;
-}
 inline const ::wj::netConfig& wjLidarParams::net_config() const {
   const ::wj::netConfig* p = net_config_;
   // @@protoc_insertion_point(field_get:wj.wjLidarParams.net_config)
@@ -1623,8 +1584,7 @@ inline ::wj::netConfig* wjLidarParams::release_net_config() {
 inline ::wj::netConfig* wjLidarParams::mutable_net_config() {
   set_has_net_config();
   if (net_config_ == NULL) {
-    auto* p = CreateMaybeMessage<::wj::netConfig>(GetArenaNoVirtual());
-    net_config_ = p;
+    net_config_ = new ::wj::netConfig;
   }
   // @@protoc_insertion_point(field_mutable:wj.wjLidarParams.net_config)
   return net_config_;
@@ -1662,9 +1622,6 @@ inline void wjLidarParams::clear_transform() {
   if (transform_ != NULL) transform_->Clear();
   clear_has_transform();
 }
-inline const ::wj::Transform2d& wjLidarParams::_internal_transform() const {
-  return *transform_;
-}
 inline const ::wj::Transform2d& wjLidarParams::transform() const {
   const ::wj::Transform2d* p = transform_;
   // @@protoc_insertion_point(field_get:wj.wjLidarParams.transform)
@@ -1681,8 +1638,7 @@ inline ::wj::Transform2d* wjLidarParams::release_transform() {
 inline ::wj::Transform2d* wjLidarParams::mutable_transform() {
   set_has_transform();
   if (transform_ == NULL) {
-    auto* p = CreateMaybeMessage<::wj::Transform2d>(GetArenaNoVirtual());
-    transform_ = p;
+    transform_ = new ::wj::Transform2d;
   }
   // @@protoc_insertion_point(field_mutable:wj.wjLidarParams.transform)
   return transform_;
@@ -1720,9 +1676,6 @@ inline void wjLidarParams::clear_scan_limit() {
   if (scan_limit_ != NULL) scan_limit_->Clear();
   clear_has_scan_limit();
 }
-inline const ::wj::scanLimit& wjLidarParams::_internal_scan_limit() const {
-  return *scan_limit_;
-}
 inline const ::wj::scanLimit& wjLidarParams::scan_limit() const {
   const ::wj::scanLimit* p = scan_limit_;
   // @@protoc_insertion_point(field_get:wj.wjLidarParams.scan_limit)
@@ -1739,8 +1692,7 @@ inline ::wj::scanLimit* wjLidarParams::release_scan_limit() {
 inline ::wj::scanLimit* wjLidarParams::mutable_scan_limit() {
   set_has_scan_limit();
   if (scan_limit_ == NULL) {
-    auto* p = CreateMaybeMessage<::wj::scanLimit>(GetArenaNoVirtual());
-    scan_limit_ = p;
+    scan_limit_ = new ::wj::scanLimit;
   }
   // @@protoc_insertion_point(field_mutable:wj.wjLidarParams.scan_limit)
   return scan_limit_;
@@ -1818,11 +1770,8 @@ inline ::std::string* netConfig::mutable_ip_address() {
 }
 inline ::std::string* netConfig::release_ip_address() {
   // @@protoc_insertion_point(field_release:wj.netConfig.ip_address)
-  if (!has_ip_address()) {
-    return NULL;
-  }
   clear_has_ip_address();
-  return ip_address_.ReleaseNonDefaultNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return ip_address_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void netConfig::set_allocated_ip_address(::std::string* ip_address) {
   if (ip_address != NULL) {
@@ -2150,4 +2099,4 @@ inline void scanLimit::set_maxy(float value) {
 
 // @@protoc_insertion_point(global_scope)
 
-#endif  // PROTOBUF_INCLUDED_wj_5flidar_5fconf_2eproto
+#endif  // PROTOBUF_wj_5flidar_5fconf_2eproto__INCLUDED