Parcourir la source

20210408, 调度测试

huli il y a 4 ans
Parent
commit
fc6a760961

+ 45 - 2
dispatch/carrier.cpp

@@ -48,6 +48,9 @@ Carrier::Carrier()
 
 	memset(m_actual_error_code, 0, 50);	//搬运器设备的报警信息位
 	memset(m_actual_warning_code, 0, 50);	//升降机设备的报警信息位
+
+	m_actual_coordinates_id = 0;
+
 }
 
 Carrier::~Carrier()
@@ -69,7 +72,7 @@ Error_manager Carrier::check_task_type(std::shared_ptr<Task_Base> p_task)
 }
 
 //获取硬件设备的状态, 必须子类继承
-Carrier::Device_status Carrier::get_actual_device_status()
+Carrier::Hardware_device_status Carrier::get_actual_device_status()
 {
 	return m_actual_device_status;
 }
@@ -214,7 +217,14 @@ Error_manager Carrier::update_device_communication()
 		m_actual_load_status = (Dispatch_device_base::Load_status)tp_carrier_status_from_plc_to_dispatch->m_actual_load_status;
 		m_actual_x = tp_carrier_status_from_plc_to_dispatch->m_actual_x;
 		m_actual_y = tp_carrier_status_from_plc_to_dispatch->m_actual_y;
-		m_actual_z = tp_carrier_status_from_plc_to_dispatch->m_actual_z;
+		if ( m_device_id == 2 )
+		{
+			m_actual_z = Dispatch_coordinates::get_instance_references().m_carrier_3th_floor_z;
+		}
+		else
+		{
+			m_actual_z = tp_carrier_status_from_plc_to_dispatch->m_actual_z;
+		}
 		m_actual_y1 = tp_carrier_status_from_plc_to_dispatch->m_actual_y1;
 		m_actual_y2 = tp_carrier_status_from_plc_to_dispatch->m_actual_y2;
 		m_actual_clamp_motion1 = (Dispatch_device_base::Clamp_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_clamp_motion1;
@@ -225,6 +235,7 @@ Error_manager Carrier::update_device_communication()
 		memcpy(m_actual_error_code, tp_carrier_status_from_plc_to_dispatch->m_actual_error_code, 50);
 		memcpy(m_actual_warning_code, tp_carrier_status_from_plc_to_dispatch->m_actual_warning_code, 50);
 		m_actual_error_description = (char*)(tp_carrier_status_from_plc_to_dispatch->m_actual_error_description-2);
+		update_actual_coordinates_id();
 
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
 		if ( m_dispatch_device_status == Dispatch_device_base::E_DISCONNECT )
@@ -344,6 +355,38 @@ Error_manager Carrier::cancel_command()
 	return Error_code::SUCCESS;
 }
 
+//更新真实 空间位置的id.
+Error_manager Carrier::update_actual_coordinates_id()
+{
+	Dispatch_coordinates * tp_dispatch_coordinates = Dispatch_coordinates::get_instance_pointer();
+
+	if ( get_device_id() == 2 )
+	{
+		for (auto iter = tp_dispatch_coordinates->m_carrier_coordinates.begin(); iter != tp_dispatch_coordinates->m_carrier_coordinates.end(); ++iter)
+		{
+			if ( Common_data::approximate_difference(m_actual_x, iter->second.x, 100) &&
+				 Common_data::approximate_difference(m_actual_y, iter->second.y, 500)  &&
+				 Common_data::approximate_difference(tp_dispatch_coordinates->m_carrier_3th_floor_z, iter->second.z, 200) )
+			{
+				m_actual_coordinates_id = iter->first;
+			}
+		}
+	}
+	else
+	{
+		for (auto iter = tp_dispatch_coordinates->m_carrier_coordinates.begin(); iter != tp_dispatch_coordinates->m_carrier_coordinates.end(); ++iter)
+		{
+			if ( Common_data::approximate_difference(m_actual_x, iter->second.x, 100) &&
+				 Common_data::approximate_difference(m_actual_y, iter->second.y, 500) &&
+				 Common_data::approximate_difference(m_actual_z, iter->second.z, 200) )
+			{
+				m_actual_coordinates_id = iter->first;
+			}
+		}
+	}
+
+	return Error_code::SUCCESS;
+}
 
 
 

+ 7 - 3
dispatch/carrier.h

@@ -24,7 +24,7 @@ public://API functions
 	Error_manager check_task_type(std::shared_ptr<Task_Base> p_task);
 public://get or set member variable
 	//获取硬件设备的状态, 必须子类继承
-	Device_status get_actual_device_status();
+	Hardware_device_status get_actual_device_status();
 protected://member functions
 	//把任务单写入到内存中, 子类必须重载
 	Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);
@@ -34,6 +34,10 @@ protected://member functions
 	Error_manager check_and_read_memory_to_task(std::shared_ptr<Task_Base> p_task);
 	//取消下发的指令, 子类必须重载, 用来向下发送命令取消任务.
 	Error_manager cancel_command();
+
+	//更新真实 空间位置的id.
+	Error_manager update_actual_coordinates_id();
+
 protected://member variable
 public:
 	//调度下发到plc
@@ -74,7 +78,7 @@ public:
 	std::chrono::system_clock::time_point	m_status_updata_time;	//状态更新时间点
 	unsigned char						m_last_heartbeat;			//上一次的心跳
 	//搬运器的设备状态数据,
-	Device_status						m_actual_device_status;			//搬运器的硬件设备状态
+	Hardware_device_status				m_actual_device_status;			//搬运器的硬件设备状态(短流程)
 	Load_status							m_actual_load_status;				//搬运器的负载状态, 小跑车上面是否有车.
 	//搬运器的真实状态, 可能是路径中间的坐标
 	float 								m_actual_x;					//搬运器坐标x轴, 中跑车控制横向移动
@@ -93,7 +97,7 @@ public:
 	std::string							m_actual_error_description;//搬运器设备的错误描述
 
 
-	int 								m_actual_coordinates_id;			//机器人真实 空间位置的id.
+	int 								m_actual_coordinates_id;			//搬运器真实 空间位置的id.
 
 
 private:

+ 19 - 1
dispatch/catcher.cpp

@@ -46,6 +46,7 @@ Catcher::Catcher()
 	memset(m_actual_warning_code, 0, 50);	//升降机设备的报警信息位
 
 	m_catcher_direction = CATCHER_DIRECTION_UNKNOW;
+	m_actual_coordinates_id = 0;
 }
 
 Catcher::~Catcher()
@@ -67,7 +68,7 @@ Error_manager Catcher::check_task_type(std::shared_ptr<Task_Base> p_task)
 }
 
 //获取硬件设备的状态, 必须子类继承
-Catcher::Device_status Catcher::get_actual_device_status()
+Catcher::Hardware_device_status Catcher::get_actual_device_status()
 {
 	return m_actual_device_status;
 }
@@ -215,6 +216,7 @@ Error_manager Catcher::update_device_communication()
 		memcpy(m_actual_error_code, tp_catcher_status_from_plc_to_dispatch->m_actual_error_code, 50);
 		memcpy(m_actual_warning_code, tp_catcher_status_from_plc_to_dispatch->m_actual_warning_code, 50);
 		m_actual_error_description = (char*)(tp_catcher_status_from_plc_to_dispatch->m_actual_error_description-2);
+		update_actual_coordinates_id();
 
 		//机器手朝向
 		if ( m_actual_b >= CATCHER_DIRECTION_POSITIVE_MIN && m_actual_b <= CATCHER_DIRECTION_POSITIVE_MAX )
@@ -353,7 +355,23 @@ Error_manager Catcher::cancel_command()
 	return Error_code::SUCCESS;
 }
 
+//更新真实 空间位置的id.
+Error_manager Catcher::update_actual_coordinates_id()
+{
+	Dispatch_coordinates * tp_dispatch_coordinates = Dispatch_coordinates::get_instance_pointer();
+
+	for (auto iter = tp_dispatch_coordinates->m_catcher_coordinates.begin(); iter != tp_dispatch_coordinates->m_catcher_coordinates.end(); ++iter)
+	{
+		if ( Common_data::approximate_difference(m_actual_x, iter->second.x, 100) &&
+			 Common_data::approximate_difference(m_actual_y, iter->second.y, 500) &&
+			 Common_data::approximate_difference(m_actual_z, iter->second.z, 200) )
+		{
+			m_actual_coordinates_id = iter->first;
+		}
+	}
 
+	return Error_code::SUCCESS;
+}
 
 
 

+ 6 - 2
dispatch/catcher.h

@@ -22,7 +22,7 @@ public://API functions
 	Error_manager check_task_type(std::shared_ptr<Task_Base> p_task);
 public://get or set member variable
 	//获取硬件设备的状态, 必须子类继承
-	Device_status get_actual_device_status();
+	Hardware_device_status get_actual_device_status();
 protected://member functions
 	//把任务单写入到内存中, 子类必须重载
 	Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);
@@ -32,6 +32,10 @@ protected://member functions
 	Error_manager check_and_read_memory_to_task(std::shared_ptr<Task_Base> p_task);
 	//取消下发的指令, 子类必须重载, 用来向下发送命令取消任务.
 	Error_manager cancel_command();
+
+	//更新真实 空间位置的id.
+	Error_manager update_actual_coordinates_id();
+
 protected://member variable
 
 public:
@@ -69,7 +73,7 @@ public:
 	std::chrono::system_clock::time_point	m_status_updata_time;	//状态更新时间点
 	unsigned char						m_last_heartbeat;			//上一次的心跳
 	//机器人的设备状态数据,
-	Device_status						m_actual_device_status;			//机器人的硬件设备状态
+	Hardware_device_status				m_actual_device_status;			//机器人的硬件设备状态
 	Load_status							m_actual_load_status;				//机器人的负载状态, 机器人上面是否有车.
 	//机器人的真实状态, 可能是路径中间的坐标
 	float 								m_actual_x;					//机器人坐标x轴,

+ 1 - 0
dispatch/dispatch_communication.cpp

@@ -527,6 +527,7 @@ Error_manager Dispatch_communication::updata_send_buf()
 	memcpy(m_send_buf_map[9].mp_buf_obverse, &m_carrier_request_from_dispatch_to_plc_for_key[2], m_send_buf_map[9].m_size);
 
 
+
 	m_passageway_request_from_dispatch_to_plc_for_data[0].m_reserved50 = 1;
 	m_passageway_request_from_dispatch_to_plc_for_data[1].m_reserved50 = 1;
 	m_passageway_request_from_dispatch_to_plc_for_data[2].m_reserved50 = 1;

+ 5 - 0
dispatch/dispatch_coordinates.cpp

@@ -120,6 +120,11 @@ Error_manager Dispatch_coordinates::dispatch_coordinates_init_from_protobuf(Disp
 	m_catcher_3th_floor_z = dispatch_coordinates_parameter_all.catcher_3th_floor_z();
 	m_catcher_4th_floor_z = dispatch_coordinates_parameter_all.catcher_4th_floor_z();
 
+	m_carrier_1th_floor_z = dispatch_coordinates_parameter_all.carrier_1th_floor_z();
+	m_carrier_2th_floor_z = dispatch_coordinates_parameter_all.carrier_2th_floor_z();
+	m_carrier_3th_floor_z = dispatch_coordinates_parameter_all.carrier_3th_floor_z();
+	m_carrier_4th_floor_z = dispatch_coordinates_parameter_all.carrier_4th_floor_z();
+
 	m_catcher_d1_d2_distance = dispatch_coordinates_parameter_all.catcher_d1_d2_distance();
 	m_catcher_wheel_base_limit = dispatch_coordinates_parameter_all.catcher_wheel_base_limit();
 

+ 8 - 3
dispatch/dispatch_coordinates.h

@@ -73,11 +73,16 @@ public://member variable
 
 	float 									m_default_wheelbase;		//默认轴距 2700mm
 
-	float 									m_catcher_1th_floor_z;			//机器手在1楼的z周高度, 0
-	float 									m_catcher_2th_floor_z;			//机器手在2楼的z周高度, 2760
-	float 									m_catcher_3th_floor_z;			//机器手在3楼的z周高度, 5360
+	float 									m_catcher_1th_floor_z;			//机器手在1楼的z周高度, 1
+	float 									m_catcher_2th_floor_z;			//机器手在2楼的z周高度, 2620
+	float 									m_catcher_3th_floor_z;			//机器手在3楼的z周高度, 5220
 	float 									m_catcher_4th_floor_z;			//机器手在4楼的z周高度, 5410
 
+	float 									m_carrier_1th_floor_z;			//搬运器在1楼的z周高度, 1
+	float 									m_carrier_2th_floor_z;			//搬运器在2楼的z周高度, 2525
+	float 									m_carrier_3th_floor_z;			//搬运器在3楼的z周高度, 5125
+	float 									m_carrier_4th_floor_z;			//搬运器在4楼的z周高度, 7725
+
 	float									m_catcher_d1_d2_distance;		//机器手2D1-2D2零位间距1903mm
 	float									m_catcher_wheel_base_limit;		//机器手下降过程中的轮距限制 3000mm
 

+ 4 - 1
dispatch/dispatch_device_base.cpp

@@ -164,6 +164,9 @@ Error_manager Dispatch_device_base::check_task_level(Dispatch_task_level dispatc
 	}
 	else
 	{
+//		std::cout << " huli test :::: " << " 777777777777777777777777777777777777 = " << 777 << std::endl;
+//		std::cout << " huli test :::: " << " m_dispatch_device_status = " << m_dispatch_device_status << std::endl;
+//		std::cout << " huli test :::: " << " id = " << m_device_id << std::endl;
 	    return Error_manager(Error_code::DISPATCH_DEVICE_STATUS_ERROR, Error_level::MINOR_ERROR,
 	    					" Dispatch_device_base::check_task error ");
 	}
@@ -359,7 +362,7 @@ Dispatch_device_base::Dispatch_device_status Dispatch_device_base::get_dispatch_
 }
 
 //获取硬件设备的状态, 必须子类继承
