wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2853|回復: 0
打印 上一主題 下一主題
收起左側

ROS中激光雷達數據處理之特征提取 源程序

[復制鏈接]
跳轉到指定樓層
樓主
   ROS中激光雷達的數據就是一串距離值,每隔1度一個距離值(具體情況得看激光雷達的參數),通過實測激光雷達的數據提取關鍵特征,直線,圓弧

  1. // 進行多邊形擬合: Points : 輪廓上的點      n -- 輪廓點數目  Eps -- 擬合精度
  2. // 返回值: 若該輪廓段需要分段,則返回分段點在該輪廓點列中的索引,否則,返回 0 表示不需要分段
  3. // 這里是整個算法計算復雜性最大的一個地方
  4. // 為了提高程序運行效率,對點到直線的距離計算進行改進:
  5. // 多邊形擬合中的直線是由點列中的點決定的
  6. // 為了計算點到直線的距離,
  7. // 采用坐標系旋轉,將直線旋轉到x軸方向,這樣點到直線的距離即為各個點
  8. // 在坐標旋轉后的y值的絕對值
  9. // 同時,坐標旋轉矩陣在該次運算中為定值,只需一次計算,不需要多次的開方或三角計算
  10. int OpenRadar::PolyContourFit( int* X, int* Y, int n , float Eps ) // 根據輪廓點,用多邊形擬合該輪廓點   
  11. {
  12.     double dis = sqrt((double)(((X[0] - X[n - 1])*(X[0] - X[n - 1])) +  
  13.                      ((Y[0] - Y[n - 1])* (Y[0] - Y[n - 1]))));
  14.     double cosTheta = (X[n- 1] - X[0]) / dis;
  15.     double sinTheta = - ( Y[n- 1] - Y[0] )/dis;
  16.     double MaxDis = 0;
  17.     int i ;
  18.     int MaxDisInd = -1;
  19.     double dbDis;
  20.     for(i = 1 ; i < n - 1 ; i++)
  21.     {
  22.         // 進行坐標旋轉,求旋轉后的點到x軸的距離
  23.         dbDis = abs( (Y[i] - Y[0]) * cosTheta + (X[i] - X[0])* sinTheta);
  24.         if( dbDis > MaxDis)
  25.         {
  26.             MaxDis = dbDis;
  27.             MaxDisInd = i;
  28.         }
  29.     }
  30.     if(MaxDis > Eps)
  31.     {
  32.         return MaxDisInd;
  33.         //        cout << "Line 1 : " << endl;
  34.         //        cout << "Start :" << Points[0].x << "  " << Points[0].y  << " --- " << Points[MaxDisInd].x << "  " << Points[MaxDisInd].y << endl;
  35.         //        cout << "角度: "<<180 * atan2(Points[0].y - Points[MaxDisInd].y , Points[0].x - Points[MaxDisInd].x ) / 3.1415926;
  36.         //        cout << "Line 2 :" << endl;
  37.         //        cout << "Start :" << Points[MaxDisInd].x << "  " << Points[MaxDisInd].y  << " --- " << Points[n - 1].x << "  " << Points[n - 1].y << endl;
  38.         //        cout << "角度: "<< 180 * atan2(Points[n - 1].y - Points[MaxDisInd].y , Points[n - 1].x - Points[MaxDisInd].x ) / 3.1415926;
  39.     }
  40.     //    else{
  41.     //        cout << "Line 1 : " << endl;
  42.     //        cout << "Start :" << Points[0].x << "  " << Points[0].y  << " --- " << Points[n - 1].x << "  " << Points[n - 1].y << endl;
  43.     //        cout << "角度: "<<180 * atan2(Points[n - 1].y - Points[0].y , Points[n - 1].x - Points[0].x ) / 3.1415926;

  44.     //    }
  45.     return 0;
  46. }

  47. //將折線拆成兩段
  48. int OpenRadar::BreakPolyLine(vector<int>& BreakedRadarRho,
  49.                              vector<double>& BreakedRadarTheta,
  50.                              vector<int>& SepRadarRho ,   
  51.                              vector<double>&SepRadarTheta)
  52. {
  53.     int rho = 0;
  54.     double theta = 0.0;
  55.     int X[1200] = {0};
  56.     int Y[1200] = {0};
  57.     int rhoCopy[1200] = {0};
  58.     double thetaCopy[1200] = {0};
  59.     int pointCnt = 0;
  60.     int lineCnt = 0;
  61.     int N = 0;
  62.     SepRadarRho.clear();
  63.     SepRadarTheta.clear();
  64.     Corners.clear();

  65.     //進行多次迭代,將所有的折線都拆分成直線段
  66.    
  67.    vector<int>CornerIndex;
  68.    int CornerCnt = 0;
  69.    int tempIndex = 0;
  70.     for (int i = 0; i < static_cast<int>(BreakedRadarRho.size());i++)
  71.     {
  72.         rho   = BreakedRadarRho.at(i);
  73.         theta = BreakedRadarTheta.at(i);

  74.         if (rho < 0)
  75.         {
  76.             if (pointCnt > 200)//數目比較少的點直接拋棄
  77.             {
  78.                 CornerIndex.clear();
  79.                 CornerCnt = FindCorners(CornerIndex,X,Y,0,pointCnt,200);

  80.                 if (CornerIndex.size() == 0)
  81.                 {
  82.                     for (int k = 0 ; k < pointCnt;k++)
  83.                     {
  84.                         SepRadarRho.push_back(rhoCopy[k]);
  85.                         SepRadarTheta.push_back(thetaCopy[k]);
  86.                     }
  87.                     SepRadarRho.push_back(-1);
  88.                     SepRadarTheta.push_back(1000.0);
  89.                     lineCnt++;
  90.                 }else
  91.                 {
  92.                     tempIndex = 0;
  93.                     for (int k = 0 ; k < pointCnt;k++)
  94.                     {
  95.                         SepRadarRho.push_back(rhoCopy[k]);
  96.                         SepRadarTheta.push_back(thetaCopy[k]);
  97.                         if (k == CornerIndex.at(tempIndex))
  98.                         {
  99.                             SepRadarRho.push_back(-1);
  100.                             SepRadarTheta.push_back(1000.0);
  101.                             lineCnt++;
  102.                             if (tempIndex < static_cast<int>(CornerIndex.size()) -1)
  103.                             {
  104.                                 tempIndex++;
  105.                             }  
  106.                         }
  107.                     }
  108.                     SepRadarRho.push_back(-1);
  109.                     SepRadarTheta.push_back(1000.0);
  110.                     lineCnt++;
  111.                 }
  112.             }
  113.             pointCnt = 0;
  114.             continue;
  115.         }
  116.         X[pointCnt] = static_cast<int>(rho*cos(theta));
  117.         Y[pointCnt] = static_cast<int>(rho*sin(theta));
  118.         rhoCopy[pointCnt]   = rho;
  119.         thetaCopy[pointCnt] = theta;
  120.         pointCnt++;
  121.     }
  122.    
  123.     //cout<<"lineCnt: "<<lineCnt<<endl;
  124.     return lineCnt;
  125. }

  126. //進行直線擬合
  127. void OpenRadar::FitLine(vector<LinePara>& FittedLine,vector<int>& RadarRho,vector<double>& RadarTheta){

  128.     int rho = 0;
  129.     double theta = 0.0;
  130.     int X[1200] = {0};
  131.     int Y[1200] = {0};
  132.     int pointCnt = 0;
  133.     LinePara tmpLinePara;
  134.     FittedLine.clear();
  135.     for (int i = 0 ; i < static_cast<int>(RadarRho.size());i++)
  136.     {
  137.         rho = RadarRho.at(i);
  138.         theta = RadarTheta.at(i);

  139.         if (rho < 0)
  140.         {
  141.             if (pointCnt > 100 )//點數目足夠多的點列才進行直線擬合
  142.             {
  143.                 WeightedFit(X ,Y ,pointCnt,&tmpLinePara);
  144.                 FittedLine.push_back(tmpLinePara);

  145.                 //存儲擬合的數據和擬合結果
  146.        /*         FILE* pF = fopen("line.txt","w");
  147.                 fprintf(pF,"[a]\n");
  148.                 fprintf(pF,"%f\n",tmpLinePara.a);
  149.                 fprintf(pF,"[b]\n");
  150.                 fprintf(pF,"%f\n",tmpLinePara.b);
  151.                 fprintf(pF,"[x]\n");
  152.                 for (int j = 0; j < pointCnt ;j++)
  153.                 {
  154.                     fprintf(pF,"%d,",X[j]);
  155.                 }
  156.                 fprintf(pF,"\n[y]\n");
  157.                 for (int j = 0; j < pointCnt ;j++)
  158.                 {
  159.                     fprintf(pF,"%d,",Y[j]);
  160.                 }
  161.                 fclose(pF);*/

  162.                 pointCnt = 0;
  163.                 continue;
  164.             }else {
  165.                 pointCnt = 0;
  166.                 continue;
  167.             }   
  168.         }

  169.         X[pointCnt] = static_cast<int>(rho*cos(theta));
  170.         Y[pointCnt] = static_cast<int>(rho*sin(theta));
  171.         pointCnt++;
  172.     }
  173.    /* for (int i = 0; i < FittedLine.size();i++)
  174.     {
  175.         cout<<"a: "<<FittedLine.at(i).a<<"  b: "<<FittedLine.at(i).b<<" ";
  176.         cout<<"x1: "<<FittedLine.at(i).startPoint.x<<" "
  177.             <<"y1: "<<FittedLine.at(i).startPoint.y<<" "
  178.             <<"x1: "<<FittedLine.at(i).endPoint.x<<" "
  179.             <<"y1: "<<FittedLine.at(i).endPoint.y<<endl;
  180.     }*/

  181. }
