色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

自動駕駛激光雷達特征提取

麥辣雞腿堡 ? 來源:古月居 ? 作者:lovely_yoshin ? 2023-11-27 18:17 ? 次閱讀

2.1 激光雷達時間序列

這一幀數據中點的排列順序為從最高的線束到最低的線束進行排列,每條線束之間點按逆時針的順序排列。

目前大部分主流激光雷達應該都可以直接在點云中提供每個點對應的掃描線已經時間戳,所以其實可以不用這種粗略的方法來進行計算。

template <typename PointType>void sortPointCloudByScanLine(boost::shared_ptr<pcl::PointCloud<PointType>>& src_cloud_ptr,                              std::vector<boost::shared_ptr<pcl::PointCloud<PointType>>>& dst_cloud_ptr_vec) {    const int N_SCAN = 64;    dst_cloud_ptr_vec.resize(N_SCAN);    dst_cloud_ptr_vec.clear();    PointType pt;    int line_id;    for (int i = 0; i < src_cloud_ptr->points.size(); ++i) {        pt      = src_cloud_ptr->points[i];        line_id = 0;        double elevation_angle = std::atan2(pt.z, std::sqrt(pt.x * pt.x + pt.y * pt.y)) / M_PI * 180.0;        // adapt from a-loam        if (elevation_angle >= -8.83)            line_id = int((2 - elevation_angle) * 3.0 + 0.5);        else            line_id = 64 / 2 + int((-8.83 - elevation_angle) * 2.0 + 0.5);        if (elevation_angle > 2 || elevation_angle < -24.33 || line_id > 63 || line_id < 0) {            continue;        }        if (dst_cloud_ptr_vec[line_id] == nullptr)            dst_cloud_ptr_vec[line_id] = boost::make_shared<pcl::PointCloud<PointType>>();        dst_cloud_ptr_vec[line_id]->points.push_back(pt);    }}

2.2 三維激光雷達壓縮成二維

void filterGroundPlane(const PCLPointCloud& pc, PCLPointCloud& ground, PCLPointCloud& nonground) const{  ground.header = pc.header;  nonground.header = pc.header;  if (pc.size() < 50){    ROS_WARN("Pointcloud in OctomapServer too small, skipping ground plane extraction");    nonground = pc;  } else {      // https://blog.csdn.net/weixin_41552975/article/details/120428619    // 指模型參數,如果是平面的話應該是指a b c d四個參數值    pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);    pcl::PointIndices::Ptr inliers (new pcl::PointIndices);    // 創建分割對象    pcl::SACSegmentation<PCLPoint> seg;    //可選設置    seg.setOptimizeCoefficients (true);    //必須設置    seg.setModelType(pcl::SACMODEL_PERPENDICULAR_PLANE);    seg.setMethodType(pcl::SAC_RANSAC);    // 設置迭代次數的上限    seg.setMaxIterations(200);    // 設置距離閾值    seg.setDistanceThreshold (0.04);    //設置所搜索平面垂直的軸     seg.setAxis(Eigen::Vector3f(0,0,1));    //設置待檢測的平面模型和上述軸的最大角度    seg.setEpsAngle(0.15);    // pc 賦值    PCLPointCloud cloud_filtered(pc);    //創建濾波器    pcl::ExtractIndices<PCLPoint> extract;    bool groundPlaneFound = false;    while(cloud_filtered.size() > 10 && !groundPlaneFound){         // 所有點云傳入,并通過coefficients提取到所有平面      seg.setInputCloud(cloud_filtered.makeShared());      seg.segment (*inliers, *coefficients);      if (inliers->indices.size () == 0){        ROS_INFO("PCL segmentation did not find any plane.");        break;      }      //輸入要濾波的點云      extract.setInputCloud(cloud_filtered.makeShared());      //被提取的點的索引集合      extract.setIndices(inliers);      if (std::abs(coefficients->values.at(3)) < 0.07){        ROS_DEBUG("Ground plane found: %zu/%zu inliers. Coeff: %f %f %f %f", inliers->indices.size(), cloud_filtered.size(),                  coefficients->values.at(0), coefficients->values.at(1), coefficients->values.at(2), coefficients->values.at(3));        //true:濾波結果取反,false,則是取正        extract.setNegative (false);        //獲取地面點集合,并傳入ground        extract.filter (ground);        // 存在有不是平面的點        if(inliers->indices.size() != cloud_filtered.size()){          extract.setNegative(true);          PCLPointCloud cloud_out;          // 傳入cloud_out          extract.filter(cloud_out);          // 不斷減少cloud_filtered數目,同時累加nonground數目          cloud_filtered = cloud_out;          nonground += cloud_out;        }        groundPlaneFound = true;      } else{ // 否則提取那些不是平面的,然后剩下的就是平面點        ROS_DEBUG("Horizontal plane (not ground) found: %zu/%zu inliers. Coeff: %f %f %f %f", inliers->indices.size(), cloud_filtered.size(),                  coefficients->values.at(0), coefficients->values.at(1), coefficients->values.at(2), coefficients->values.at(3));        pcl::PointCloud<PCLPoint> cloud_out;        extract.setNegative (false);        extract.filter(cloud_out);        nonground +=cloud_out;        if(inliers->indices.size() != cloud_filtered.size()){          extract.setNegative(true);          cloud_out.points.clear();          extract.filter(cloud_out);          cloud_filtered = cloud_out;        } else{          cloud_filtered.points.clear();        }      }    }    // 由于沒有找到平面,則會進入下面    if (!groundPlaneFound){      ROS_WARN("No ground plane found in scan");      // 對高度進行粗略調整,以防止出現虛假障礙物      pcl::PassThrough<PCLPoint> second_pass;      second_pass.setFilterFieldName("z");      second_pass.setFilterLimits(-m_groundFilterPlaneDistance, m_groundFilterPlaneDistance);      second_pass.setInputCloud(pc.makeShared());      second_pass.filter(ground);      second_pass.setFilterLimitsNegative (true);      second_pass.filter(nonground);    }    // Create a set of planar coefficients with X=Y=0,Z=1    pcl::ModelCoefficients::Ptr coefficients1(new pcl::ModelCoefficients());    coefficients1->values.resize(4);    coefficients1->values[0] = 1;    coefficients1->values[1] = 0;    coefficients1->values[2] = 0;    coefficients1->values[3] = 0;    // Create the filtering object    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_projected(new pcl::PointCloud<pcl::PointXYZ>);    pcl::ProjectInliers<pcl::PointXYZ> proj;    proj.setModelType(pcl::SACMODEL_PLANE);    proj.setInputCloud(nonground);    proj.setModelCoefficients(coefficients1);    proj.filter(*cloud_projected);    if (cloud_projected.size() > 0)             writer.write<PCLPoint>("cloud_projected.pcd",cloud_projected, false);  }}

2.3 面特征提取

PCL中Sample——consensus模塊提供了RANSAC平面擬合模塊。

SACMODEL_PLANE 模型:定義為平面模型,共設置四個參數 [normal_x,normal_y,normal_z,d]。其中,(normal_x,normal_y,normal_z)為平面法向量 ( A , B , C )d 為常數項D

//創建分割時所需要的模型系數對象,coefficients及存儲內點的點索引集合對象inliers    pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);    pcl::PointIndices::Ptr inliers(new pcl::PointIndices);    // 創建分割對象    pcl::SACSegmentation<pcl::PointXYZ> seg;    // 可選擇配置,設置模型系數需要優化    seg.setOptimizeCoefficients(true);    // 必要的配置,設置分割的模型類型,所用的隨機參數估計方法,距離閥值,輸入點云    seg.setModelType(pcl::SACMODEL_PLANE); //設置模型類型    seg.setMethodType(pcl::SAC_RANSAC);    //設置隨機采樣一致性方法類型    seg.setDistanceThreshold(0.01);        //設定距離閥值,距離閥值決定了點被認為是局內點是必須滿足的條件                                           //表示點到估計模型的距離最大值,    seg.setInputCloud(cloud);    //引發分割實現,存儲分割結果到點幾何inliers及存儲平面模型的系數coefficients    seg.segment(*inliers, *coefficients);

2.4圓柱體提取

圓柱體的提取也是基于Ransec來實現提取,RANSAC從樣本中隨機抽選出一個樣本子集,使用最小方差估計算法對這個子集計算模型參數,然后計算所有樣本與該模型的偏差。

再使用一個預先設定好的閾值與偏差比較,當偏差小于閾值時,該樣本點屬于模型內樣本點(inliers),簡稱內點,否則為模型外樣本點(outliers),簡稱外點。

cout << "- >正在計算法線..." << endl;    pcl::NormalEstimation<PointT, pcl::Normal> ne;    // 創建法向量估計對象    pcl::search::KdTree<PointT>::Ptr tree(new pcl::search::KdTree<PointT>());    ne.setSearchMethod(tree);                        // 設置搜索方式    ne.setInputCloud(cloud);                        // 設置輸入點云    ne.setKSearch(50);                                // 設置K近鄰搜索點的個數    pcl::PointCloud<pcl::Normal>::Ptr cloud_normals(new pcl::PointCloud<pcl::Normal>);    ne.compute(*cloud_normals);                        // 計算法向量,并將結果保存到cloud_normals中    //=====================================================================    //----------------------------圓柱體分割--------------------------------    cout << "- >正在圓柱體分割..." << endl;    pcl::SACSegmentationFromNormals<PointT, pcl::Normal> seg;        // 創建圓柱體分割對象    seg.setInputCloud(cloud);                                        // 設置輸入點云:待分割點云    seg.setOptimizeCoefficients(true);                                // 設置對估計的模型系數需要進行優化    seg.setModelType(pcl::SACMODEL_CYLINDER);                        // 設置分割模型為圓柱體模型    seg.setMethodType(pcl::SAC_RANSAC);                                // 設置采用RANSAC算法進行參數估計    seg.setNormalDistanceWeight(0.1);                                // 設置表面法線權重系數    seg.setMaxIterations(10000);                                    // 設置迭代的最大次數    seg.setDistanceThreshold(0.05);                                    // 設置內點到模型距離的最大值    seg.setRadiusLimits(3.0, 4.0);                                    // 設置圓柱模型半徑的范圍    seg.setInputNormals(cloud_normals);                                // 設置輸入法向量    pcl::PointIndices::Ptr inliers_cylinder(new pcl::PointIndices);    // 保存分割結果    pcl::ModelCoefficients::Ptr coefficients_cylinder(new pcl::ModelCoefficients);    // 保存圓柱體模型系數    seg.segment(*inliers_cylinder, *coefficients_cylinder);            // 執行分割,將分割結果的索引保存到inliers_cylinder中,同時存儲模型系數coefficients_cylinder    cout << "ntt-----圓柱體系數-----" << endl;    cout << "軸線一點坐標:(" << coefficients_cylinder->values[0] << ", "        << coefficients_cylinder->values[1] << ", "        << coefficients_cylinder->values[2] << ")"        << endl;    cout << "軸線方向向量:(" << coefficients_cylinder->values[3] << ", "        << coefficients_cylinder->values[4] << ", "        << coefficients_cylinder->values[5] << ")"        << endl;    cout << "圓柱體半徑:" << coefficients_cylinder->values[6] << endl;

2.5 半徑近鄰

半徑內近鄰搜索(Neighbors within Radius Search),是指搜索點云中一點在球體半徑 R內的所有近鄰點。

pcl::KdTreeFLANN<pcl::PointXYZ>kdtree;        //創建kdtree對象    kdtree.setInputCloud(cloud);                //設置搜索空間    pcl::PointXYZ searchPoint;                    //定義查詢點    searchPoint = cloud->points[0];    cout << "- >查詢點坐標為:" << searchPoint << endl;    float R = 0.1;                                //設置搜索半徑大小    vector<int> pointIdxRadiusSearch;            //存儲近鄰索引    vector<float> pointRadiusSquaredDistance;    //存儲近鄰對應的平方距離    cout << "n- >正在進行半徑R鄰域近鄰搜索..." << endl << endl;    if (kdtree.radiusSearch(searchPoint, R, pointIdxRadiusSearch, pointRadiusSquaredDistance) > 0)    {        //打印所有近鄰點坐標,方式2        for (size_t i = 0; i < pointIdxRadiusSearch.size(); ++i)        {            cout << "第" << i + 1 << "個近鄰點:"                << cloud->points[pointIdxRadiusSearch[i]]                << " (squared distance: " << pointRadiusSquaredDistance[i] << ")" << endl;        }    }    else    {        PCL_ERROR("未搜索到鄰近點!an");    }

2.6 聚類

首先選取種子點,利用kd-tree對種子點進行半徑r鄰域搜索,若鄰域內存在點,則與種子點歸為同一聚類簇Q;

pcl::search::KdTree&lt;PointT&gt;::Ptr tree(new pcl::search::KdTree&lt;PointT&gt;);    // 創建kd樹    tree-&gt;setInputCloud(cloud);    vector&lt;pcl::PointIndices&gt; cluster_indices;    pcl::EuclideanClusterExtraction&lt;PointT&gt; ec;    ec.setClusterTolerance(0.2);    //設置近鄰搜索的半徑    ec.setMinClusterSize(200);        //設置最小聚類點數    ec.setMaxClusterSize(999999);    //設置最大聚類點數    ec.setSearchMethod(tree);    ec.setInputCloud(cloud);    ec.extract(cluster_indices);    /// 執行歐式聚類分割,并保存分割結果    int j = 0;    for (vector< pcl::PointIndices >::const_iterator it = cluster_indices.begin(); it != cluster_indices.end(); ++it)    {        PointCloudT::Ptr cloud_cluster(new PointCloudT);        for (vector< int >::const_iterator pit = it- >indices.begin(); pit != it- >indices.end(); pit++)        {            cloud_cluster- >points.push_back(cloud- >points[*pit]);        }        /*cloud_cluster-&gt;width = cloud_cluster-&gt;points.size();        cloud_cluster-&gt;height = 1;        cloud_cluster-&gt;is_dense = true;*/        stringstream ss;        ss &lt;&lt; "tree_" &lt;&lt; j + 1 &lt;&lt; ".pcd";        pcl::io::savePCDFileBinary(ss.str(), *cloud_cluster);        cout &lt;&lt; "- >" &lt;&lt; ss.str() &lt;&lt; "詳情:" &lt;&lt; endl;        cout &lt;&lt; *cloud_cluster &lt;&lt; endl;        j++;    }

2.7 區域生長

區域生長的基本思想是將具有相似性質的點集合起來構成區域。

首先對每個需要分割的區域找出一個種子作為生長的起點,然后將種子周圍鄰域中與種子有相同或相似性質的點(根據事先確定的生長或相似準則來確定,多為法向量、曲率)歸并到種子所在的區域中。

cout &lt;&lt; "- >正在估計點云法線..." &lt;&lt; endl;    pcl::NormalEstimation&lt;pcl::PointXYZ, pcl::Normal&gt; ne;                                    //創建法線估計對象ne    pcl::search::Search&lt;pcl::PointXYZ&gt;::Ptr tree(new pcl::search::KdTree&lt;pcl::PointXYZ&gt;);    //設置搜索方法    pcl::PointCloud &lt;pcl::Normal&gt;::Ptr normals(new pcl::PointCloud &lt;pcl::Normal&gt;);            //存放法線    ne.setSearchMethod(tree);    ne.setInputCloud(cloud);    ne.setKSearch(20);    ne.compute(*normals);    //========================================================================    //------------------------------- 區域生長 -------------------------------    cout &lt;&lt; "- >正在進行區域生長..." &lt;&lt; endl;    pcl::RegionGrowing&lt;pcl::PointXYZ, pcl::Normal&gt; rg;    //創建區域生長分割對象    rg.setMinClusterSize(50);                            //設置滿足聚類的最小點數    rg.setMaxClusterSize(99999999);                        //設置滿足聚類的最大點數    rg.setSearchMethod(tree);                            //設置搜索方法    rg.setNumberOfNeighbours(30);                        //設置鄰域搜索的點數    rg.setInputCloud(cloud);                            //設置輸入點云    rg.setInputNormals(normals);                        //設置輸入點云的法向量    rg.setSmoothnessThreshold(3.0 / 180.0 * M_PI);        //設置平滑閾值,弧度,用于提取同一區域的點    rg.setCurvatureThreshold(1.0);                        //設置曲率閾值,如果兩個點的法線偏差很小,則測試其曲率之間的差異。如果該值小于曲率閾值,則該算法將使用新添加的點繼續簇的增長    vector&lt;pcl::PointIndices&gt; clusters;                    //聚類索引向量    rg.extract(clusters);                                //獲取聚類結果,并保存到索引向量中    cout &lt;&lt; "- >聚類個數為" &lt;&lt; clusters.size() &lt;&lt; endl;

2.8 線特征擬合

一般線特征擬合的方式前提是先要濾除不必要的點,而這個就需要使用K-D tree來先實現搜索

pcl::SampleConsensusModelLine&lt;pcl::PointXYZ&gt;::Ptr model_line(new pcl::SampleConsensusModelLine&lt;pcl::PointXYZ&gt;(cloud));    //指定擬合點云與幾何模型    pcl::RandomSampleConsensus&lt;pcl::PointXYZ&gt; ransac(model_line);    //創建隨機采樣一致性對象    ransac.setDistanceThreshold(0.01);    //內點到模型的最大距離    ransac.setMaxIterations(1000);        //最大迭代次數    ransac.computeModel();                //執行RANSAC空間直線擬合    vector&lt;int&gt; inliers;                //存儲內點索引的向量    ransac.getInliers(inliers);            //提取內點對應的索引    /// 根據索引提取內點    pcl::PointCloud< pcl::PointXYZ >::Ptr cloud_line(new pcl::PointCloud< pcl::PointXYZ >);    pcl::copyPointCloud< pcl::PointXYZ >(*cloud, inliers, *cloud_line);    /// 模型參數    Eigen::VectorXf coefficient;    ransac.getModelCoefficients(coefficient);    cout &lt;&lt; "直線點向式方程為:n"        &lt;&lt; "   (x - " &lt;&lt; coefficient[0] &lt;&lt; ") / " &lt;&lt; coefficient[3]        &lt;&lt; " = (y - " &lt;&lt; coefficient[1] &lt;&lt; ") / " &lt;&lt; coefficient[4]        &lt;&lt; " = (z - " &lt;&lt; coefficient[2] &lt;&lt; ") / " &lt;&lt; coefficient[5];

2.9 點特征提取

點特征的提取和線特征的提取原理一樣

pcl::HarrisKeypoint3D< pcl::PointXYZ, pcl::PointXYZI, pcl::Normal >
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 激光雷達
    +關注

    關注

    968

    文章

    4024

    瀏覽量

    190245
  • 線束
    +關注

    關注

    7

    文章

    982

    瀏覽量

    26060
  • 自動駕駛
    +關注

    關注

    784

    文章

    13923

    瀏覽量

    166820
收藏 人收藏

    評論

    相關推薦

    淺析自動駕駛發展趨勢,激光雷達是未來?

    的一部分。鑒于目前激光雷達的高成本,攝像頭配合高精度地圖是另一種較低成本的技術路線。除了與高精度地圖配合為自動駕駛提供定位服務,攝像頭還可以在地圖采集過程中作為低成本且數據傳輸量小(攝像頭捕捉的是小尺寸
    發表于 09-06 11:36

    激光雷達自動駕駛不可或缺的傳感器

    `激光雷達自動駕駛不可或缺的傳感器2015 年,當時業界還在爭論:無人駕駛是該用激光雷達還是用攝像頭。到 2016 年,事情發生很大的轉變,尤其某汽車公司 Autopilot 致死事
    發表于 09-08 17:24

    激光雷達-無人駕駛汽車的必爭之地

    ;通用則更為夸張,不僅收購了能夠提供無人駕駛解決方案的Cruise,還收購了激光雷達制造公司Strobe,同時自己還有了自動駕駛運營平臺,實現了軟件(技術)+硬件+平臺的全方位涉及;福特和百度也共同
    發表于 10-20 15:49

    成熟的無人駕駛方案離不開激光雷達

    開發的全自動駕駛交通工具都依賴激光探測和測距技術(激光雷達)來感知世界并繪制地圖。這些地圖為無人駕駛汽車提供重要信息,利用其傳感系統和計算系統重點關注汽車、行人和自行車等障礙物的信息。
    發表于 10-23 17:51

    即插即用的自動駕駛LiDAR感知算法盒子 RS-Box

    ,即可快速、無縫地將激光雷達感知模塊嵌入到自己的無人駕駛方案中,真正實現“一鍵獲得自動駕駛激光雷達環境感知能力”。RS-BoxLiDAR感知算法專業硬件平臺RS-Box 由嵌入式硬件平
    發表于 12-15 14:20

    北醒固態設計激光雷達

    圍繞LR30進行感知環境,精確建圖和定位導航的功能研發,以實現低速自動駕駛輔助和封閉園區自動駕駛。二、已量產的固態激光雷達CE30-D當其他公司展位擺放著《樣品預約測試表》的時候,北醒的展臺上已經
    發表于 01-25 09:36

    北醒固態激光雷達

    圍繞LR30進行感知環境,精確建圖和定位導航的功能研發,以實現低速自動駕駛輔助和封閉園區自動駕駛。二、已量產的固態激光雷達CE30-D當其他公司展位擺放著《樣品預約測試表》的時候,北醒的展臺上已經
    發表于 01-25 09:38

    固態設計激光雷達

    圍繞LR30進行感知環境,精確建圖和定位導航的功能研發,以實現低速自動駕駛輔助和封閉園區自動駕駛。二、已量產的固態激光雷達CE30-D當其他公司展位擺放著《樣品預約測試表》的時候,北醒的展臺上已經
    發表于 01-25 09:41

    從光電技術角度解析自動駕駛激光雷達

    激光雷達)、電子技術和人工智能的進步,使數十種先進的駕駛員輔助系統(ADAS)得以實現,包括防撞、盲點監測、車道偏離預警和停車輔助等。通過傳感器融合實現這些系統的同步運行,可以讓完全自動駕駛的車輛監視
    發表于 09-10 14:10

    自動駕駛激光雷達新型探測器:近紅外MPPC

    #什么是激光雷達?如今,"激光雷達"已不是什么陌生的概念了,特別是隨著自動駕駛的熱潮,它也備受矚目。 激光雷達實際上是一種工作在光學波段(近紅外)的
    發表于 09-10 14:21

    激光雷達成為自動駕駛門檻,陶瓷基板豈能袖手旁觀

    `科技的進步日新月異,要數在汽車圈子里最火熱的詞匯,自動駕駛輔助系統一定是位居榜單前列的,而自動駕駛中核心的硬件之一—激光雷達,也是屢屢被各家車企送上熱搜榜單,成為了業界內關注的重心。激光雷達
    發表于 03-18 11:14

    談一談自動駕駛激光雷達

    激光雷達是如何產生的?激光雷達自動駕駛領域有什么作用?
    發表于 06-17 07:31

    自動駕駛系統設計及應用的相關資料分享

    作者:余貴珍、周彬、王陽、周亦威、白宇目錄第一章 自動駕駛系統概述1.1 自動駕駛系統架構1.1.1 自動駕駛系統的三個層級1.1.2 自動駕駛系統的基本技術架構1.2
    發表于 08-30 08:36

    激光雷達如何助力自動駕駛

    目前,根據企業下游應用領域的分布顯示,自動駕駛激光雷達應用最多的領域之一。業界普遍認為,激光雷達是解決高級別自動駕駛量產落地的關鍵所在,因此除特斯拉外,幾乎全球主要汽車制造商和
    發表于 08-17 15:11 ?2673次閱讀

    自動駕駛激光雷達預處理/特征提取

    0. 簡介 激光雷達作為自動駕駛最常用的傳感器,經常需要使用激光雷達來做建圖、定位和感知等任務。而這時候使用降低點云規模的預處理方法,可以能夠去除無關區域的點以及降低點云規模。并能夠給后續的PCL點
    發表于 06-06 10:07 ?2次下載
    <b class='flag-5'>自動駕駛</b>之<b class='flag-5'>激光雷達</b>預處理/<b class='flag-5'>特征提取</b>
    主站蜘蛛池模板: 男生jj插入女生jj | 无码AV免费精品一区二区三区 | 无码人妻少妇色欲AV一区二区 | 国产精品女上位在线观看 | 亚洲AV无码A片在线观看蜜桃 | 一二三四在线高清中文版免费观看电影 | 欧美6O老妪与小伙交 | 麻豆人妻换人妻X99 麻豆区蜜芽区 | 精品视频在线播放 | 飘雪在线观看免费高清完整版韩国 | 国产精品一国产精品免费 | 朋友的娇妻好爽好烫嗯 | 男人电影天堂手机 | 9420高清完整版在线电影免费观看 | 回复术士人生重启在线观看 | seyeye高清视频在线 | 古装性艳史电影在线看 | 97人摸人人澡人人人超一碰 | 免费久久狼人香蕉网 | 亚欧免费观看在线观看更新 | 欧美日韩精品 | 美女拔萝卜 | 精品含羞草免费视频观看 | 哺乳期妇女挤奶水36d | 国产国语在线播放视频 | 2019久久视频这里有精品15 | 成人女人A级毛片免费软件 成人免费在线视频 | 亚洲免费无l码中文在线视频 | 99久久伊人一区二区yy5099 | 黄页网站免费视频大全9 | 欧美激情视频一区 | 高H黄暴NP辣H一女多男 | 果冻传媒在线看免费高清 | 国产精品大全国产精品 | 草神被爆漫画羞羞漫画 | 99riav9 精品香蕉免费大视频 | 2021全国精品卡一卡二 | 古装性艳史电影在线看 | 久久久久99精品成人片三人毛片 | 被两根巨大同时进去高H | 韩剧19禁啪啪无遮挡大尺度 |