-Dispatch_device_base::Device_status Dispatch_device_base::get_actual_device_status()
+Dispatch_device_base::Hardware_device_status Dispatch_device_base::get_actual_device_status()
 {
 	return DEVICE_UNKNOWN;
 }

+ 5 - 3
dispatch/dispatch_device_base.h

@@ -10,8 +10,10 @@
 #include <thread>
 #include <mutex>
 #include "../tool/thread_condition.h"
+#include "../tool/common_data.h"
 #include "../task/task_base.h"
 #include "../dispatch/dispatch_communication.h"
+#include "../dispatch/dispatch_coordinates.h"
 
 //调度设备的基类.
 class Dispatch_device_base
@@ -82,7 +84,7 @@ public:
 	};
 
 	//设备的硬件设备状态
-	enum Device_status
+	enum Hardware_device_status
 	{
 		DEVICE_UNKNOWN              = 0,    //设备未知
 		DEVICE_READY                = 1,    //设备空闲(可以接受新的指令任务)
@@ -175,7 +177,7 @@ public://API functions
 public://get or set member variable
 	Dispatch_device_status get_dispatch_device_status();
 	//获取硬件设备的状态, 必须子类继承
-	virtual Device_status get_actual_device_status();
+	virtual Hardware_device_status get_actual_device_status();
 	int get_device_id();
 
 protected://member functions
@@ -204,7 +206,7 @@ protected://member functions
 
 
 protected://member variable
-	std::atomic<Dispatch_device_status>			m_dispatch_device_status;			//设备总状态, 控制任务流程
+	std::atomic<Dispatch_device_status>			m_dispatch_device_status;			//设备总状态, 控制任务流程(长流程)
 	int 								m_device_id;				//设备id,
 	std::mutex							m_lock;	//锁
 

+ 1 - 0
dispatch/dispatch_manager.cpp

@@ -249,6 +249,7 @@ Error_manager Dispatch_manager::execute_for_dispatch_request_msg(message::Dispat
 	LOG(INFO) << " ---Dispatch_manager::execute_for_dispatch_request_msg--- "<< this;
 	LOG(INFO) << " tp_dispatch_process->m_command_key =  "<<tp_dispatch_process->m_command_key<< "   "<< this;
 
+	std::unique_lock<std::mutex> t_lock(m_lock);
 	//流程缓存到map
 	if ( tp_dispatch_process->m_dispatch_process_type == Dispatch_process::Dispatch_process_type::DISPATCH_PROCESS_STORE )
 	{

+ 1 - 1
dispatch/dispatch_manager.h

@@ -56,7 +56,7 @@ public:
 		E_DISPATCH_MANAGER_STORE                = 2,    //正在存车
 		E_DISPATCH_MANAGER_PICKUP               = 3,    //正在取车
 
-		E_DISPATCH_MANAGER_FAULT               = 10,    //故障
+		E_DISPATCH_MANAGER_FAULT               = 100,    //故障
 	};
 
 	//调度方向, 停车取车

+ 263 - 98
dispatch/dispatch_parameter.pb.cc

@@ -501,6 +501,10 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, catcher_2th_floor_z_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, catcher_3th_floor_z_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, catcher_4th_floor_z_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, carrier_1th_floor_z_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, carrier_2th_floor_z_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, carrier_3th_floor_z_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, carrier_4th_floor_z_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, catcher_d1_d2_distance_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, catcher_wheel_base_limit_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Dispatch_proto::Dispatch_coordinates_parameter_all, carrier_y_y1_distance_),
@@ -536,6 +540,10 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   19,
   20,
   21,
+  22,
+  23,
+  24,
+  25,
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   { 0, 6, sizeof(::Dispatch_proto::Catcher_parameter)},
@@ -549,7 +557,7 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROT
   { 90, 101, sizeof(::Dispatch_proto::Carrier_box_parameter)},
   { 107, 118, sizeof(::Dispatch_proto::Catcher_box_parameter)},
   { 124, 131, sizeof(::Dispatch_proto::Axis_range_parameter)},
-  { 133, 164, sizeof(::Dispatch_proto::Dispatch_coordinates_parameter_all)},
+  { 133, 168, sizeof(::Dispatch_proto::Dispatch_coordinates_parameter_all)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -619,7 +627,7 @@ void AddDescriptorsImpl() {
       "\004 \001(\005:\0071000000\022\027\n\005z_min\030\005 \001(\005:\010-1000000\022"
       "\026\n\005z_max\030\006 \001(\005:\0071000000\"C\n\024Axis_range_pa"
       "rameter\022\025\n\003min\030\001 \001(\005:\010-1000000\022\024\n\003max\030\002 "
-      "\001(\005:\0071000000\"\333\010\n\"Dispatch_coordinates_pa"
+      "\001(\005:\0071000000\"\317\t\n\"Dispatch_coordinates_pa"
       "rameter_all\022Y\n packspace_coordinates_par"
       "ameters\030\001 \003(\0132/.Dispatch_proto.Packspace"
       "_coordinates_parameter\022[\n!passageway_coo"
@@ -639,18 +647,21 @@ void AddDescriptorsImpl() {
       "_d2_max\030\014 \001(\005\022\031\n\021default_wheelbase\030\r \001(\005"
       "\022\033\n\023catcher_1th_floor_z\030\016 \001(\005\022\033\n\023catcher"
       "_2th_floor_z\030\017 \001(\005\022\033\n\023catcher_3th_floor_"
-      "z\030\020 \001(\005\022\033\n\023catcher_4th_floor_z\030\021 \001(\005\022\036\n\026"
-      "catcher_d1_d2_distance\030\022 \001(\005\022 \n\030catcher_"
-      "wheel_base_limit\030\023 \001(\005\022\035\n\025carrier_y_y1_d"
-      "istance\030\024 \001(\005\022\037\n\027carrier_default_y1_back"
-      "\030\025 \001(\005\022 \n\030carrier_default_y1_leave\030\026 \001(\005"
-      "\022\036\n\026carrier_default_y_back\030\027 \001(\005\022\037\n\027carr"
-      "ier_default_y_leave\030\030 \001(\005\022\036\n\026carrier_def"
-      "ault_x_left\030\031 \001(\005\022\037\n\027carrier_default_x_r"
-      "ight\030\032 \001(\005"
+      "z\030\020 \001(\005\022\033\n\023catcher_4th_floor_z\030\021 \001(\005\022\033\n\023"
+      "carrier_1th_floor_z\030\022 \001(\005\022\033\n\023carrier_2th"
+      "_floor_z\030\023 \001(\005\022\033\n\023carrier_3th_floor_z\030\024 "
+      "\001(\005\022\033\n\023carrier_4th_floor_z\030\025 \001(\005\022\036\n\026catc"
+      "her_d1_d2_distance\030\026 \001(\005\022 \n\030catcher_whee"
+      "l_base_limit\030\027 \001(\005\022\035\n\025carrier_y_y1_dista"
+      "nce\030\030 \001(\005\022\037\n\027carrier_default_y1_back\030\031 \001"
+      "(\005\022 \n\030carrier_default_y1_leave\030\032 \001(\005\022\036\n\026"
+      "carrier_default_y_back\030\033 \001(\005\022\037\n\027carrier_"
+      "default_y_leave\030\034 \001(\005\022\036\n\026carrier_default"
+      "_x_left\030\035 \001(\005\022\037\n\027carrier_default_x_right"
+      "\030\036 \001(\005"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 2330);
+      descriptor, 2446);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "dispatch_parameter.proto", &protobuf_RegisterTypes);
 }
@@ -4550,6 +4561,10 @@ const int Dispatch_coordinates_parameter_all::kCatcher1ThFloorZFieldNumber;
 const int Dispatch_coordinates_parameter_all::kCatcher2ThFloorZFieldNumber;
 const int Dispatch_coordinates_parameter_all::kCatcher3ThFloorZFieldNumber;
 const int Dispatch_coordinates_parameter_all::kCatcher4ThFloorZFieldNumber;
+const int Dispatch_coordinates_parameter_all::kCarrier1ThFloorZFieldNumber;
+const int Dispatch_coordinates_parameter_all::kCarrier2ThFloorZFieldNumber;
+const int Dispatch_coordinates_parameter_all::kCarrier3ThFloorZFieldNumber;
+const int Dispatch_coordinates_parameter_all::kCarrier4ThFloorZFieldNumber;
 const int Dispatch_coordinates_parameter_all::kCatcherD1D2DistanceFieldNumber;
 const int Dispatch_coordinates_parameter_all::kCatcherWheelBaseLimitFieldNumber;
 const int Dispatch_coordinates_parameter_all::kCarrierYY1DistanceFieldNumber;
@@ -4663,13 +4678,18 @@ void Dispatch_coordinates_parameter_all::Clear() {
   }
   if (cached_has_bits & 65280u) {
     ::memset(&default_wheelbase_, 0, static_cast<size_t>(
-        reinterpret_cast<char*>(&carrier_y_y1_distance_) -
-        reinterpret_cast<char*>(&default_wheelbase_)) + sizeof(carrier_y_y1_distance_));
+        reinterpret_cast<char*>(&carrier_3th_floor_z_) -
+        reinterpret_cast<char*>(&default_wheelbase_)) + sizeof(carrier_3th_floor_z_));
   }