復制代碼


以上代碼: OpenRadar7.0.zip (25.96 KB, 下載次數: 13)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
91 中文字幕| 久久国产精品免费| 粉嫩久久久久久久极品| 电影一区二区| 亚洲伦乱视频| 久久xxx视频| 国精品日韩欧美一区二区三区| 国产乱人乱偷精品视频| 国模私拍一区二区| 国产亚洲久一区二区| 久久久精品毛片| 天天干天天干天天干天天| 国产成人无码精品| 性色av免费观看| 亚洲av无码乱码国产精品fc2| 无码免费一区二区三区| 一级特黄色大片| www国产一区| 婷婷五月综合久久中文字幕| 中文字幕先锋av影音资源网| 欧美性猛交xxxxbbbb| 国产美女在线看| 免费看又色又爽又黄网站| 狠狠色噜噜狠狠狠狠888奇米| eeuss影院www天堂免费| 人成网站免费观看| 色播在线观看| 在线激情小视频| 欧美女同一区| 草民电影神马电影一区二区| 日本99精品| 国产亚洲一卡2卡3卡4卡新区| 第九色区aⅴ天堂久久香| 中文视频一区| 日韩va欧美va亚洲va久久| 国产精品一区久久久久| 99久久99久久久精品齐齐| 国产精品久久久久久久岛一牛影视| 亚洲欧美日韩电影| 色欧美88888久久久久久影院| 欧美精品在线视频| 国产午夜精品一区理论片飘花| 一本色道久久88精品综合| 欧美国产精品va在线观看| 日韩av色在线| 国产精品我不卡| 一区二区不卡在线观看| 免费成人在线视频网站| 99中文字幕在线| 91精品国自产在线| 在线观看黄网站| 亚洲精品视频专区| 一个人看的www在线免费观看| 亚洲综合网在线| 国产欧美日韩另类| 亚洲产国偷v产偷v自拍涩爱| 国产在线第一页| 成年人福利视频| 69av在线| 欧美成人福利| 欧美3p视频| 久久99精品国产.久久久久| 国产视频不卡一区| 色狠狠桃花综合| 精品视频—区二区三区免费| 97精品国产97久久久久久春色| 91久久国产自产拍夜夜嗨| 中国成人亚色综合网站| 婷婷丁香激情网| 精品在线观看一区| 国产乱淫av片免费| 日本丰满www色| 欧洲视频在线免费观看| 日韩中文影院| 欧美肥老太太性生活| 国模一区二区三区白浆| 一区二区三区精品视频| 欧美精品一区二区精品网| 久久久亚洲成人| 欧美精品123| 国产福利精品一区二区三区| 成人涩涩小片视频日本| 黑人精品一区二区三区| 午夜爽爽爽男女免费观看影院| 精产国品自在线www| 777久久精品| 美女精品在线观看| 中文字幕在线观看一区| 精品女同一区二区| 国产精品美女久久久免费| 欧美日韩在线免费观看视频| 男人添女人荫蒂国产| 日韩免费黄色片| 国产精品视频福利一区二区| 国产午夜精品一区理论片| 57pao成人永久免费| 伊人精品视频在线观看| 成人免费看片| 欧美成人性战久久| 伊人网视频在线| 蜜桃免费网站一区二区三区 | 色94色欧美sute亚洲线路二| 91视频在线| 8888在线观看免费www| h片在线免费| 欧美午夜寂寞| 激情综合色综合久久| 亚洲一区在线视频观看| 在线视频日本亚洲性| 成人欧美一区二区三区视频xxx| 亚洲 欧美 日韩 国产综合 在线 | 一区二区三区在线视频观看58| 亚洲国产私拍精品国模在线观看| 成人av番号网| 可以免费观看av毛片| 男的操女的网站| 欧美a一片xxxx片| 国产在线视频你懂得| eeuss国产一区二区三区四区| 日产国产欧美视频一区精品| 欧美日韩视频在线| 久久久久久久久久久人体| 一区二区三区四区免费视频| 永久免费av无码网站性色av| 美女把尿口扒开让男人桶在线观看 | 88av在线视频| 中国大陆高清aⅴ毛片| 99精品国产九九国产精品| 男人的天堂久久精品| 91国偷自产一区二区三区成为亚洲经典 | 五月天婷婷综合社区| 一区二区三区| 国产一本一道久久香蕉| 欧美成人在线直播| 精品亚洲欧美日韩| 黄色正能量网站| 天堂在线国产| 999av小视频在线| 麻豆成人在线| 7777精品伊人久久久大香线蕉最新版| 国产日韩欧美在线播放| 免费高清视频在线观看| 色呦呦视频在线| 中文国产字幕在线观看| 99re国产精品| 欧美最猛性xxxxx直播| 91精品免费看| 岛国av免费观看| 四虎网站在线观看| 天堂中文在线播放| 看国产成人h片视频| 日韩欧美国产一区二区三区| 国产精品久久久久久久免费大片 | 国产经典自拍视频在线观看| 天天影视天天精品| 中文字幕精品影院| 日韩在线观看视频免费| 国产精品国产三级国产aⅴ入口| 中文字幕亚洲欧美日韩2019| eeuss中文| 国产九色在线播放九色| 日本成在线观看| 欧美军人男男激情gay| 亚洲精品免费一二三区| 国产福利精品在线| 丰满岳乱妇一区二区| 国产野外战在线播放| 日韩欧美少妇| 成人av动漫在线| xxx一区二区| 精品久久久久久无码国产| 六月丁香综合网| av免费不卡国产观看| 国模娜娜一区二区三区| 国产亚洲精品综合一区91| 成人免费看片'免费看| 中文字幕一区二区久久人妻| 午夜激情视频在线观看| 日韩黄色免费电影| 国产一区二区三区在线观看网站| 国产av天堂无码一区二区三区| av一区二区三| 捆绑调教日本一区二区三区| 成人av在线资源| 午夜精品一区二区三区在线播放| 杨幂一区二区国产精品| 国内精品免费一区二区三区| 日本99精品| 午夜婷婷国产麻豆精品| 国产一区二区高清不卡| 日韩欧美亚洲一区二区三区| 黄色片在线免费看| 奇米888四色在线精品| 在线视频免费一区二区| 91 视频免费观看| 日产乱码一卡二卡三免费| 日本国产精品| 欧美在线一二三| 91社在线播放| 日本精品999| www.欧美视频| 丰满岳妇乱一区二区三区| 久久综合伊人77777麻豆| 国产精品va无码一区二区三区| 免费**毛片在线| 国产91精品在线观看| 欧美性受xxxx白人性爽| 欧美日韩精品免费观看| 影音先锋在线国产| 青草影视电视剧免费播放在线观看| 国产91在线|亚洲| 国产精品一区二区三区久久 | 成 人 黄 色 小说网站 s色| 成人亚洲欧美激情在线电影| 精品国产一区二区三区四区 | 欧美gv在线观看| 中文子幕无线码一区tr| 亚洲最大av在线| 中文字幕一区二区在线视频| 国产精品高颜值在线观看| 国产蜜臀97一区二区三区| 99精彩视频| 伊人免费在线观看| 午夜精品久久久久久毛片| 亚洲不卡一区二区三区| 一区二区三区国产福利| 五月婷婷一区二区三区| 日韩高清电影免费| 欧美一区二区视频免费观看| 九色porny91| 136福利视频| 葵司免费一区二区三区四区五区| 欧美xxxx综合视频| 肉色超薄丝袜脚交69xx图片| 久热国产在线| 国产精品电影一区二区三区| 日本视频一区二区在线观看| 私人高清影院 强乱中文字| 亚洲综合图色| 亚洲精品福利在线| 蜜臀aⅴ国产精品久久久国产老师| 在线观看高清av| www..com久久爱| 国产亚洲第一区| 免费观看a视频| 精品毛片免费观看| 中文字幕九色91在线| 91社区视频在线观看| 永久免费网站在线| 一区二区三区高清不卡| 丁香色欲久久久久久综合网| 中国女人一级毛片| 亚洲欧美日韩专区| 国产精品69久久| 亚洲天堂中文在线| 欧美日韩一区二区三区不卡视频| 亚洲电影在线观看| 永久免费看mv网站入口78| 日本在线观看免费| 亚洲情趣在线观看| 人妻激情另类乱人伦人妻| 麻豆视频官网| 国产成人精品www牛牛影视| 99re在线观看视频| 香蕉视频国产在线| 伊人久久大香线蕉精品组织观看| 欧美区二区三区| 亚洲图片欧美日韩| 欧美绝顶高潮抽搐喷水合集| 亚洲精选中文字幕| 91n在线视频| 成人性生交大片免费观看网站| 色一情一乱一乱一91av| 人人爽人人爽av| 69视频在线观看| 亚洲电影在线免费观看| 成人免费视频久久| 国产xxx视频| 国产xxx在线观看| 亚洲欧美日韩精品久久亚洲区| 91精品国产成人观看| 黄色av免费看| www.黄在线| 日韩在线一区二区三区| 91色在线视频| 激情综合丝袜美女一区二区| 国产一区二区三区四区三区四 | 国模精品系列视频| 日日夜夜狠狠操| 亚洲精品亚洲人成在线| 伦伦影院午夜日韩欧美限制| 国产乱码久久久久久| 4438全国亚洲精品观看视频| 国产传媒日韩欧美成人| 国产欧美精品一区二区色综合朱莉| 久久精品国产99精品国产亚洲性色| 久热久热免费视频中文字幕777| 国产一区二区三区成人欧美日韩在线观看| 国产精品永久在线| 影音先锋在线资源中文字幕| 麻豆91精品| 精品视频免费观看| 九色蝌蚪自拍| 91麻豆蜜桃一区二区三区| 激情六月天婷婷| 中出在线观看| 香蕉成人啪国产精品视频综合网| 久久久久久久久久久影视| av在线小说| 亚洲国产精品一区二区三区| 欧美精品99久久久| 操操操干干干| 欧美国产综合色视频| 欧美伦理片在线看| sm国产在线调教视频| 欧美日本韩国一区二区三区视频| 免费在线观看污| 欧美视频三区| 欧美精品xxx| 美女视频一区二区三区在线| 美女网站一区二区| 国产精品12p| 国产在线观看网站| 777奇米四色成人影色区| 欧美成人精品欧美一级私黄| 狠狠色丁香婷婷综合影院| 国产精品色午夜在线观看| 99久久99久久免费精品小说| 久久久亚洲精品石原莉奈| caoporn超碰97| 亚洲国产欧美日本视频| 一区二区在线视频播放| 国产男女裸体做爰爽爽| 视频在线观看国产精品| 国产精品啪啪啪视频| 国产在线视频你懂得| 91精品国产一区二区三区| 国产无遮挡aaa片爽爽| 欧美一区高清| 欧美日韩一区二区三区在线观看免| 超碰在线公开超碰在线| 欧美亚洲日本一区| 青春草免费视频| 婷婷亚洲五月色综合| 麻豆亚洲一区| 男人av在线| 亚洲二区在线播放视频| 亚洲天堂网视频| 韩国视频一区二区| 国产精品欧美激情在线观看| 色在线视频观看| 欧美日韩国产成人在线观看| 中文岛国精品亚洲一区| 国产日韩亚洲欧美综合| 少妇一级淫片免费放播放| 猫咪成人在线观看| 国产精品毛片va一区二区三区| 女人高潮特级毛片| 欧美日韩国产一级二级| 无码人妻精品一区二区三区9厂 | 成人av网站免费| 亚洲少妇一区二区三区| 高清精品xnxxcom| 亚洲自拍欧美另类| 992tv在线观看免费进| 欧美一区二区三区四区高清| 91黄色在线视频| 国产精品伊人色| 一级做a免费视频| 2023国产精华国产精品| 成人欧美一区二区三区在线观看| 亚洲pron| 国产视频欧美视频| 亚洲wwwwww| 国产精品素人一区二区| 久久午夜精品视频| 国产精品观看| 三上悠亚久久精品| 亚洲天堂一区二区| 国产精品欧美风情| 麻豆影视在线观看| 亚洲第一精品福利| 午夜性爽视频男人的天堂| 国产精品人妖ts系列视频| 久久精品国产亚洲AV成人婷婷| 综合在线一区| 欧美啪啪免费视频| 精品一区二区三区中文字幕视频| 亚洲free嫩bbb| 国产在线视频网址| 中文字幕自拍vr一区二区三区| 国产真实乱全部视频| 日本韩国欧美国产| 国产精品无码久久久久成人app| 9i在线看片成人免费| 无码一区二区三区在线| 欧美午夜a级限制福利片| 日韩欧美视频网站| 91麻豆精品国产91久久久久推荐资源| 国产伦精品一区二区三|