Explorar o código

合并huli到zzw_sift, 未测试

zx %!s(int64=5) %!d(string=hai) anos
pai
achega
5e90eedf8b

+ 2 - 2
error_code/error_code.cpp

@@ -33,9 +33,9 @@ Error_manager::Error_manager(const Error_manager & error_manager)
 Error_manager::Error_manager(Error_code error_code, Error_level error_level,
     const char* p_error_description, int description_length)
 {
-    pm_error_description=NULL;
     m_error_code = error_code;
     m_error_level = error_level;
+    pm_error_description = NULL;
     m_description_length = 0;
     reallocate_memory_and_copy_string(p_error_description, description_length);
     return ;
@@ -43,9 +43,9 @@ Error_manager::Error_manager(Error_code error_code, Error_level error_level,
 //赋值构造
 Error_manager::Error_manager(Error_code error_code, Error_level error_level , std::string & error_aggregate_string)
 {
-    pm_error_description=NULL;
     m_error_code = error_code;
     m_error_level = error_level;
+    pm_error_description = NULL;
     m_description_length = 0;
     reallocate_memory_and_copy_string(error_aggregate_string);
     return ;

+ 55 - 3
error_code/error_code.h

@@ -85,7 +85,8 @@ enum Error_code
 
     LASER_LIVOX_SKD_INIT_FAILED,
 
-//    livox子类
+
+//    laser_livox.cpp的错误码
     LIVOX_ERROR_BASE                = 0x01020000,
     LIVOX_START_FAILE               = 0x01020101,
 	LIVOX_TASK_TYPE_ERROR,							//livox任务类型错误
@@ -114,8 +115,6 @@ enum Error_code
     LOCATER_Y_OUT_RANGE_BY_PLC,
     LOCATER_MEASURE_HEIGHT_CLOUD_UNINIT,
     LOCATER_MEASURE_HEIGHT_CLOUD_EMPTY,
-    LOCATER_HEIGHT_OUT_RANGE,
-    LOCATER_ANGLE_OUT_RANGE,
     LOCATER_INPUT_CLOUD_UNINIT,
 
 
@@ -144,6 +143,7 @@ enum Error_code
     LOCATER_3DCNN_KMEANS_FAILED,
     LOCATER_3DCNN_IIU_FAILED,
     LOCATER_3DCNN_INPUT_CLOUD_EMPTY,
+    LOCATER_3DCNN_PCA_OUT_CLOUD_EMPTY,
 
     //System_manager error from 0x04010000-0x0401FFFF
     SYSTEM_READ_PARAMETER_ERROR=0x04010100,
@@ -153,12 +153,64 @@ enum Error_code
     //terminor_command_executor.cpp from 0x04010200-0x040102FF
     TERMINOR_NOT_READY=0x04010200,
     TERMINOR_INPUT_LASER_NULL,
+    TERMINOR_NOT_CONTAINS_LASER,
     TERMINOR_INPUT_PLC_NULL,
     TERMINOR_INPUT_LOCATER_NULL,
     TERMINOR_CREATE_WORKING_THREAD_FAILED,
     TERMINOR_FORCE_QUIT,
     TERMINOR_LASER_TIMEOUT,
     TERMINOR_POST_PLC_TIMEOUT,
+    TERMINOR_CHECK_RESULTS_ERROR,
+
+    ////Hardware limit from 0x05010000 - 0x0501ffff
+    ///railing.cpp from 0x05010100-0x050101ff
+    HARDWARE_LIMIT_LEFT_RAILING=0x05010100,         //左栏杆限制
+    HARDWARE_LIMIT_RAILING_PARAMETER_ERROR,
+    HARDWARE_LIMIT_RAILING_ERROR,
+    HARDWARE_LIMIT_CENTER_X_LEFT,
+    HARDWARE_LIMIT_CENTER_X_RIGHT,
+    HARDWARE_LIMIT_CENTER_Y_TOP,
+    HARDWARE_LIMIT_CENTER_Y_BOTTOM,
+    HARDWARE_LIMIT_HEIGHT_OUT_RANGE,
+    HARDWARE_LIMIT_ANGLE_OUT_RANGE,
+    //termonal_limit from 0x05010200-0x050102ff
+    HARDWARE_LIMIT_TERMINAL_LEFT_ERROR,
+    HARDWARE_LIMIT_TERMINAL_RIGHT_ERROR,
+    HARDWARE_LIMIT_TERMINAL_LR_ERROR,
+
+
+    //wj_lidar error from 0x06010000-0x0601FFFF
+        WJ_LIDAR_CONNECT_FAILED=0x06010000,
+    WJ_LIDAR_UNINITIALIZED,
+    WJ_LIDAR_READ_FAILED,
+    WJ_LIDAR_WRITE_FAILED,
+    WJ_LIDAR_GET_CLOUD_TIMEOUT,
+
+    //wj lidar protocol error from 0x06020000-0x0602FFFF
+        WJ_PROTOCOL_ERROR_BASE=0x06020000,
+    WJ_PROTOCOL_INTEGRITY_ERROR,
+    WJ_PROTOCOL_PARSE_FAILED,
+    WJ_PROTOCOL_EMPTY_PACKAGE,
+    WJ_PROTOCOL_EXCEED_MAX_SIZE,
+
+    //wj region detect error from 0x06030000-0x0603FFFF
+        WJ_REGION_EMPTY_CLOUD=0x06030000,
+    WJ_REGION_RECTANGLE_ANGLE_ERROR,
+    WJ_REGION_RECTANGLE_SIZE_ERROR,
+    WJ_REGION_RECTANGLE_SYMMETRY_ERROR,
+    WJ_REGION_CLUSTER_SIZE_ERROR,
+
+    //wj manager error from 0x06040000-0x0604FFFF
+    WJ_MANAGER_UNINITIALIZED=0x06040000,
+    WJ_MANAGER_LIDAR_DISCONNECTED,
+    WJ_MANAGER_PLC_DISCONNECTED,
+    WJ_MANAGER_EMPTY_CLOUD,
+
+    WJ_LIDAR_TASK_EMPTY_RESULT=0x06050000,
+    WJ_LIDAR_TASK_EMPTY_TASK,
+    WJ_LIDAR_TASK_WRONG_TYPE,
+    WJ_LIDAR_TASK_INVALID_TASK,
+    WJ_LIDAR_TASK_MEASURE_FAILED,
 
 
 

+ 0 - 3
laser/Laser.cpp

@@ -248,8 +248,6 @@ Error_manager Laser_base::set_open_save_path(std::string save_path,bool is_save)
 		char bin_file[255] = { 0 };
 		sprintf(bin_file, "%s/laser%d.data", save_path.c_str(), m_laser_id+1);
 		m_binary_log_tool.open(bin_file,true);
-		std::cout << "huli m_binary_log_tool path "<< bin_file << std::endl;
-
 		return Error_code::SUCCESS;
 	}
 }
@@ -298,7 +296,6 @@ void Laser_base::thread_receive()
 				//将缓存 存入队列。
 				//thread_receive存入前要手动分配内存,thread_transform取出后要记得释放。
 				m_queue_laser_data.push(tp_binaty_buf);
-				std::cout << "huli thread_receive " << m_queue_laser_data.size() << std::endl;
 			}
 			else
 			{

+ 0 - 6
laser/Laser.puml

@@ -1,13 +1,7 @@
 @startuml
 skinparam classAttributeIconSize 0
 
-<<<<<<< HEAD
 title  Laser_base  雷达的基类
-=======
-title  Laser_base
->>>>>>> origin/hl
-
-
 
 enum Laser_statu
 {

+ 10 - 2
laser/laser_task_command.cpp

@@ -171,8 +171,16 @@ void Laser_task::set_task_error_manager(Error_manager & error_manager)
     m_task_error_manager = error_manager;
 }
 
-
-
+//获取采集的点云保存路径
+std::string Laser_task::get_save_path()
+{
+    return m_save_path;
+}
+//设置采集的点云保存路径
+void Laser_task::set_save_path(std::string save_path)
+{
+    m_save_path=save_path;
+}
 
 
 

+ 6 - 0
laser/laser_task_command.h

@@ -83,11 +83,17 @@ public:
     //设置 错误码
     void set_task_error_manager(Error_manager & error_manager);
 
+    //获取采集的点云保存路径
+    std::string get_save_path();
+    //设置采集的点云保存路径
+    void set_save_path(std::string save_path);
 
 protected:
     //点云的采集帧数最大值,任务输入
     unsigned int                    m_task_frame_maxnum;
 
+    std::string                     m_save_path;
+
     //点云保存文件的路径,任务输入
     std::string                     m_task_save_path;
 

+ 1 - 1
system_manager/System_Manager.cpp

@@ -135,7 +135,7 @@ Error_manager System_Manager::init()
                                                       laser_parameters.laser_parameters(i));
         if(m_laser_vector[i]!=NULL)
         {
-            if(!m_laser_vector[i]->Connect())
+            if(m_laser_vector[i]->connect_laser()!=SUCCESS)
             {
                 char description[255]={0};
                 sprintf(description,"Laser %d connect failed...",i);

+ 5 - 4
task/task_command_manager.h

@@ -10,10 +10,11 @@
 //任务类型
 enum Task_type
 {
-	UNKNOW_TASK             =0,				//未知任务单//初始化,默认值
-	LASER_TASK              =1,             //雷达扫描任务,
-    LOCATE_TASK             =2,             //测量任务
-    PLC_TASK                =3,             //上传PLC任务
+    LASER_TASK=0,           //雷达扫描任务
+    LOCATE_TASK,            //测量任务
+    PLC_TASK,                //上传PLC任务
+    WJ_TASK,
+    UNKNOW_TASK             //未知任务单/初始化
 };
 //任务状态,如果任务故障,任务状态改为TASK_OVER,然后在m_task_error_manager 补充错误码。
 enum Task_statu

+ 2 - 2
terminor/terminal_command_executor.cpp

@@ -128,7 +128,7 @@ Error_manager Terminor_Command_Executor::execute_command(std::vector<Laser_base*
     //第二步,雷达,plc以及定位模块是否能正常接收指令;
     for(int i=0;i<lasers.size();++i)
     {
-        code=lasers[i]->check_error();
+        code=lasers[i]->check_laser();
         if(code!=SUCCESS)
         {
             LOG(ERROR)<<" terminor check laser error:"<<code.to_string()<<"   terminor id :"<<m_terminor_parameter.id();
@@ -348,7 +348,7 @@ Error_manager Terminor_Command_Executor::scanning_measuring()
                 Laser_task* laser_task=new Laser_task();
                 //
                 laser_task->task_init(TASK_CREATED,scan_cloud,&cloud_lock);
-                laser_task->set_task_points_number(frame_count);
+                laser_task->set_task_frame_maxnum(frame_count);
                 laser_task->set_save_path(project_path);
                 laser_task_vector.push_back(laser_task);
                 //发送任务单给雷达

+ 48 - 44
tool/pathcreator.cpp

@@ -4,7 +4,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <time.h>
-#include "../error_code/error_code.h"
 #include <stdint.h>
 #include <stdio.h>
 
@@ -18,73 +17,78 @@ PathCreator::~PathCreator()
 
 }
 
-int PathCreator::GetCurPath(std::string& path)
-{
-     path=m_current_path;
-     return SUCCESS;
-}
 std::string PathCreator::GetCurPath()
 {
     return m_current_path;
 }
-int PathCreator::Mkdir(std::string dirName)
+bool PathCreator::Mkdir(std::string dirName)
 {
     uint32_t beginCmpPath = 0;
     uint32_t endCmpPath = 0;
     std::string fullPath = "";
 
-        if('/' != dirName[0])
-        {
-            fullPath = getcwd(nullptr, 0);
-            beginCmpPath = fullPath.size();
-            fullPath = fullPath + "/" + dirName;
-        }
-        else
-        {
-            //Absolute path
-            fullPath = dirName;
-            beginCmpPath = 1;
-        }
-        if (fullPath[fullPath.size() - 1] != '/')
-        {
-            fullPath += "/";
-        }
-        endCmpPath = fullPath.size();
+    if('/' != dirName[0])
+    {
+        fullPath = getcwd(nullptr, 0);
+        beginCmpPath = fullPath.size();
+        fullPath = fullPath + "/" + dirName;
+    }
+    else
+    {
+        //Absolute path
+        fullPath = dirName;
+        beginCmpPath = 1;
+    }
+    if (fullPath[fullPath.size() - 1] != '/')
+    {
+        fullPath += "/";
+    }
+    endCmpPath = fullPath.size();
 
-        //create dirs;
-        for(uint32_t i = beginCmpPath; i < endCmpPath ; i++ )
+    //create dirs;
+    for(uint32_t i = beginCmpPath; i < endCmpPath ; i++ )
+    {
+        if('/' == fullPath[i])
         {
-            if('/' == fullPath[i])
+            std::string curPath = fullPath.substr(0, i);
+            if(access(curPath.c_str(), F_OK) != 0)
             {
-                std::string curPath = fullPath.substr(0, i);
-                if(access(curPath.c_str(), F_OK) != 0)
+                if(mkdir(curPath.c_str(), /*S_IRUSR|S_IRGRP|S_IROTH|S_IWUSR|S_IWGRP|S_IWOTH*/0777) == -1)
                 {
-                    if(mkdir(curPath.c_str(), /*S_IRUSR|S_IRGRP|S_IROTH|S_IWUSR|S_IWGRP|S_IWOTH*/0777) == -1)
-                    {
-                        printf("mkdir(%s) failed\n", curPath.c_str());
-                        return FAILED;
-                    }
+                    printf("mkdir(%s) failed\n", curPath.c_str());
+                    return false;
                 }
             }
         }
-        m_current_path=fullPath;
-        return SUCCESS;
+    }
+    m_current_path=fullPath;
+    return true;
 
 }
 
-int PathCreator::CreateDatePath(std::string root)
+bool PathCreator::CreateDatePath(std::string root, bool add_time)
 {
     time_t tt;
     time( &tt );
     tt = tt + 8*3600;  // transform the time zone
     tm* t= gmtime( &tt );
     char buf[255]={0};
-    sprintf(buf,"%s/%d%02d%02d-%02d%02d%02d",root.c_str(),
-               t->tm_year + 1900,
-               t->tm_mon + 1,
-               t->tm_mday,
-               t->tm_hour,
-               t->tm_min,
-               t->tm_sec);
+    if (add_time)
+    {
+        sprintf(buf, "%s/%d%02d%02d-%02d%02d%02d", root.c_str(),
+                t->tm_year + 1900,
+                t->tm_mon + 1,
+                t->tm_mday,
+                t->tm_hour,
+                t->tm_min,
+                t->tm_sec);
+    }
+    else
+    {
+        sprintf(buf, "%s/%d%02d%02d", root.c_str(),
+                t->tm_year + 1900,
+                t->tm_mon + 1,
+                t->tm_mday);
+    }
     return Mkdir(buf);
 }

+ 2 - 3
tool/pathcreator.h

@@ -7,13 +7,12 @@ class PathCreator
 public:
     PathCreator();
     ~PathCreator();
-    int GetCurPath(std::string& path);
-    int Mkdir(std::string dir);
-    int CreateDatePath(std::string root);
     std::string GetCurPath();
+    bool Mkdir(std::string dir);
     bool CreateDatePath(std::string root, bool add_time = true);
 protected:
     std::string m_current_path;
 };
 
+
 #endif // PATHCREATOR_H