-  if (cached_has_bits & 4128768u) {
-    ::memset(&carrier_default_y1_back_, 0, static_cast<size_t>(
+  if (cached_has_bits & 16711680u) {
+    ::memset(&carrier_4th_floor_z_, 0, static_cast<size_t>(
+        reinterpret_cast<char*>(&carrier_default_y_leave_) -
+        reinterpret_cast<char*>(&carrier_4th_floor_z_)) + sizeof(carrier_default_y_leave_));
+  }
+  if (cached_has_bits & 50331648u) {
+    ::memset(&carrier_default_x_left_, 0, static_cast<size_t>(
         reinterpret_cast<char*>(&carrier_default_x_right_) -
-        reinterpret_cast<char*>(&carrier_default_y1_back_)) + sizeof(carrier_default_x_right_));
+        reinterpret_cast<char*>(&carrier_default_x_left_)) + sizeof(carrier_default_x_right_));
   }
   _has_bits_.Clear();
   _internal_metadata_.Clear();
@@ -4907,122 +4927,178 @@ bool Dispatch_coordinates_parameter_all::MergePartialFromCodedStream(
         break;
       }
 
-      // optional int32 catcher_d1_d2_distance = 18;
+      // optional int32 carrier_1th_floor_z = 18;
       case 18: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(144u /* 144 & 0xFF */)) {
-          set_has_catcher_d1_d2_distance();
+          set_has_carrier_1th_floor_z();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &catcher_d1_d2_distance_)));
+                 input, &carrier_1th_floor_z_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 catcher_wheel_base_limit = 19;
+      // optional int32 carrier_2th_floor_z = 19;
       case 19: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(152u /* 152 & 0xFF */)) {
-          set_has_catcher_wheel_base_limit();
+          set_has_carrier_2th_floor_z();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &catcher_wheel_base_limit_)));
+                 input, &carrier_2th_floor_z_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 carrier_y_y1_distance = 20;
+      // optional int32 carrier_3th_floor_z = 20;
       case 20: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(160u /* 160 & 0xFF */)) {
-          set_has_carrier_y_y1_distance();
+          set_has_carrier_3th_floor_z();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &carrier_y_y1_distance_)));
+                 input, &carrier_3th_floor_z_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 carrier_default_y1_back = 21;
+      // optional int32 carrier_4th_floor_z = 21;
       case 21: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(168u /* 168 & 0xFF */)) {
-          set_has_carrier_default_y1_back();
+          set_has_carrier_4th_floor_z();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &carrier_default_y1_back_)));
+                 input, &carrier_4th_floor_z_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 carrier_default_y1_leave = 22;
+      // optional int32 catcher_d1_d2_distance = 22;
       case 22: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(176u /* 176 & 0xFF */)) {
-          set_has_carrier_default_y1_leave();
+          set_has_catcher_d1_d2_distance();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &carrier_default_y1_leave_)));
+                 input, &catcher_d1_d2_distance_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 carrier_default_y_back = 23;
+      // optional int32 catcher_wheel_base_limit = 23;
       case 23: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(184u /* 184 & 0xFF */)) {
-          set_has_carrier_default_y_back();
+          set_has_catcher_wheel_base_limit();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &carrier_default_y_back_)));
+                 input, &catcher_wheel_base_limit_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 carrier_default_y_leave = 24;
+      // optional int32 carrier_y_y1_distance = 24;
       case 24: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(192u /* 192 & 0xFF */)) {
-          set_has_carrier_default_y_leave();
+          set_has_carrier_y_y1_distance();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &carrier_default_y_leave_)));
+                 input, &carrier_y_y1_distance_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 carrier_default_x_left = 25;
+      // optional int32 carrier_default_y1_back = 25;
       case 25: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(200u /* 200 & 0xFF */)) {
-          set_has_carrier_default_x_left();
+          set_has_carrier_default_y1_back();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &carrier_default_x_left_)));
+                 input, &carrier_default_y1_back_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // optional int32 carrier_default_x_right = 26;
+      // optional int32 carrier_default_y1_leave = 26;
       case 26: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(208u /* 208 & 0xFF */)) {
+          set_has_carrier_default_y1_leave();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &carrier_default_y1_leave_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional int32 carrier_default_y_back = 27;
+      case 27: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(216u /* 216 & 0xFF */)) {
+          set_has_carrier_default_y_back();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &carrier_default_y_back_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional int32 carrier_default_y_leave = 28;
+      case 28: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(224u /* 224 & 0xFF */)) {
+          set_has_carrier_default_y_leave();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &carrier_default_y_leave_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional int32 carrier_default_x_left = 29;
+      case 29: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(232u /* 232 & 0xFF */)) {
+          set_has_carrier_default_x_left();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &carrier_default_x_left_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional int32 carrier_default_x_right = 30;
+      case 30: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(240u /* 240 & 0xFF */)) {
           set_has_carrier_default_x_right();
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
@@ -5155,49 +5231,69 @@ void Dispatch_coordinates_parameter_all::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteInt32(17, this->catcher_4th_floor_z(), output);
   }
 
