Browse Source

complete driver_lidar_leishen_chx.

yuchuli 1 year ago
parent
commit
9a5b0bf87c

+ 18 - 3
src/driver/driver_lidar_leishen_chx/leishenchx.cpp

@@ -57,6 +57,7 @@ leishenchx::leishenchx(char * strmemname,double froll,double finclinationang_xax
 
     initialize();
 
+    std::cout<<"lidar_type: "<<lidar_type<<std::endl;
     mplidarudp = new lidarudp(nDataPort);
     mplidardevudp = new lidarudp(nDevPort);
     mpthreaddev = new std::thread(&leishenchx::threaddevdecode,this);
@@ -795,6 +796,8 @@ int leishenchx::convertCoordinate(struct Firing &lidardata) {
     double cos_xita_F;
     double sin_xita_F;
 
+    static int64_t noldpactime = std::chrono::system_clock::now().time_since_epoch().count();
+
 //    static int nprint = 0;
 //    if(nprint<20000)
 //    {
@@ -959,12 +962,24 @@ int leishenchx::convertCoordinate(struct Firing &lidardata) {
     if (pcl_type) {
         static int g_seq = 0;
         static int nround = 0;
-        if((lidardata.azimuth - noldaz)<-9000)
+
+        bool bshare = false;
+
+        int64_t nnow = std::chrono::system_clock::now().time_since_epoch().count();
+ //       std::cout<<" now: "<<nnow<<" npac time:" <<noldpactime<<std::endl;
+        if(abs(nnow - noldpactime)>100000000)
         {
-            nround++;
+            noldpactime =  nnow;
+            bshare = true;
         }
 
-        if(nround >= 4)
+//        if((lidardata.azimuth - noldaz)<-9000)
+//        {
+//            nround++;
+//        }
+
+//        if(nround >= 4)
+        if(bshare)
         {
             std::cout<< std::chrono::system_clock::now().time_since_epoch().count()/1000000 <<" share point cloud."<<std::endl;
             ProduceCloud(point_cloud_xyzi_);

+ 3 - 1
src/driver/driver_lidar_leishen_chx/main.cpp

@@ -218,7 +218,7 @@ int main(int argc, char *argv[])
     snprintf(gstr_devmode,255,"0");//默认端口号
     snprintf(gstr_yaml,255," ");
     snprintf(gstr_modulename,255,"driver_lidar_leishenc16");
-    snprintf(gstr_devtype,255,"ch128x1");
+    snprintf(gstr_devtype,255,"ch128x1");  //ch128x1  cb64s1_a
 
     int nRtn = GetOptLong(argc,argv);
     if(nRtn == 1)  //show help,so exit.
@@ -231,6 +231,8 @@ int main(int argc, char *argv[])
         decodeyaml(gstr_yaml);
     }
 
+    std::cout<<" lidar type: "<<gstr_devtype<<std::endl;
+
     leishenchx * pleishenchx = new leishenchx(gstr_memname,atof(gstr_rollang),atof(gstr_inclinationang_xaxis),
                                              atof(gstr_inclinationang_yaxis),atoi(gstr_devmode),static_cast<unsigned short>(atoi(gstr_port)),
                                              static_cast<unsigned short>(atoi(gstr_devport)),std::string(gstr_devtype));