-  // optional int32 catcher_d1_d2_distance = 18;
+  // optional int32 carrier_1th_floor_z = 18;
   if (cached_has_bits & 0x00002000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(18, this->catcher_d1_d2_distance(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(18, this->carrier_1th_floor_z(), output);
   }
 
-  // optional int32 catcher_wheel_base_limit = 19;
+  // optional int32 carrier_2th_floor_z = 19;
   if (cached_has_bits & 0x00004000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(19, this->catcher_wheel_base_limit(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(19, this->carrier_2th_floor_z(), output);
   }
 
-  // optional int32 carrier_y_y1_distance = 20;
+  // optional int32 carrier_3th_floor_z = 20;
   if (cached_has_bits & 0x00008000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(20, this->carrier_y_y1_distance(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(20, this->carrier_3th_floor_z(), output);
   }
 
-  // optional int32 carrier_default_y1_back = 21;
+  // optional int32 carrier_4th_floor_z = 21;
   if (cached_has_bits & 0x00010000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(21, this->carrier_default_y1_back(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(21, this->carrier_4th_floor_z(), output);
   }
 
-  // optional int32 carrier_default_y1_leave = 22;
+  // optional int32 catcher_d1_d2_distance = 22;
   if (cached_has_bits & 0x00020000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(22, this->carrier_default_y1_leave(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(22, this->catcher_d1_d2_distance(), output);
   }
 
-  // optional int32 carrier_default_y_back = 23;
+  // optional int32 catcher_wheel_base_limit = 23;
   if (cached_has_bits & 0x00040000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(23, this->carrier_default_y_back(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(23, this->catcher_wheel_base_limit(), output);
   }
 
-  // optional int32 carrier_default_y_leave = 24;
+  // optional int32 carrier_y_y1_distance = 24;
   if (cached_has_bits & 0x00080000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(24, this->carrier_default_y_leave(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(24, this->carrier_y_y1_distance(), output);
   }
 
-  // optional int32 carrier_default_x_left = 25;
+  // optional int32 carrier_default_y1_back = 25;
   if (cached_has_bits & 0x00100000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(25, this->carrier_default_x_left(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(25, this->carrier_default_y1_back(), output);
   }
 
-  // optional int32 carrier_default_x_right = 26;
+  // optional int32 carrier_default_y1_leave = 26;
   if (cached_has_bits & 0x00200000u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(26, this->carrier_default_x_right(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(26, this->carrier_default_y1_leave(), output);
+  }
+
+  // optional int32 carrier_default_y_back = 27;
+  if (cached_has_bits & 0x00400000u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(27, this->carrier_default_y_back(), output);
+  }
+
+  // optional int32 carrier_default_y_leave = 28;
+  if (cached_has_bits & 0x00800000u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(28, this->carrier_default_y_leave(), output);
+  }
+
+  // optional int32 carrier_default_x_left = 29;
+  if (cached_has_bits & 0x01000000u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(29, this->carrier_default_x_left(), output);
+  }
+
+  // optional int32 carrier_default_x_right = 30;
+  if (cached_has_bits & 0x02000000u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(30, this->carrier_default_x_right(), output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -5316,49 +5412,69 @@ void Dispatch_coordinates_parameter_all::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(17, this->catcher_4th_floor_z(), target);
   }
 
-  // optional int32 catcher_d1_d2_distance = 18;
+  // optional int32 carrier_1th_floor_z = 18;
   if (cached_has_bits & 0x00002000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(18, this->catcher_d1_d2_distance(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(18, this->carrier_1th_floor_z(), target);
   }
 
-  // optional int32 catcher_wheel_base_limit = 19;
+  // optional int32 carrier_2th_floor_z = 19;
   if (cached_has_bits & 0x00004000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(19, this->catcher_wheel_base_limit(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(19, this->carrier_2th_floor_z(), target);
   }
 
-  // optional int32 carrier_y_y1_distance = 20;
+  // optional int32 carrier_3th_floor_z = 20;
   if (cached_has_bits & 0x00008000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(20, this->carrier_y_y1_distance(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(20, this->carrier_3th_floor_z(), target);
   }
 
-  // optional int32 carrier_default_y1_back = 21;
+  // optional int32 carrier_4th_floor_z = 21;
   if (cached_has_bits & 0x00010000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(21, this->carrier_default_y1_back(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(21, this->carrier_4th_floor_z(), target);
   }
 
-  // optional int32 carrier_default_y1_leave = 22;
+  // optional int32 catcher_d1_d2_distance = 22;
   if (cached_has_bits & 0x00020000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(22, this->carrier_default_y1_leave(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(22, this->catcher_d1_d2_distance(), target);
   }
 
-  // optional int32 carrier_default_y_back = 23;
+  // optional int32 catcher_wheel_base_limit = 23;
   if (cached_has_bits & 0x00040000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(23, this->carrier_default_y_back(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(23, this->catcher_wheel_base_limit(), target);
   }
 
-  // optional int32 carrier_default_y_leave = 24;
+  // optional int32 carrier_y_y1_distance = 24;
   if (cached_has_bits & 0x00080000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(24, this->carrier_default_y_leave(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(24, this->carrier_y_y1_distance(), target);
   }
 
-  // optional int32 carrier_default_x_left = 25;
+  // optional int32 carrier_default_y1_back = 25;
   if (cached_has_bits & 0x00100000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(25, this->carrier_default_x_left(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(25, this->carrier_default_y1_back(), target);
   }
 
-  // optional int32 carrier_default_x_right = 26;
+  // optional int32 carrier_default_y1_leave = 26;
   if (cached_has_bits & 0x00200000u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(26, this->carrier_default_x_right(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(26, this->carrier_default_y1_leave(), target);
+  }
+
+  // optional int32 carrier_default_y_back = 27;
+  if (cached_has_bits & 0x00400000u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(27, this->carrier_default_y_back(), target);
+  }
+
+  // optional int32 carrier_default_y_leave = 28;
+  if (cached_has_bits & 0x00800000u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(28, this->carrier_default_y_leave(), target);
+  }
+
+  // optional int32 carrier_default_x_left = 29;
+  if (cached_has_bits & 0x01000000u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(29, this->carrier_default_x_left(), target);
+  }
+
+  // optional int32 carrier_default_x_right = 30;
+  if (cached_has_bits & 0x02000000u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(30, this->carrier_default_x_right(), target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -5516,65 +5632,95 @@ size_t Dispatch_coordinates_parameter_all::ByteSizeLong() const {
           this->catcher_4th_floor_z());
     }
 
-    // optional int32 catcher_d1_d2_distance = 18;
+    // optional int32 carrier_1th_floor_z = 18;
+    if (has_carrier_1th_floor_z()) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->carrier_1th_floor_z());
+    }
+
+    // optional int32 carrier_2th_floor_z = 19;
+    if (has_carrier_2th_floor_z()) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->carrier_2th_floor_z());
+    }
+
+    // optional int32 carrier_3th_floor_z = 20;
+    if (has_carrier_3th_floor_z()) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->carrier_3th_floor_z());
+    }
+
+  }
+  if (_has_bits_[16 / 32] & 16711680u) {
+    // optional int32 carrier_4th_floor_z = 21;
+    if (has_carrier_4th_floor_z()) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->carrier_4th_floor_z());
+    }
+
+    // optional int32 catcher_d1_d2_distance = 22;
     if (has_catcher_d1_d2_distance()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->catcher_d1_d2_distance());
     }
 
-    // optional int32 catcher_wheel_base_limit = 19;
+    // optional int32 catcher_wheel_base_limit = 23;
     if (has_catcher_wheel_base_limit()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->catcher_wheel_base_limit());
     }
 
-    // optional int32 carrier_y_y1_distance = 20;
+    // optional int32 carrier_y_y1_distance = 24;
     if (has_carrier_y_y1_distance()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->carrier_y_y1_distance());
     }
 
-  }
-  if (_has_bits_[16 / 32] & 4128768u) {
-    // optional int32 carrier_default_y1_back = 21;
+    // optional int32 carrier_default_y1_back = 25;
     if (has_carrier_default_y1_back()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->carrier_default_y1_back());
     }
 
-    // optional int32 carrier_default_y1_leave = 22;
+    // optional int32 carrier_default_y1_leave = 26;
     if (has_carrier_default_y1_leave()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->carrier_default_y1_leave());
     }
 
-    // optional int32 carrier_default_y_back = 23;
+    // optional int32 carrier_default_y_back = 27;
     if (has_carrier_default_y_back()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->carrier_default_y_back());
     }
 
-    // optional int32 carrier_default_y_leave = 24;
+    // optional int32 carrier_default_y_leave = 28;
     if (has_carrier_default_y_leave()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->carrier_default_y_leave());
     }
 
-    // optional int32 carrier_default_x_left = 25;
+  }
+  if (_has_bits_[24 / 32] & 50331648u) {
+    // optional int32 carrier_default_x_left = 29;
     if (has_carrier_default_x_left()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
           this->carrier_default_x_left());
     }
 
-    // optional int32 carrier_default_x_right = 26;
+    // optional int32 carrier_default_x_right = 30;
     if (has_carrier_default_x_right()) {
       total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
@@ -5660,33 +5806,48 @@ void Dispatch_coordinates_parameter_all::MergeFrom(const Dispatch_coordinates_pa
       catcher_4th_floor_z_ = from.catcher_4th_floor_z_;
     }
     if (cached_has_bits & 0x00002000u) {
-      catcher_d1_d2_distance_ = from.catcher_d1_d2_distance_;
+      carrier_1th_floor_z_ = from.carrier_1th_floor_z_;
     }
     if (cached_has_bits & 0x00004000u) {
-      catcher_wheel_base_limit_ = from.catcher_wheel_base_limit_;
+      carrier_2th_floor_z_ = from.carrier_2th_floor_z_;
     }
     if (cached_has_bits & 0x00008000u) {
-      carrier_y_y1_distance_ = from.carrier_y_y1_distance_;
+      carrier_3th_floor_z_ = from.carrier_3th_floor_z_;
     }
     _has_bits_[0] |= cached_has_bits;
   }
-  if (cached_has_bits & 4128768u) {
+  if (cached_has_bits & 16711680u) {
     if (cached_has_bits & 0x00010000u) {
-      carrier_default_y1_back_ = from.carrier_default_y1_back_;
+      carrier_4th_floor_z_ = from.carrier_4th_floor_z_;
     }
     if (cached_has_bits & 0x00020000u) {
-      carrier_default_y1_leave_ = from.carrier_default_y1_leave_;
+      catcher_d1_d2_distance_ = from.catcher_d1_d2_distance_;
     }
     if (cached_has_bits & 0x00040000u) {
-      carrier_default_y_back_ = from.carrier_default_y_back_;
+      catcher_wheel_base_limit_ = from.catcher_wheel_base_limit_;
     }
     if (cached_has_bits & 0x00080000u) {
-      carrier_default_y_leave_ = from.carrier_default_y_leave_;
+      carrier_y_y1_distance_ = from.carrier_y_y1_distance_;
     }
     if (cached_has_bits & 0x00100000u) {
-      carrier_default_x_left_ = from.carrier_default_x_left_;
+      carrier_default_y1_back_ = from.carrier_default_y1_back_;
     }
     if (cached_has_bits & 0x00200000u) {
+      carrier_default_y1_leave_ = from.carrier_default_y1_leave_;
+    }
+    if (cached_has_bits & 0x00400000u) {
+      carrier_default_y_back_ = from.carrier_default_y_back_;
+    }
+    if (cached_has_bits & 0x00800000u) {
+      carrier_default_y_leave_ = from.carrier_default_y_leave_;
+    }
+    _has_bits_[0] |= cached_has_bits;
+  }
+  if (cached_has_bits & 50331648u) {
+    if (cached_has_bits & 0x01000000u) {
+      carrier_default_x_left_ = from.carrier_default_x_left_;
+    }
+    if (cached_has_bits & 0x02000000u) {
       carrier_default_x_right_ = from.carrier_default_x_right_;
     }
     _has_bits_[0] |= cached_has_bits;
@@ -5734,6 +5895,10 @@ void Dispatch_coordinates_parameter_all::InternalSwap(Dispatch_coordinates_param
   swap(catcher_2th_floor_z_, other->catcher_2th_floor_z_);
   swap(catcher_3th_floor_z_, other->catcher_3th_floor_z_);
   swap(catcher_4th_floor_z_, other->catcher_4th_floor_z_);
+  swap(carrier_1th_floor_z_, other->carrier_1th_floor_z_);
+  swap(carrier_2th_floor_z_, other->carrier_2th_floor_z_);
+  swap(carrier_3th_floor_z_, other->carrier_3th_floor_z_);
+  swap(carrier_4th_floor_z_, other->carrier_4th_floor_z_);
   swap(catcher_d1_d2_distance_, other->catcher_d1_d2_distance_);
   swap(catcher_wheel_base_limit_, other->catcher_wheel_base_limit_);
   swap(carrier_y_y1_distance_, other->carrier_y_y1_distance_);

+ 190 - 54
dispatch/dispatch_parameter.pb.h

@@ -1857,66 +1857,94 @@ class Dispatch_coordinates_parameter_all : public ::google::protobuf::Message /*
   ::google::protobuf::int32 catcher_4th_floor_z() const;
   void set_catcher_4th_floor_z(::google::protobuf::int32 value);
 
-  // optional int32 catcher_d1_d2_distance = 18;
+  // optional int32 carrier_1th_floor_z = 18;
+  bool has_carrier_1th_floor_z() const;
+  void clear_carrier_1th_floor_z();
+  static const int kCarrier1ThFloorZFieldNumber = 18;
+  ::google::protobuf::int32 carrier_1th_floor_z() const;
+  void set_carrier_1th_floor_z(::google::protobuf::int32 value);
+
+  // optional int32 carrier_2th_floor_z = 19;
+  bool has_carrier_2th_floor_z() const;
+  void clear_carrier_2th_floor_z();
+  static const int kCarrier2ThFloorZFieldNumber = 19;
+  ::google::protobuf::int32 carrier_2th_floor_z() const;
+  void set_carrier_2th_floor_z(::google::protobuf::int32 value);
+
+  // optional int32 carrier_3th_floor_z = 20;
+  bool has_carrier_3th_floor_z() const;
+  void clear_carrier_3th_floor_z();
+  static const int kCarrier3ThFloorZFieldNumber = 20;
+  ::google::protobuf::int32 carrier_3th_floor_z() const;
+  void set_carrier_3th_floor_z(::google::protobuf::int32 value);
+
+  // optional int32 carrier_4th_floor_z = 21;
+  bool has_carrier_4th_floor_z() const;
+  void clear_carrier_4th_floor_z();
+  static const int kCarrier4ThFloorZFieldNumber = 21;
+  ::google::protobuf::int32 carrier_4th_floor_z() const;
+  void set_carrier_4th_floor_z(::google::protobuf::int32 value);
+
+  // optional int32 catcher_d1_d2_distance = 22;
   bool has_catcher_d1_d2_distance() const;
   void clear_catcher_d1_d2_distance();
-  static const int kCatcherD1D2DistanceFieldNumber = 18;
+  static const int kCatcherD1D2DistanceFieldNumber = 22;
   ::google::protobuf::int32 catcher_d1_d2_distance() const;
   void set_catcher_d1_d2_distance(::google::protobuf::int32 value);
 
-  // optional int32 catcher_wheel_base_limit = 19;
+  // optional int32 catcher_wheel_base_limit = 23;
   bool has_catcher_wheel_base_limit() const;
   void clear_catcher_wheel_base_limit();
-  static const int kCatcherWheelBaseLimitFieldNumber = 19;
+  static const int kCatcherWheelBaseLimitFieldNumber = 23;
   ::google::protobuf::int32 catcher_wheel_base_limit() const;
   void set_catcher_wheel_base_limit(::google::protobuf::int32 value);
 
-  // optional int32 carrier_y_y1_distance = 20;
+  // optional int32 carrier_y_y1_distance = 24;
   bool has_carrier_y_y1_distance() const;
   void clear_carrier_y_y1_distance();
-  static const int kCarrierYY1DistanceFieldNumber = 20;
+  static const int kCarrierYY1DistanceFieldNumber = 24;
   ::google::protobuf::int32 carrier_y_y1_distance() const;
   void set_carrier_y_y1_distance(::google::protobuf::int32 value);
 
-  // optional int32 carrier_default_y1_back = 21;
+  // optional int32 carrier_default_y1_back = 25;
   bool has_carrier_default_y1_back() const;
   void clear_carrier_default_y1_back();
-  static const int kCarrierDefaultY1BackFieldNumber = 21;
+  static const int kCarrierDefaultY1BackFieldNumber = 25;
   ::google::protobuf::int32 carrier_default_y1_back() const;
   void set_carrier_default_y1_back(::google::protobuf::int32 value);
 
-  // optional int32 carrier_default_y1_leave = 22;
+  // optional int32 carrier_default_y1_leave = 26;
   bool has_carrier_default_y1_leave() const;
   void clear_carrier_default_y1_leave();
-  static const int kCarrierDefaultY1LeaveFieldNumber = 22;
+  static const int kCarrierDefaultY1LeaveFieldNumber = 26;
   ::google::protobuf::int32 carrier_default_y1_leave() const;
   void set_carrier_default_y1_leave(::google::protobuf::int32 value);
 
-  // optional int32 carrier_default_y_back = 23;
+  // optional int32 carrier_default_y_back = 27;
   bool has_carrier_default_y_back() const;
   void clear_carrier_default_y_back();
-  static const int kCarrierDefaultYBackFieldNumber = 23;
+  static const int kCarrierDefaultYBackFieldNumber = 27;
   ::google::protobuf::int32 carrier_default_y_back() const;
   void set_carrier_default_y_back(::google::protobuf::int32 value);
 
-  // optional int32 carrier_default_y_leave = 24;
+  // optional int32 carrier_default_y_leave = 28;
   bool has_carrier_default_y_leave() const;
   void clear_carrier_default_y_leave();
-  static const int kCarrierDefaultYLeaveFieldNumber = 24;
+  static const int kCarrierDefaultYLeaveFieldNumber = 28;
   ::google::protobuf::int32 carrier_default_y_leave() const;
   void set_carrier_default_y_leave(::google::protobuf::int32 value);
 
-  // optional int32 carrier_default_x_left = 25;
+  // optional int32 carrier_default_x_left = 29;
   bool has_carrier_default_x_left() const;
   void clear_carrier_default_x_left();
-  static const int kCarrierDefaultXLeftFieldNumber = 25;
+  static const int kCarrierDefaultXLeftFieldNumber = 29;
   ::google::protobuf::int32 carrier_default_x_left() const;
   void set_carrier_default_x_left(::google::protobuf::int32 value);
 
-  // optional int32 carrier_default_x_right = 26;
+  // optional int32 carrier_default_x_right = 30;
   bool has_carrier_default_x_right() const;
   void clear_carrier_default_x_right();
-  static const int kCarrierDefaultXRightFieldNumber = 26;
+  static const int kCarrierDefaultXRightFieldNumber = 30;
   ::google::protobuf::int32 carrier_default_x_right() const;
   void set_carrier_default_x_right(::google::protobuf::int32 value);
 
@@ -1948,6 +1976,14 @@ class Dispatch_coordinates_parameter_all : public ::google::protobuf::Message /*
   void clear_has_catcher_3th_floor_z();
   void set_has_catcher_4th_floor_z();
   void clear_has_catcher_4th_floor_z();
+  void set_has_carrier_1th_floor_z();
+  void clear_has_carrier_1th_floor_z();
+  void set_has_carrier_2th_floor_z();
+  void clear_has_carrier_2th_floor_z();
+  void set_has_carrier_3th_floor_z();
+  void clear_has_carrier_3th_floor_z();
+  void set_has_carrier_4th_floor_z();
+  void clear_has_carrier_4th_floor_z();
   void set_has_catcher_d1_d2_distance();
   void clear_has_catcher_d1_d2_distance();
   void set_has_catcher_wheel_base_limit();
@@ -1987,6 +2023,10 @@ class Dispatch_coordinates_parameter_all : public ::google::protobuf::Message /*
   ::google::protobuf::int32 catcher_2th_floor_z_;
   ::google::protobuf::int32 catcher_3th_floor_z_;
   ::google::protobuf::int32 catcher_4th_floor_z_;
+  ::google::protobuf::int32 carrier_1th_floor_z_;
+  ::google::protobuf::int32 carrier_2th_floor_z_;
+  ::google::protobuf::int32 carrier_3th_floor_z_;
+  ::google::protobuf::int32 carrier_4th_floor_z_;
   ::google::protobuf::int32 catcher_d1_d2_distance_;
   ::google::protobuf::int32 catcher_wheel_base_limit_;
   ::google::protobuf::int32 carrier_y_y1_distance_;
@@ -3500,16 +3540,112 @@ inline void Dispatch_coordinates_parameter_all::set_catcher_4th_floor_z(::google
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.catcher_4th_floor_z)
 }
 
-// optional int32 catcher_d1_d2_distance = 18;
-inline bool Dispatch_coordinates_parameter_all::has_catcher_d1_d2_distance() const {
+// optional int32 carrier_1th_floor_z = 18;
+inline bool Dispatch_coordinates_parameter_all::has_carrier_1th_floor_z() const {
   return (_has_bits_[0] & 0x00002000u) != 0;
 }
-inline void Dispatch_coordinates_parameter_all::set_has_catcher_d1_d2_distance() {
+inline void Dispatch_coordinates_parameter_all::set_has_carrier_1th_floor_z() {
   _has_bits_[0] |= 0x00002000u;
 }
-inline void Dispatch_coordinates_parameter_all::clear_has_catcher_d1_d2_distance() {
+inline void Dispatch_coordinates_parameter_all::clear_has_carrier_1th_floor_z() {
   _has_bits_[0] &= ~0x00002000u;
 }
+inline void Dispatch_coordinates_parameter_all::clear_carrier_1th_floor_z() {
+  carrier_1th_floor_z_ = 0;
+  clear_has_carrier_1th_floor_z();
+}
+inline ::google::protobuf::int32 Dispatch_coordinates_parameter_all::carrier_1th_floor_z() const {
+  // @@protoc_insertion_point(field_get:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_1th_floor_z)
+  return carrier_1th_floor_z_;
+}
+inline void Dispatch_coordinates_parameter_all::set_carrier_1th_floor_z(::google::protobuf::int32 value) {
+  set_has_carrier_1th_floor_z();
+  carrier_1th_floor_z_ = value;
+  // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_1th_floor_z)
+}
+
+// optional int32 carrier_2th_floor_z = 19;
+inline bool Dispatch_coordinates_parameter_all::has_carrier_2th_floor_z() const {
+  return (_has_bits_[0] & 0x00004000u) != 0;
+}
+inline void Dispatch_coordinates_parameter_all::set_has_carrier_2th_floor_z() {
+  _has_bits_[0] |= 0x00004000u;
+}
+inline void Dispatch_coordinates_parameter_all::clear_has_carrier_2th_floor_z() {
+  _has_bits_[0] &= ~0x00004000u;
+}
+inline void Dispatch_coordinates_parameter_all::clear_carrier_2th_floor_z() {
+  carrier_2th_floor_z_ = 0;
+  clear_has_carrier_2th_floor_z();
+}
+inline ::google::protobuf::int32 Dispatch_coordinates_parameter_all::carrier_2th_floor_z() const {
+  // @@protoc_insertion_point(field_get:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_2th_floor_z)
+  return carrier_2th_floor_z_;
+}
+inline void Dispatch_coordinates_parameter_all::set_carrier_2th_floor_z(::google::protobuf::int32 value) {
+  set_has_carrier_2th_floor_z();
+  carrier_2th_floor_z_ = value;
+  // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_2th_floor_z)
+}
+
+// optional int32 carrier_3th_floor_z = 20;
+inline bool Dispatch_coordinates_parameter_all::has_carrier_3th_floor_z() const {
+  return (_has_bits_[0] & 0x00008000u) != 0;
+}
+inline void Dispatch_coordinates_parameter_all::set_has_carrier_3th_floor_z() {
+  _has_bits_[0] |= 0x00008000u;
+}
+inline void Dispatch_coordinates_parameter_all::clear_has_carrier_3th_floor_z() {
+  _has_bits_[0] &= ~0x00008000u;
+}
+inline void Dispatch_coordinates_parameter_all::clear_carrier_3th_floor_z() {
+  carrier_3th_floor_z_ = 0;
+  clear_has_carrier_3th_floor_z();
+}
+inline ::google::protobuf::int32 Dispatch_coordinates_parameter_all::carrier_3th_floor_z() const {
+  // @@protoc_insertion_point(field_get:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_3th_floor_z)
+  return carrier_3th_floor_z_;
+}
+inline void Dispatch_coordinates_parameter_all::set_carrier_3th_floor_z(::google::protobuf::int32 value) {
+  set_has_carrier_3th_floor_z();
+  carrier_3th_floor_z_ = value;
+  // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_3th_floor_z)
+}
+
+// optional int32 carrier_4th_floor_z = 21;
+inline bool Dispatch_coordinates_parameter_all::has_carrier_4th_floor_z() const {
+  return (_has_bits_[0] & 0x00010000u) != 0;
+}
+inline void Dispatch_coordinates_parameter_all::set_has_carrier_4th_floor_z() {
+  _has_bits_[0] |= 0x00010000u;
+}
+inline void Dispatch_coordinates_parameter_all::clear_has_carrier_4th_floor_z() {
+  _has_bits_[0] &= ~0x00010000u;
+}
+inline void Dispatch_coordinates_parameter_all::clear_carrier_4th_floor_z() {
+  carrier_4th_floor_z_ = 0;
+  clear_has_carrier_4th_floor_z();
+}
+inline ::google::protobuf::int32 Dispatch_coordinates_parameter_all::carrier_4th_floor_z() const {
+  // @@protoc_insertion_point(field_get:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_4th_floor_z)
+  return carrier_4th_floor_z_;
+}
+inline void Dispatch_coordinates_parameter_all::set_carrier_4th_floor_z(::google::protobuf::int32 value) {
+  set_has_carrier_4th_floor_z();
+  carrier_4th_floor_z_ = value;
+  // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_4th_floor_z)
+}
+
+// optional int32 catcher_d1_d2_distance = 22;
+inline bool Dispatch_coordinates_parameter_all::has_catcher_d1_d2_distance() const {
+  return (_has_bits_[0] & 0x00020000u) != 0;
+}
+inline void Dispatch_coordinates_parameter_all::set_has_catcher_d1_d2_distance() {
+  _has_bits_[0] |= 0x00020000u;
+}
+inline void Dispatch_coordinates_parameter_all::clear_has_catcher_d1_d2_distance() {
+  _has_bits_[0] &= ~0x00020000u;
+}
 inline void Dispatch_coordinates_parameter_all::clear_catcher_d1_d2_distance() {
   catcher_d1_d2_distance_ = 0;
   clear_has_catcher_d1_d2_distance();
@@ -3524,15 +3660,15 @@ inline void Dispatch_coordinates_parameter_all::set_catcher_d1_d2_distance(::goo
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.catcher_d1_d2_distance)
 }
 
-// optional int32 catcher_wheel_base_limit = 19;
+// optional int32 catcher_wheel_base_limit = 23;
 inline bool Dispatch_coordinates_parameter_all::has_catcher_wheel_base_limit() const {
-  return (_has_bits_[0] & 0x00004000u) != 0;
+  return (_has_bits_[0] & 0x00040000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_catcher_wheel_base_limit() {
-  _has_bits_[0] |= 0x00004000u;
+  _has_bits_[0] |= 0x00040000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_catcher_wheel_base_limit() {
-  _has_bits_[0] &= ~0x00004000u;
+  _has_bits_[0] &= ~0x00040000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_catcher_wheel_base_limit() {
   catcher_wheel_base_limit_ = 0;
@@ -3548,15 +3684,15 @@ inline void Dispatch_coordinates_parameter_all::set_catcher_wheel_base_limit(::g
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.catcher_wheel_base_limit)
 }
 
-// optional int32 carrier_y_y1_distance = 20;
+// optional int32 carrier_y_y1_distance = 24;
 inline bool Dispatch_coordinates_parameter_all::has_carrier_y_y1_distance() const {
-  return (_has_bits_[0] & 0x00008000u) != 0;
+  return (_has_bits_[0] & 0x00080000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_carrier_y_y1_distance() {
-  _has_bits_[0] |= 0x00008000u;
+  _has_bits_[0] |= 0x00080000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_carrier_y_y1_distance() {
-  _has_bits_[0] &= ~0x00008000u;
+  _has_bits_[0] &= ~0x00080000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_carrier_y_y1_distance() {
   carrier_y_y1_distance_ = 0;
@@ -3572,15 +3708,15 @@ inline void Dispatch_coordinates_parameter_all::set_carrier_y_y1_distance(::goog
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_y_y1_distance)
 }
 
-// optional int32 carrier_default_y1_back = 21;
+// optional int32 carrier_default_y1_back = 25;
 inline bool Dispatch_coordinates_parameter_all::has_carrier_default_y1_back() const {
-  return (_has_bits_[0] & 0x00010000u) != 0;
+  return (_has_bits_[0] & 0x00100000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_carrier_default_y1_back() {
-  _has_bits_[0] |= 0x00010000u;
+  _has_bits_[0] |= 0x00100000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_carrier_default_y1_back() {
-  _has_bits_[0] &= ~0x00010000u;
+  _has_bits_[0] &= ~0x00100000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_carrier_default_y1_back() {
   carrier_default_y1_back_ = 0;
@@ -3596,15 +3732,15 @@ inline void Dispatch_coordinates_parameter_all::set_carrier_default_y1_back(::go
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_default_y1_back)
 }
 
-// optional int32 carrier_default_y1_leave = 22;
+// optional int32 carrier_default_y1_leave = 26;
 inline bool Dispatch_coordinates_parameter_all::has_carrier_default_y1_leave() const {
-  return (_has_bits_[0] & 0x00020000u) != 0;
+  return (_has_bits_[0] & 0x00200000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_carrier_default_y1_leave() {
-  _has_bits_[0] |= 0x00020000u;
+  _has_bits_[0] |= 0x00200000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_carrier_default_y1_leave() {
-  _has_bits_[0] &= ~0x00020000u;
+  _has_bits_[0] &= ~0x00200000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_carrier_default_y1_leave() {
   carrier_default_y1_leave_ = 0;
@@ -3620,15 +3756,15 @@ inline void Dispatch_coordinates_parameter_all::set_carrier_default_y1_leave(::g
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_default_y1_leave)
 }
 
-// optional int32 carrier_default_y_back = 23;
+// optional int32 carrier_default_y_back = 27;
 inline bool Dispatch_coordinates_parameter_all::has_carrier_default_y_back() const {
-  return (_has_bits_[0] & 0x00040000u) != 0;
+  return (_has_bits_[0] & 0x00400000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_carrier_default_y_back() {
-  _has_bits_[0] |= 0x00040000u;
+  _has_bits_[0] |= 0x00400000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_carrier_default_y_back() {
-  _has_bits_[0] &= ~0x00040000u;
+  _has_bits_[0] &= ~0x00400000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_carrier_default_y_back() {
   carrier_default_y_back_ = 0;
@@ -3644,15 +3780,15 @@ inline void Dispatch_coordinates_parameter_all::set_carrier_default_y_back(::goo
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_default_y_back)
 }
 
-// optional int32 carrier_default_y_leave = 24;
+// optional int32 carrier_default_y_leave = 28;
 inline bool Dispatch_coordinates_parameter_all::has_carrier_default_y_leave() const {
-  return (_has_bits_[0] & 0x00080000u) != 0;
+  return (_has_bits_[0] & 0x00800000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_carrier_default_y_leave() {
-  _has_bits_[0] |= 0x00080000u;
+  _has_bits_[0] |= 0x00800000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_carrier_default_y_leave() {
-  _has_bits_[0] &= ~0x00080000u;
+  _has_bits_[0] &= ~0x00800000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_carrier_default_y_leave() {
   carrier_default_y_leave_ = 0;
@@ -3668,15 +3804,15 @@ inline void Dispatch_coordinates_parameter_all::set_carrier_default_y_leave(::go
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_default_y_leave)
 }
 
-// optional int32 carrier_default_x_left = 25;
+// optional int32 carrier_default_x_left = 29;
 inline bool Dispatch_coordinates_parameter_all::has_carrier_default_x_left() const {
-  return (_has_bits_[0] & 0x00100000u) != 0;
+  return (_has_bits_[0] & 0x01000000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_carrier_default_x_left() {
-  _has_bits_[0] |= 0x00100000u;
+  _has_bits_[0] |= 0x01000000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_carrier_default_x_left() {
-  _has_bits_[0] &= ~0x00100000u;
+  _has_bits_[0] &= ~0x01000000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_carrier_default_x_left() {
   carrier_default_x_left_ = 0;
@@ -3692,15 +3828,15 @@ inline void Dispatch_coordinates_parameter_all::set_carrier_default_x_left(::goo
   // @@protoc_insertion_point(field_set:Dispatch_proto.Dispatch_coordinates_parameter_all.carrier_default_x_left)
 }
 
-// optional int32 carrier_default_x_right = 26;
+// optional int32 carrier_default_x_right = 30;
 inline bool Dispatch_coordinates_parameter_all::has_carrier_default_x_right() const {
-  return (_has_bits_[0] & 0x00200000u) != 0;
+  return (_has_bits_[0] & 0x02000000u) != 0;
 }
 inline void Dispatch_coordinates_parameter_all::set_has_carrier_default_x_right() {
-  _has_bits_[0] |= 0x00200000u;
+  _has_bits_[0] |= 0x02000000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_has_carrier_default_x_right() {
-  _has_bits_[0] &= ~0x00200000u;
+  _has_bits_[0] &= ~0x02000000u;
 }
 inline void Dispatch_coordinates_parameter_all::clear_carrier_default_x_right() {
   carrier_default_x_right_ = 0;

+ 16 - 11
dispatch/dispatch_parameter.proto

@@ -150,15 +150,20 @@ message Dispatch_coordinates_parameter_all
     optional int32                                      catcher_3th_floor_z = 16;
     optional int32                                      catcher_4th_floor_z = 17;
 
-    optional int32                                      catcher_d1_d2_distance = 18;
-    optional int32                                      catcher_wheel_base_limit = 19;
-
-    optional int32                                      carrier_y_y1_distance = 20;
-    optional int32                                      carrier_default_y1_back = 21;
-    optional int32                                      carrier_default_y1_leave = 22;
-    optional int32                                      carrier_default_y_back = 23;
-    optional int32                                      carrier_default_y_leave = 24;
-
-    optional int32                                      carrier_default_x_left = 25;
-    optional int32                                      carrier_default_x_right = 26;
+    optional int32                                      carrier_1th_floor_z = 18;
+    optional int32                                      carrier_2th_floor_z = 19;
+    optional int32                                      carrier_3th_floor_z = 20;
+    optional int32                                      carrier_4th_floor_z = 21;
+
+    optional int32                                      catcher_d1_d2_distance = 22;
+    optional int32                                      catcher_wheel_base_limit = 23;
+
+    optional int32                                      carrier_y_y1_distance = 24;
+    optional int32                                      carrier_default_y1_back = 25;
+    optional int32                                      carrier_default_y1_leave = 26;
+    optional int32                                      carrier_default_y_back = 27;
+    optional int32                                      carrier_default_y_leave = 28;
+
+    optional int32                                      carrier_default_x_left = 29;
+    optional int32                                      carrier_default_x_right = 30;
 }

+ 10 - 2
dispatch/dispatch_process.cpp

@@ -677,6 +677,11 @@ Error_manager Dispatch_process::send_dispatch_control_response_msg(message::Disp
 
 		std::string t_msg = m_dispatch_control_response_msg_catcher.SerializeAsString();
 		System_communication::get_instance_references().encapsulate_msg(t_msg);
+
+		if ( dispatch_device_task_status == message::Dispatch_device_task_status::E_TASK_OVER )
+		{
+			LOG(INFO) << " m_dispatch_control_response_msg_catcher =  "<< m_dispatch_control_response_msg_catcher.DebugString() <<  "   " << this;
+		}
 	}
 	if ( mp_carrier.get() != NULL )
 	{
@@ -701,6 +706,11 @@ Error_manager Dispatch_process::send_dispatch_control_response_msg(message::Disp
 
 		std::string t_msg = m_dispatch_control_response_msg_carrier.SerializeAsString();
 		System_communication::get_instance_references().encapsulate_msg(t_msg);
+
+		if ( dispatch_device_task_status == message::Dispatch_device_task_status::E_TASK_OVER )
+		{
+			LOG(INFO) << " m_dispatch_control_response_msg_carrier =  "<< m_dispatch_control_response_msg_carrier.DebugString() <<  "   " << this;
+		}
 	}
 
 	return Error_code::SUCCESS;
@@ -736,8 +746,6 @@ Error_manager Dispatch_process::disconnect_dispatch_device()
 			//释放设备和任务单的指针
 			mp_carrier_task.reset();
 			mp_carrier.reset();
-
-
 		}
 	}
 

+ 1 - 1
dispatch/passageway.cpp

@@ -54,7 +54,7 @@ Error_manager Passageway::check_task_type(std::shared_ptr<Task_Base> p_task)
 }
 
 //获取硬件设备的状态, 必须子类继承
-Passageway::Device_status Passageway::get_actual_device_status()
+Passageway::Hardware_device_status Passageway::get_actual_device_status()
 {
 	return m_actual_device_status;
 }

+ 2 - 2
dispatch/passageway.h

@@ -21,7 +21,7 @@ public://API functions
 	Error_manager check_task_type(std::shared_ptr<Task_Base> p_task);
 public://get or set member variable
 	//获取硬件设备的状态, 必须子类继承
-	Device_status get_actual_device_status();
+	Hardware_device_status get_actual_device_status();
 protected://member functions
 	//把任务单写入到内存中, 子类必须重载
 	Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);
@@ -56,7 +56,7 @@ public:
 	std::chrono::system_clock::time_point	m_status_updata_time;	//状态更新时间点
 	unsigned char						m_last_heartbeat;			//上一次的心跳
 	//搬运器的设备状态数据,
-	Device_status						m_actual_device_status;			//通道口的硬件设备状态
+	Hardware_device_status				m_actual_device_status;			//通道口的硬件设备状态
 	Load_status							m_actual_inside_load_status;	//通道口的内部负载状态, 门内地感是否有车.
 	Load_status							m_actual_outside_load_status;	//通道口的外部负载状态, 门外地感是否有车.
 	Overstep_the_boundary				m_actual_front_overstep_the_boundary;	//通道口 汽车前边界

+ 9 - 7
main.cpp

@@ -89,6 +89,7 @@ int main(int argc,char* argv[])
 	System_executor::get_instance_references().system_executor_init(10);
 	std::cout << "System_executor = " << System_executor::get_instance_references().get_system_executor_status() << std::endl;
 	System_communication::get_instance_references().communication_init();
+	System_communication::get_instance_references().set_encapsulate_cycle_time(1000);
 
 	while (1)
 	{
@@ -111,7 +112,6 @@ int main(int argc,char* argv[])
 
 
 
-
 //	Error_manager t_error;
 	t_error = Dispatch_communication::get_instance_references().communication_init();
 
@@ -139,8 +139,8 @@ int main(int argc,char* argv[])
 	std::shared_ptr<Task_Base> tp_task_Base1(new Catcher_task);
 	Catcher_task * tp_catcher_task1 = (Catcher_task *)tp_task_Base1.get();
 	tp_catcher_task1->task_init(NULL,std::chrono::milliseconds(15000));
-	tp_catcher_task1->m_request_key = "123456789012345678901234567890hl";
-	tp_catcher_task1->m_request_x = 11000;
+	tp_catcher_task1->m_request_key = "x23456789012345678901234567890r1";
+	tp_catcher_task1->m_request_x = 11055;
 	tp_catcher_task1->m_request_y = 3000;
 	tp_catcher_task1->m_request_b = 90;
 	tp_catcher_task1->m_request_z = 5410;
@@ -229,7 +229,7 @@ int main(int argc,char* argv[])
 	std::shared_ptr<Task_Base> tp_task_Base20(new Carrier_task);
 	Carrier_task * tp_carrier_task20 = (Carrier_task *)tp_task_Base20.get();
 	tp_carrier_task20->task_init(NULL,std::chrono::milliseconds(15000));
-	tp_carrier_task20->m_request_key = "123456789012345678901234567890hl";
+	tp_carrier_task20->m_request_key = "x23456789012345678901234567890c0";
 	tp_carrier_task20->m_request_x = 1;
 //	tp_carrier_task20->m_request_x = 32600;
 	tp_carrier_task20->m_request_y = 3000;
@@ -316,6 +316,7 @@ int main(int argc,char* argv[])
 	}
 */
 
+
 	Carrier t_carrier21;
 	t_error = t_carrier21.dispatch_device_base_init(1);
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
@@ -324,7 +325,7 @@ int main(int argc,char* argv[])
 	std::shared_ptr<Task_Base> tp_task_Base21(new Carrier_task);
 	Carrier_task * tp_carrier_task21 = (Carrier_task *)tp_task_Base21.get();
 	tp_carrier_task21->task_init(NULL,std::chrono::milliseconds(15000));
-	tp_carrier_task21->m_request_key = "123456789012345678901234567890hl";
+	tp_carrier_task21->m_request_key = "x23456789012345678901234567890c1";
 //	tp_carrier_task21->m_request_x = 1;
 	tp_carrier_task21->m_request_x = 32600;
 	tp_carrier_task21->m_request_y = 3000;
@@ -420,8 +421,9 @@ int main(int argc,char* argv[])
 	std::shared_ptr<Task_Base> tp_task_Base22(new Carrier_task);
 	Carrier_task * tp_carrier_task22 = (Carrier_task *)tp_task_Base22.get();
 	tp_carrier_task22->task_init(NULL,std::chrono::milliseconds(15000));
-	tp_carrier_task22->m_request_key = "123456789012345678901234567890hl";
-	tp_carrier_task22->m_request_x = 4455;
+	tp_carrier_task22->m_request_key = "x23456789012345678901234567890c2";
+	tp_carrier_task22->m_request_x = 24855;
+//	tp_carrier_task22->m_request_x = 4700;
 	tp_carrier_task22->m_request_y = 3000;
 	tp_carrier_task22->m_request_z = 5125;
 	tp_carrier_task22->m_request_y1 = 4500;

Fichier diff supprimé car celui-ci est trop grand
+ 3099 - 1562
message/dispatch_message.pb.cc


Fichier diff supprimé car celui-ci est trop grand
+ 2706 - 1316
message/dispatch_message.pb.h


+ 213 - 105
message/dispatch_message.proto

@@ -1,61 +1,9 @@
 syntax = "proto2";
 package message;
 import "message_base.proto";
+import "dispatch_control.proto";
 
-//调度管理 的状态
-enum Dispatch_manager_status
-{
-    E_DISPATCH_MANAGER_UNKNOW               = 0;    //未知
-    E_DISPATCH_MANAGER_READY                = 1;    //准备,待机
-    E_DISPATCH_MANAGER_STORE                = 2;    //正在存车
-    E_DISPATCH_MANAGER_PICKUP               = 3;    //正在取车
 
-    E_DISPATCH_MANAGER_FAULT               = 10;    //故障
-}
-
-//抓车器状态, 楚天项目就是AGV系统
-enum Catcher_status
-{
-    E_CATCHER_UNKNOW               = 0;     //未知
-    E_CATCHER_READY                = 1;     //准备,待机
-    E_CATCHER_STORE                = 2;	    //正在存车
-    E_CATCHER_PICKUP               = 3;	    //正在取车
-
-    E_CATCHER_FAULT                = 10;     //故障
-}
-
-//搬运器状态, 楚天项目就是中跑车
-enum Carrier_status
-{
-    E_CARRIER_UNKNOW               = 0;     //未知
-    E_CARRIER_READY                = 1;     //准备,待机
-    E_CARRIER_STORE                = 2;	    //正在存车
-    E_CARRIER_PICKUP               = 3;	    //正在取车
-
-    E_CARRIER_FAULT                = 10;     //故障
-}
-
-//升降机状态, 楚天项目就是电梯
-enum Elevator_status
-{
-    E_ELEVATOR_UNKNOW               = 0;     //未知
-    E_ELEVATOR_READY                = 1;     //准备,待机
-    E_ELEVATOR_STORE                = 2;	    //正在存车
-    E_ELEVATOR_PICKUP               = 3;	    //正在取车
-
-    E_ELEVATOR_FAULT                = 10;     //故障
-}
-
-//通道口状态, 楚天项目就是一楼的出入口
-enum Passageway_status
-{
-    E_PASSAGEWAY_UNKNOW               = 0;     //未知
-    E_PASSAGEWAY_READY                = 1;     //准备,待机
-    E_PASSAGEWAY_STORE                = 2;	    //正在存车
-    E_PASSAGEWAY_PICKUP               = 3;	    //正在取车
-
-    E_PASSAGEWAY_FAULT                = 10;     //故障
-}
 
 //终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
 enum Terminal_status
@@ -76,12 +24,13 @@ enum Passageway_direction
     E_BILATERAL         =2;         //双向口
 }
 
-//设备坐标
-message Device_position
+//调度模块终端出入口的状态
+message Dispatch_terminal_status_msg
 {
-    required float x=1;             //X轴坐标
-    required float y=2;             //Y轴坐标
-    required float z=3;             //Z轴坐标, 楚天AGV和电梯一一对应,所以Z轴就用电梯高度表示
+    required Base_info                  base_info=1;                    //消息类型
+    required int32                      terminal_id=2;                  //终端id
+    required Terminal_status            terminal_status = 3;            //终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
+    required Passageway_direction       passageway_direction = 4;       //通道口属性, 出入口的方向属性, 表示这个通道允许停车或者取车
 }
 
 //调度方向, 停车取车, 表示正在执行的动作
@@ -93,80 +42,239 @@ enum Dispatch_motion_direction
 
 
 
+//执行搬运请求(主控->调度管理)
+message Dispatch_request_msg
+{
+    required Base_info                  base_info=1;                            //消息类型
+    required string                     command_key=2;                   //指令唯一标识符id
+
+    required Dispatch_motion_direction  dispatch_motion_direction=3;            //调度方向, 停车取车
+    required int32                      terminal_id=4;                          //终端id, 出入口
+    required Parkspace_info             parkspace_info=5;                         //车位编号, 停车位
+    optional Locate_information         locate_information=6;                   //汽车测量信息, 只有停车时有数据, 取车时没有数据.
+}
+
+//搬运动作执行完成后反馈结果(调度管理->主控)
+message Dispatch_response_msg
+{
+    required Base_info                  base_info=1;                    //消息类型
+    required string                     command_key=2;                   //指令唯一标识符id
+    required Error_manager              error_manager = 3;
+}
+
+
+
+
 
 
 
-//调度设备的类型
-enum Dispatch_device_status
+
+
+
+
+
+
+
+
+
+//调度管理 的状态
+enum Dispatch_manager_status
 {
-    DISPATCH_DEVICE_UNKNOW              = 0;           //调度设备 未知(没有初始化的默认状态)
-    DISPATCH_DEVICE_READY               = 1;           //调度设备 空闲(待机准备状态)
-    DISPATCH_DEVICE_BUSY                = 2;           //调度设备 正忙(工作中)
+    E_DISPATCH_MANAGER_UNKNOW               = 0;    //未知
+    E_DISPATCH_MANAGER_READY                = 1;    //准备,待机
+    E_DISPATCH_MANAGER_STORE                = 2;    //正在存车
+    E_DISPATCH_MANAGER_PICKUP               = 3;    //正在取车
 
-    DISPATCH_DEVICE_FAULT               = 10;          //调度设备 故障
+    E_DISPATCH_MANAGER_FAULT               = 100;    //故障
 }
 
+//设备状态,这个类的总状态,这里指工作任务流程
+	enum Dispatch_device_status
+	{
+		E_UNKNOW               	= 0;    //未知
+		E_READY               	= 1;    //准备,待机
+		E_BUSY					= 2; 	//工作正忙
+
+		E_ONE_LEVEL_OVER		= 3; 	//一级工作完成,
+		E_ONE_LEVEL_WORK		= 4;	//一级工作状态, 就是普通的移动任务
+		E_TWO_LEVEL_OVER		= 5; 	//一级工作完成,
+		E_TWO_LEVEL_WORK		= 6;	//二级工作状态, 就是紧急避让, 插队任务(会在执行一级任务的过程中, 插队并优先执行二级任务)
+		E_THREE_LEVEL_OVER		= 7; 	//一级工作完成,
+		E_THREE_LEVEL_WORK		= 8;	//三级工作任务, 就是锁定硬件资源, 不让插队, (除非急停或者取消任务)
+
+		E_FAULT					= 100;	//故障
+		E_DISCONNECT			= 101; 	//通信故障
+	};
+
+	//调度任务的等级
+	enum Dispatch_task_level
+	{
+//	    E_UNKNOW_LEVEL          = 0;    //无效任务
+		E_ONE_LEVEL             = 1;    //一级任务
+		E_TWO_LEVEL				= 2;	//二级任务
+		E_THREE_LEVEL			= 3;	//三级任务
+	};
+
+	//抓车的夹杆
+	enum Clamp_motion
+	{
+		E_CLAMP_NO_ACTION            	= 0;    //无动作.
+		E_CLAMP_TIGHT               	= 1;    //夹紧夹杆
+		E_CLAMP_LOOSE					= 2;	//松开夹杆
+	};
+
+	//中跑车和平层轨道的对接
+	enum Joint_motion
+	{
+		E_JOINT_NO_ACTION            	= 0;    //无动作.
+		E_JOINT_HOLD_OUT               	= 1;    //伸出对接,之后中跑车可以x轴移动,电梯不能Z轴移动
+		E_JOINT_TAKE_BACK				= 2;	//收回对接,之后中跑车固定在电梯上不能X轴移动,电梯可以Z轴移动
+	};
+
+	//小跑车的位置,是否在中跑车上面
+	enum Small_sports_car_motion
+	{
+		E_SMALL_SPORTS_NO_ACTION		= 0;    //无动作.
+		E_SMALL_SPORTS_CAR_GET_AWAY 	= 1;    //小跑车离开中跑车
+		E_SMALL_SPORTS_CAR_GET_BACK		= 2;	//小跑车返回中跑车
+	};
+
+
+	//指令完成状态, 设备答复指令, 返回任务完成的情况
+	enum Respons_status
+	{
+		RESPONS_WORKING            	= 0;    //任务进行中
+		RESPONS_OVER               	= 1;    //任务完成
+		RESPONS_MINOR_ERROR			= 100;	//一般故障, 可恢复
+		RESPONS_CRITICAL_ERROR		= 101;	//致命故障,不可恢复
+	};
+
+	//设备的硬件设备状态
+	enum Hardware_device_status
+	{
+		DEVICE_UNKNOWN              = 0;    //设备未知
+		DEVICE_READY                = 1;    //设备空闲(可以接受新的指令任务)
+		DEVICE_WORKING				= 2;	//设备工作中
+		DEVICE_EMERGENCY_STOP		= 3;	//设备急停
+		DEVICE_UNSAFETY				= 4;	//设备不安全(暂时不考虑是否处于安全位置)
+		DEVICE_COLLISION			= 5;	//设备发生碰撞
+		DEVICE_FAULT				= 6;	//设备故障
+	};
+
+	//设备的负载状态, 小跑车上面是否有车.
+	enum Load_status
+	{
+		LOAD_UNKNOWN				= 0;	//负载未知
+		HAVE_CAR               		= 1;    //有车
+		NO_CAR            			= 2;    //没车
+	};
+
+	//7号出口 转台方向
+	enum Turntable_direction
+	{
+		TURNTABLE_DIRECTION_UNKNOWN				= 0;	//方向未知,
+		TURNTABLE_DIRECTION_INSIDE 				= 1;    //方向朝里,对接内门的小跑车
+		TURNTABLE_DIRECTION_OUTSIDE  			= 2;    //没车朝外,对接外门的出口
+	};
+
+	//出入口 门的开关状态
+	enum Door_motion
+	{
+		DOOR_UNKNOWN            = 0;    //门的开关状态 未知, 或者工作到一半,正在工作中.
+	    DOOR_OPEN               = 1;    //开门
+		DOOR_CLOSE				= 2;	//关门
+		DOOR_ERROR				= 3;	//
+	};
+
+	//边界判断,是否超界
+	enum Overstep_the_boundary
+	{
+		BOUNDARY_NORMAL			= 0;	//边界 正常
+		BOUNDARY_OVERSTEP       = 1;    //超界
+	};
+
+
+
+
+//抓取器的状态(机器手)
+message Catcher_data
+{
+    required Dispatch_device_type               dispatch_device_type=1;         //调度设备的类型
+    required Dispatch_device_status             dispatch_device_status=2;       //设备总状态, 控制任务流程(长流程)
+
+    required int32                              device_id=3;                    //设备id,
+	optional Hardware_device_status				actual_device_status=4;			//机器人的硬件设备状态(短流程)
+	optional Load_status						actual_load_status=5;	        //机器人的负载状态, 机器人上面是否有车.
+
+    optional int32 								actual_coordinates_id=6;		//机器人真实 空间位置的id.
+	optional float 								actual_x=7;					    //机器人坐标x轴,
+	optional float 								actual_y=8;					    //机器人坐标y轴,
+	optional float 								actual_b=9;					    //机器人坐标b轴, 旋转范围80~280
+	optional float 								actual_z=10;				    //机器人坐标z轴,
+	optional float 								actual_d1=11;				    //机器人坐标d1轴, 机器人抓车杆纵向移动(前轮抓杆)
+	optional float 								actual_d2=12;				    //机器人坐标d2轴, 机器人抓车杆纵向移动(后轮抓杆)
+	optional Clamp_motion						actual_clamp_motion1=13;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion2=14;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion3=15;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion4=16;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+
+    optional string                             actual_error_code=17;	        //机器人设备的故障信息位
+    optional string                             actual_warning_code=18;     	//机器人设备的警告信息位
+    optional string							    actual_error_description=19;    //机器人设备的错误描述
+}
 
-//调度管理的设备详细的数据信息
-message Dispatch_manager_data_msg
+//搬运器的状态
+message Carrier_data
 {
-    //后续再加
+    required Dispatch_device_type               dispatch_device_type=1;         //调度设备的类型
+    required Dispatch_device_status             dispatch_device_status=2;       //设备总状态, 控制任务流程(长流程)
+
+    required int32                              device_id=3;                    //设备id,
+	optional Hardware_device_status				actual_device_status=4;			//搬运器的硬件设备状态(短流程)
+	optional Load_status						actual_load_status=5;	        //搬运器的负载状态, 小跑车上面是否有车.
+
+    optional int32 								actual_coordinates_id=6;	    //机器人真实 空间位置的id.
+	optional float 								actual_x=7;					    //搬运器坐标x轴, 中跑车控制横向移动
+	optional float 								actual_y=8;					    //搬运器坐标y轴, 小跑车控制纵向移动
+	optional float 								actual_z=9;					    //搬运器坐标z轴, 电梯控制上下移动
+	optional float 								actual_y1=10;				        //搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
+	optional float 								actual_y2=11;				        //搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
+	optional Clamp_motion						actual_clamp_motion1=12;		    //小跑车夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion2=13;		    //小跑车夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Small_sports_car_motion			actual_small_sports_car_motion=14;	//小跑车的位置,是否在中跑车上面, 0=无动作,1=出发到位,2=返回到位
+	optional Joint_motion						actual_joint_motion_x1=15;		    //电梯与X轴的横向轨道对接,0=无动作,1=伸出到位,2=收回到位
+	optional Joint_motion						actual_joint_motion_x2=16;		    //电梯与X轴的横向轨道对接,0=无动作,1=伸出到位,2=收回到位
+
+    optional string                             actual_error_code=17;	        //搬运器设备的故障信息位
+    optional string                             actual_warning_code=18;	        //搬运器设备的警告信息位
+    optional string							    actual_error_description=19;    //搬运器设备的错误描述
 }
 
 
 
+
 //调度管理总管理的状态
 message Dispatch_manager_status_msg
 {
     required Base_info                  base_info=1;                    //消息类型
-    required int32                      dispatch_id=2;                  //调度管理模块 id
 
+    required int32                      dispatch_id=2;                  //调度管理模块 id
     required Dispatch_manager_status    dispatch_manager_status = 3;    //调度管理模块 状态
 
-    optional Dispatch_device_status              robot_1_status=4;         //中间的大型机器手   (可以负责1~6号出入口的停车和取车)
-    optional Dispatch_device_status              robot_2_status=5;         //一号出口的专用机器手(只能负责1号出口的取车)(目前没有安装,暂时不考虑)
+    repeated Catcher_data               catcher_data_map = 4;           //机器手的数据
+    repeated Carrier_data               carrier_data_map = 5;           //搬运器的数据
+}
 
-    optional Dispatch_device_status              carrier_1_status=6;       //左侧0号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
-    optional Dispatch_device_status              carrier_2_status=7;       //右侧7号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
-    optional Dispatch_device_status              carrier_3_status=8;       //中间3楼的搬运器(中跑车 小跑车 二合一为搬运器)(没有电梯, 只能在3楼活动)
 
-    optional Dispatch_device_status              passageway_0_status=9;         //0号出口(在左侧电梯井, 只能取车)(暂时不存在)
-    optional Dispatch_device_status              passageway_1_status=10;         //1号出入口
-    optional Dispatch_device_status              passageway_2_status=11;         //2号出入口
-    optional Dispatch_device_status              passageway_3_status=12;         //3号出入口
-    optional Dispatch_device_status              passageway_4_status=13;         //4号出入口
-    optional Dispatch_device_status              passageway_5_status=14;         //5号出入口
-    optional Dispatch_device_status              passageway_6_status=15;         //6号出入口
-    optional Dispatch_device_status              passageway_7_status=16;         //7号出口(在右侧电梯井, 只能取车)
 
-}
 
-//调度模块终端出入口的状态
-message Dispatch_terminal_status_msg
+
+//调度管理的设备详细的数据信息
+message Dispatch_manager_data_msg
 {
-    required Base_info                  base_info=1;                    //消息类型
-    required int32                      terminal_id=2;                  //终端id
-    required Terminal_status            terminal_status = 3;            //终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
-    required Passageway_direction       passageway_direction = 4;       //通道口属性, 出入口的方向属性, 表示这个通道允许停车或者取车
+    //后续再加
 }
 
 
-//执行搬运请求(主控->调度管理)
-message Dispatch_request_msg
-{
-    required Base_info                  base_info=1;                            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
 
-    required Dispatch_motion_direction  dispatch_motion_direction=3;            //调度方向, 停车取车
-    required int32                      terminal_id=4;                          //终端id, 出入口
-    required Parkspace_info             parkspace_info=5;                         //车位编号, 停车位
-    optional Locate_information         locate_information=6;                   //汽车测量信息, 只有停车时有数据, 取车时没有数据.
-}
 
-//搬运动作执行完成后反馈结果(调度管理->主控)
-message Dispatch_response_msg
-{
-    required Base_info                  base_info=1;                    //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
-    required Error_manager              error_manager = 3;
-}

+ 1 - 1
setting/communication.prototxt

@@ -24,7 +24,7 @@ communication_parameters
 
     connect_string_vector:"tcp://192.168.2.127:30000"
 
-    connect_string_vector:"tcp://192.168.2.113:30000"
+    connect_string_vector:"tcp://192.168.2.165:30000"
     bind_string:"tcp://192.168.2.168:30009"
 
 }

+ 6 - 0
setting/dispatch_coordinates.prototxt

@@ -3286,6 +3286,12 @@ catcher_1th_floor_z:1
 catcher_2th_floor_z:2620
 catcher_3th_floor_z:5220
 catcher_4th_floor_z:5410
+
+carrier_1th_floor_z:1
+carrier_2th_floor_z:2525
+carrier_3th_floor_z:5125
+carrier_4th_floor_z:7725
+
 catcher_d1_d2_distance:1903
 catcher_wheel_base_limit:3000
 

+ 1 - 54
system/system_communication.cpp

@@ -58,61 +58,8 @@ Error_manager System_communication::encapsulate_send_data()
 {
 	Error_manager t_error;
 //	return System_executor::get_instance_references().encapsulate_send_status();
+	return System_executor::get_instance_references().encapsulate_send_dispatch_manager_status();
 
-
-
-
-/*
-	message::Measure_request_msg t_measure_request_msg;
-	t_measure_request_msg.mutable_base_info()->set_msg_type(message::Message_type::eLocate_request_msg);
-	t_measure_request_msg.mutable_base_info()->set_timeout_ms(5000);
-	t_measure_request_msg.mutable_base_info()->set_sender(message::Communicator::eMain);
-	t_measure_request_msg.mutable_base_info()->set_receiver(message::Communicator::eMeasurer);
-	t_measure_request_msg.set_command_id(123);
-	t_measure_request_msg.set_terminal_id(1);
-	string t_msg = t_measure_request_msg.SerializeAsString();
-	System_communication::get_instance_references().encapsulate_msg(t_msg);
- */
-
-
-/*
-	//创建一条状态消息
-	message::Measure_status_msg t_measure_status_msg;
-	t_measure_status_msg.mutable_base_info()->set_msg_type(message::Message_type::eLocate_status_msg);
-	t_measure_status_msg.mutable_base_info()->set_timeout_ms(5000);
-	t_measure_status_msg.mutable_base_info()->set_sender(message::Communicator::eMeasurer);
-	t_measure_status_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
-
-	Laser_manager::Laser_manager_status t_laser_manager_status = Laser_manager::get_instance_references().get_laser_manager_status();
-	t_measure_status_msg.set_laser_manager_status((message::Laser_manager_status)t_laser_manager_status);
-
-	std::vector<Laser_base*> & t_laser_vector = Laser_manager::get_instance_references().get_laser_vector();
-	for (auto iter = t_laser_vector.begin(); iter != t_laser_vector.end(); ++iter)
-	{
-		Laser_statu t_laser_statu = (*iter)->get_laser_statu();
-		t_measure_status_msg.add_laser_statu_vector((message::Laser_statu)t_laser_statu);
-	}
-
-	Locate_manager::Locate_manager_status t_locate_manager_status = Locate_manager::get_instance_references().get_locate_manager_status();
-	t_measure_status_msg.set_locate_manager_status((message::Locate_manager_status)t_locate_manager_status);
-
-	t_measure_status_msg.mutable_error_manager()->set_error_code(t_error.get_error_code());
-	t_measure_status_msg.mutable_error_manager()->set_error_level((message::Error_level)t_error.get_error_level());
-	t_measure_status_msg.mutable_error_manager()->set_error_description(t_error.get_error_description(), t_error.get_description_length());
-
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_x(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_y(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_angle(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_length(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_width(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_height(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_wheel_base(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_wheel_width(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_correct(0);
-
-	string t_msg = t_measure_status_msg.SerializeAsString();
-	System_communication::get_instance_references().encapsulate_msg(t_msg);
-*/
 	return Error_code::SUCCESS;
 }
 

+ 147 - 0
system/system_executor.cpp

@@ -297,6 +297,153 @@ Error_manager System_executor::encapsulate_send_status()
 	return Error_code::SUCCESS;
 }
 
+//定时发送 调度管理的状态
+Error_manager System_executor::encapsulate_send_dispatch_manager_status()
+{
+	Error_manager t_error;
+
+	int t_dispatch_id = Dispatch_manager::get_instance_references().get_dispatch_id();
+	std::string t_msg;
+
+	//创建一条 调度管理总管理的状态
+	message::Dispatch_manager_status_msg t_dispatch_manager_status_msg;
+	t_dispatch_manager_status_msg.mutable_base_info()->set_msg_type(message::Message_type::eDispatch_manager_status_msg);
+	t_dispatch_manager_status_msg.mutable_base_info()->set_timeout_ms(5000);
+	t_dispatch_manager_status_msg.mutable_base_info()->set_sender(message::Communicator::eDispatch_manager);
+	t_dispatch_manager_status_msg.mutable_base_info()->set_receiver(message::Communicator::eEmpty);
+
+	t_dispatch_manager_status_msg.set_dispatch_id(t_dispatch_id);
+	Dispatch_manager::Dispatch_manager_status t_dispatch_manager_status = Dispatch_manager::get_instance_references().get_dispatch_manager_status();
+	t_dispatch_manager_status_msg.set_dispatch_manager_status((message::Dispatch_manager_status)t_dispatch_manager_status);
+
+	for (auto iter = Dispatch_manager::get_instance_references().m_catcher_map.begin(); iter != Dispatch_manager::get_instance_references().m_catcher_map.end(); ++iter)
+	{
+		Catcher* tp_catcher = (Catcher*)iter->second.get();
+		message::Catcher_data * tp_catcher_data = t_dispatch_manager_status_msg.mutable_catcher_data_map()->Add();
+
+		switch ( tp_catcher->get_device_id() )
+		{
+		    case 0:
+		    {
+				tp_catcher_data->set_dispatch_device_type(message::Dispatch_device_type::ROBOT_1);
+		        break;
+		    }
+		    case 1:
+		    {
+				tp_catcher_data->set_dispatch_device_type(message::Dispatch_device_type::ROBOT_2);
+		        break;
+		    }
+		    default:
+		    {
+
+		        break;
+		    }
+		}
+		if ( tp_catcher->get_dispatch_device_status() >= Dispatch_device_base::Dispatch_device_status::E_BUSY &&
+		tp_catcher->get_dispatch_device_status() <= Dispatch_device_base::Dispatch_device_status::E_THREE_LEVEL_WORK)
+		{
+			tp_catcher_data->set_dispatch_device_status(message::Dispatch_device_status::E_BUSY);
+
+		}
+		else
+		{
+			tp_catcher_data->set_dispatch_device_status((message::Dispatch_device_status)tp_catcher->get_dispatch_device_status());
+		}
+
+		tp_catcher_data->set_device_id(tp_catcher->get_device_id());
+		tp_catcher_data->set_actual_device_status((message::Hardware_device_status)tp_catcher->m_actual_device_status);
+		tp_catcher_data->set_actual_load_status((message::Load_status)tp_catcher->m_actual_load_status);
+
+
+		tp_catcher_data->set_actual_coordinates_id(tp_catcher->m_actual_coordinates_id);
+		tp_catcher_data->set_actual_x(tp_catcher->m_actual_x);
+		tp_catcher_data->set_actual_y(tp_catcher->m_actual_y);
+		tp_catcher_data->set_actual_b(tp_catcher->m_actual_b);
+		tp_catcher_data->set_actual_z(tp_catcher->m_actual_z);
+		tp_catcher_data->set_actual_d1(tp_catcher->m_actual_d1);
+		tp_catcher_data->set_actual_d2(tp_catcher->m_actual_d2);
+		tp_catcher_data->set_actual_clamp_motion1((message::Clamp_motion)tp_catcher->m_actual_clamp_motion1);
+		tp_catcher_data->set_actual_clamp_motion2((message::Clamp_motion)tp_catcher->m_actual_clamp_motion2);
+		tp_catcher_data->set_actual_clamp_motion3((message::Clamp_motion)tp_catcher->m_actual_clamp_motion3);
+		tp_catcher_data->set_actual_clamp_motion4((message::Clamp_motion)tp_catcher->m_actual_clamp_motion4);
+
+		std::string t_actual_error_code((char*)tp_catcher->m_actual_error_code, 50);
+		tp_catcher_data->set_actual_error_code(t_actual_error_code);
+		std::string t_actual_warning_code((char*)tp_catcher->m_actual_warning_code, 50);
+		tp_catcher_data->set_actual_error_code(t_actual_warning_code);
+		tp_catcher_data->set_actual_error_code(tp_catcher->m_actual_error_description);
+	}
+	for (auto iter = Dispatch_manager::get_instance_references().m_carrier_map.begin(); iter != Dispatch_manager::get_instance_references().m_carrier_map.end(); ++iter)
+	{
+		Carrier* tp_carrier = (Carrier*)iter->second.get();
+		message::Carrier_data * tp_carrier_data = t_dispatch_manager_status_msg.mutable_carrier_data_map()->Add();
+
+		switch ( tp_carrier->get_device_id() )
+		{
+			case 0:
+			{
+				tp_carrier_data->set_dispatch_device_type(message::Dispatch_device_type::CARRIER_1);
+				break;
+			}
+			case 1:
+			{
+				tp_carrier_data->set_dispatch_device_type(message::Dispatch_device_type::CARRIER_2);
+				break;
+			}
+			case 2:
+			{
+				tp_carrier_data->set_dispatch_device_type(message::Dispatch_device_type::CARRIER_3);
+				break;
+			}
+			default:
+			{
+
+				break;
+			}
+		}
+		if ( tp_carrier->get_dispatch_device_status() >= Dispatch_device_base::Dispatch_device_status::E_BUSY &&
+		tp_carrier->get_dispatch_device_status() <= Dispatch_device_base::Dispatch_device_status::E_THREE_LEVEL_WORK)
+		{
+			tp_carrier_data->set_dispatch_device_status(message::Dispatch_device_status::E_BUSY);
+
+		}
+		else
+		{
+			tp_carrier_data->set_dispatch_device_status((message::Dispatch_device_status)tp_carrier->get_dispatch_device_status());
+		}
+		tp_carrier_data->set_device_id(tp_carrier->get_device_id());
+		tp_carrier_data->set_actual_device_status((message::Hardware_device_status)tp_carrier->m_actual_device_status);
+		tp_carrier_data->set_actual_load_status((message::Load_status)tp_carrier->m_actual_load_status);
+
+		tp_carrier_data->set_actual_coordinates_id(tp_carrier->m_actual_coordinates_id);
+		tp_carrier_data->set_actual_x(tp_carrier->m_actual_x);
+		tp_carrier_data->set_actual_y(tp_carrier->m_actual_y);
+		tp_carrier_data->set_actual_z(tp_carrier->m_actual_z);
+		tp_carrier_data->set_actual_y1(tp_carrier->m_actual_y1);
+		tp_carrier_data->set_actual_y2(tp_carrier->m_actual_y2);
+		tp_carrier_data->set_actual_clamp_motion1((message::Clamp_motion)tp_carrier->m_actual_clamp_motion1);
+		tp_carrier_data->set_actual_clamp_motion2((message::Clamp_motion)tp_carrier->m_actual_clamp_motion2);
+		tp_carrier_data->set_actual_small_sports_car_motion((message::Small_sports_car_motion)tp_carrier->m_actual_small_sports_car_motion);
+		tp_carrier_data->set_actual_joint_motion_x1((message::Joint_motion)tp_carrier->m_actual_joint_motion_x1);
+		tp_carrier_data->set_actual_joint_motion_x2((message::Joint_motion)tp_carrier->m_actual_joint_motion_x2);
+
+		std::string t_actual_error_code((char*)tp_carrier->m_actual_error_code, 50);
+		tp_carrier_data->set_actual_error_code(t_actual_error_code);
+		std::string t_actual_warning_code((char*)tp_carrier->m_actual_warning_code, 50);
+		tp_carrier_data->set_actual_error_code(t_actual_warning_code);
+		tp_carrier_data->set_actual_error_code(tp_carrier->m_actual_error_description);
+	}
+
+
+	t_msg = t_dispatch_manager_status_msg.SerializeAsString();
+	System_communication::get_instance_references().encapsulate_msg(t_msg);
+//	std::cout << " huli test :::: " << " 12312312312312 = " << t_dispatch_manager_status_msg.DebugString() << std::endl;
+//	std::cout << " huli test :::: " << " 123123ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg12312312 = " << 123 << std::endl;
+
+	return Error_code::SUCCESS;
+}
+
+
 //判断是否为待机,如果已经准备好,则可以执行任务。
 bool System_executor::is_ready()
 {

+ 2 - 0
system/system_executor.h

@@ -62,6 +62,8 @@ public://API functions
 
 	//定时发送状态信息
 	Error_manager encapsulate_send_status();
+	//定时发送 调度管理的状态
+	Error_manager encapsulate_send_dispatch_manager_status();
 
 	//判断是否为待机,如果已经准备好,则可以执行任务。
 	bool is_ready();