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

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

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

3天內不再提示

使用CUDA PCL 1.0加速Jetson的點云處理

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-04-27 10:53 ? 次閱讀

很多Jetson用戶在自動化解決方案中選擇激光雷達進行定位和感知。激光雷達使用3D點云描繪周圍的空間環境。點云可以高精度長距離采樣物體表面信息以便于上層應用的障礙感知、繪圖、定位和路徑規劃算法

使用CUDA-PCL處理點云

CUDA PCL 1.0是基于CUDA開發的點云處理庫,在本文中,我們將介紹目前所有的三個庫:ICP,segmentation 和 filter。

CUDA-ICP

迭代最近點算法(Iterative Closest Point,ICP) 用于計算兩幀點云數據之間的坐標變換矩陣,從而能夠使不同的坐標下的點云數據合并到同一個坐標系統中。ICP算法 通過計算兩幀點云的距離誤差從而修正變換矩陣(平移和旋轉)以便最小化距離誤差,通常兩幀點云之間的距離誤差是通過匹配點的距離計算得來。ICP算法應用廣泛,能夠獲得很高的匹配結果且有很高的魯棒性,同時會耗費大量的計算資源。為了改進ICP算法在Jetson上的性能,我們推薦使用基于CUDA加速的CUDA-ICP。

使用CUDA-ICP

以下是CUDA ICP的使用實例

我們僅僅需要初始化相關的類對象,并調用接口函數即可。

    cudaICP icpTest(nPCountM, nQCountM, stream);
    icpTest.icp(cloud_source, nPCount,
            float *cloud_target, int nQCount,
            int Maxiterate, double threshold,
            Eigen::Matrix4f &transformation_matrix, stream);

CUDA-ICP 計算的輸出是 transformation_matrix,代表的含義如下:

源點云(P)* transformation = 目標坐標系的點云(Q)

因為激光類型的輸出點云的數量為固定值,所以CUDA-ICP在輸出化的時候,要求輸入兩幀點云的最大數量,從而分配計算資源。

class cudaICP
{
public:
    /*
       nPCountM and nQCountM are the maximum of count for input clouds
       They are used to pre-allocate memory.
    */
    cudaICP(int nPCountM, int nQCountM, cudaStream_t stream = 0);
    ~cudaICP(void);

    /*
    cloud_target = transformation_matrix *cloud_source
    When the Epsilon of transformation_matrix is less than threshold,
    the function will return transformation_matrix.
    Input:
        cloud_source, cloud_target: data pointer for points cloud
        nPCount: the points number of cloud_source
        nQCount: the points number of cloud_target
        Maxiterate: the threshold for iterations
        threshold: When the Epsilon of transformation_matrix is less than
            threshold, the function will return transformation_matrix.
    Output:
        transformation_matrix
    */

    void icp(float *cloud_source, int nPCount,

Figure 1. 執行ICP之前的兩幀點云。

Figure 2. 經過ICP匹配后的兩幀點云。

CUDA-Segmentation

點云地圖包含大量的地面點,不僅會使得地圖變的雜亂,也會干擾之后的點云的分類和識別。因此在實際處理中,我們會首先使用點云分割移除點云中的地面。CUDA-Segmentation 使用隨機樣本一致性算法(random sample consensus, Ransac)進行點云的分割。

使用CUDA- Segmentation

以下代碼是CUDA Segmentation的使用實例。

我們直接初始化對象并調用相關的接口函數即可。

  //Now Just support: SAC_RANSAC + SACMODEL_PLANE
  std::vector indexV;
  cudaSegmentation cudaSeg(SACMODEL_PLANE, SAC_RANSAC, stream);
  segParam_t setP;
  setP.distanceThreshold = 0.01; 
  setP.maxIterations = 50;
  setP.probability = 0.99;
  setP.optimizeCoefficients = true;
  cudaSeg.set(setP);
  cudaSeg.segment(input, nCount, index, modelCoefficients);
  for(int i = 0; i < nCount; i++)
  {
    if(index[i] == 1) 
    indexV.push_back(i);
  }

CUDA Segmentation分割擁有nCount個的點云,并輸出索引表index用于指示輸入點云中的被分割掉的點和modelCoefficients用于指示尋找的平面公式。

typedef struct {
  double distanceThreshold; 
  int maxIterations;
  double probability;
  bool optimizeCoefficients;
} segParam_t;

class cudaSegmentation
{
public:
    //Now Just support: SAC_RANSAC + SACMODEL_PLANE
    cudaSegmentation(int ModelType, int MethodType, cudaStream_t stream = 0);

    ~cudaSegmentation(void);

    /*
    Input:
        cloud_in: data pointer for points cloud
        nCount: count of points in cloud_in
    Output:
        Index: data pointer which has the index of points in a plane from input
      modelCoefficients: data pointer which has the group of coefficients of the plane
    */
    int set(segParam_t param);
    void segment(float *cloud_in, int nCount,
            int *index, float *modelCoefficients);
private:
    void *m_handle = NULL;
}; 

讓我們查看下面的實例,第一張圖是原始的點云,第二張圖是經過算法尋找到的平面。這是一個非常典型的平面移除的應用。

Figure 3. cuda-segmentaion處理之前的點云。

Figure 4. cuda-segmentaion找到的點云平面。

CUDA-Filter

濾波器是在分割,檢測和識別之前,點云數據中最重要的處理。

帶通點云濾波是最簡單的方法,僅僅是過濾X,Y和Z軸方向的點云。

目前CUDA-Filter僅支持帶通操作,更多的濾波器會在后續加入。

使用CUDA- Filter

這個是CUDA Filter的使用實例。

我們僅僅需要初始化對象并調用相關的接口函數即可。

我們僅僅需要初始化對象并調用相關的接口函數即可。

  cudaFilter filterTest(stream);
  FilterParam_t setP;
  FilterType_t type = PASSTHROUGH;
  setP.type = type;
  setP.dim = 2;
  setP.upFilterLimits = 1.0;
  setP.downFilterLimits = 0.0;
  setP.limitsNegative = false;
  filterTest.set(setP);
  filterTest.filter(output, &countLeft, input, nCount);

CUDA-Filter使用指定的參數過濾nCount有個點的點云數據,過濾后輸出的點云數量為countLeft。


typedef struct {
    FilterType_t type;
    //0=x,1=y,2=z
    int dim;
    float upFilterLimits;
    float downFilterLimits;
    bool limitsNegative;

} FilterParam_t;

class cudaFilter
{
public:
    cudaFilter(cudaStream_t stream = 0);
    ~cudaFilter(void);
    int set(FilterParam_t param);
    /*
    Input:
        source: data pointer for points cloud
        nCount: count of points in cloud_in
    Output:
        output: data pointer which has points filtered by CUDA
        countLeft: count of points in output
    */
    int filter(void *output, unsigned int *countLeft, void *source, unsigned int nCount);

    void *m_handle = NULL;
}; 

讓我們看下X軸方向的帶通濾波實例。

Figure 5. 原始點云。

Figure 6. X周過濾后的數據。

開始使用 CUDA-PCL

我們希望通過本文介紹使用CUDA-PCL從而獲得更好的點云處理性能。

因為PCL在Jetson上無法使用CUDA進行點云的加速處理,所以我們開發了基于CUDA的點云處理庫CUDA-PCL。

關于作者

范磊是英偉達高級CUDA軟件工程師,在TSE China 小組致力于CUDA軟件方案的開發和優化。

李雨倩負責基于Jetson的自主機器解決方案和生態發展建設,讓開發者在Jetson上開發機器人應用獲得更好更全面的體驗和支持。

審核編輯:郭婷

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

    關注

    968

    文章

    3991

    瀏覽量

    190081
  • CUDA
    +關注

    關注

    0

    文章

    121

    瀏覽量

    13643
收藏 人收藏

    評論

    相關推薦

    GPU加速服務器怎么用的

    GPU加速服務器是將GPU硬件與計算服務相結合,通過服務提供商的平臺,用戶可以根據需求靈活租用帶有GPU資源的虛擬機實例。那么,GPU加速
    的頭像 發表于 12-26 11:58 ?84次閱讀

    數據庫和主機哪個好一

    數據庫和主機哪個好一主機和數據庫各有優勢,選擇哪個更好取決于具體需求。主機提供虛擬
    的頭像 發表于 12-04 13:50 ?153次閱讀

    基于深度學習的三維分類方法

    近年來,云表示已成為計算機視覺領域的研究熱點之一,并廣泛應用于自動駕駛、虛擬現實、機器人等許多領域。雖然深度學習技術在處理常規結構化的二維網格圖像數據方面取得了巨大成功,但在處理不規則、非結構化的
    的頭像 發表于 10-29 09:43 ?638次閱讀
    基于深度學習的三維<b class='flag-5'>點</b><b class='flag-5'>云</b>分類方法

    有沒有大佬知道NI vision 有沒有辦法通過gpu和cuda加速圖像處理

    有沒有大佬知道NI vision 有沒有辦法通過gpu和cuda加速圖像處理
    發表于 10-20 09:14

    怎么在TMDSEVM6678: 6678自帶的FFT接口和CUDA提供CUFFT函數庫選擇?

    請教一下gpgpu上包括4個Riscv cpu和一個DPU, 沒有6678,要替換原來信號處理用的6678,該怎么在6678自帶的FFT接口和CUDA提供CUFFT函數庫選擇?
    發表于 09-27 07:20

    LiDAR激光數據處理軟件處理流程

    、形狀等信息。LiDAR技術在地形測繪、城市規劃、林業、交通、考古等領域有著廣泛的應用。本文將介紹LiDAR激光數據處理軟件的處理流程。 一、LiDAR數據采集 飛行平臺選擇:Li
    的頭像 發表于 08-29 17:05 ?1165次閱讀

    如何理解計算?

    據的安全性。 **高性能計算:**計算平臺提供高性能的計算資源,用于處理復雜的科學和工程計算任務。用戶可以使用平臺來進行高性能計算、模擬和仿真,加速科學研究和工程設計的進程。 **
    發表于 08-16 17:02

    打破英偉達CUDA壁壘?AMD顯卡現在也能無縫適配CUDA

    電子發燒友網報道(文/梁浩斌)一直以來,圍繞CUDA打造的軟件生態,是英偉達在GPU領域最大的護城河,尤其是隨著目前AI領域的發展加速,市場火爆,英偉達GPU+CUDA的開發生態則更加穩固,AMD
    的頭像 發表于 07-19 00:16 ?4749次閱讀

    軟件生態上超越CUDA,究竟有多難?

    神壇的,還是圍繞CUDA打造的一系列軟件生態。 ? 英偉達——CUDA的絕對統治 ? 相信對GPU有過一定了解的都知道,英偉達的最大護城河就是CUDACUDA在后端架構上處于絕對的統
    的頭像 發表于 06-20 00:09 ?3694次閱讀

    友思特案例 | 自研創新!三維工件尺寸測量及處理解決方案

    3D相機等新型傳感器的發展克服了傳統工件尺寸測量的各種局限,可獲取豐富的三維數據。友思特提供了一種工件3D尺寸測量和處理方案,結合自
    的頭像 發表于 06-13 14:13 ?514次閱讀
    友思特案例 | 自研創新!三維工件尺寸測量及<b class='flag-5'>點</b><b class='flag-5'>云</b><b class='flag-5'>處理</b>解決方案

    加速一鍵智能上耀 X 實例顯真功夫

    ,推出了下一代柔性算力新物種——華為耀服務器 X 實例(以下簡稱:耀 X 實例),助力企業
    的頭像 發表于 05-27 18:20 ?2163次閱讀
    <b class='flag-5'>加速</b>一鍵智能上<b class='flag-5'>云</b>,<b class='flag-5'>云</b>耀 X 實例顯真功夫

    借助NVIDIA Aerial CUDA增強5G/6G的DU性能和工作負載整合

    Aerial CUDA 加速無線接入網 (RAN)可加速電信工作負載,使用 CPU、GPU 和 DPU 在云原生加速計算平臺上提供更高水平的頻譜效率 (SE)。
    的頭像 發表于 05-24 11:10 ?612次閱讀
    借助NVIDIA Aerial <b class='flag-5'>CUDA</b>增強5G/6G的DU性能和工作負載整合

    NVIDIA 通過 CUDA-Q 平臺為全球各地的量子計算中心提供加速

    加速的高性能計算系統中的量子處理器(QPU)。 ? QPU 是量子計算機的大腦,通過利用電子或光子等粒子行為進行
    發表于 05-13 15:21 ?207次閱讀
    NVIDIA 通過 <b class='flag-5'>CUDA</b>-Q 平臺為全球各地的量子計算中心提供<b class='flag-5'>加速</b>

    Keil使用AC6編譯提示CUDA版本過高怎么解決?

    \' ArmClang: warning: Unknown CUDA version 10.2. Assuming the latest supported version 10.1
    發表于 04-11 07:56

    基于深度學習的方法在處理3D進行缺陷分類應用

    背景部分介紹了3D應用領域中公開可訪問的數據集的重要性,這些數據集對于分析和比較各種模型至關重要。研究人員專門設計了各種數據集,包括用于3D形狀分類、3D物體檢測和3D分割等任
    的頭像 發表于 02-22 16:16 ?1229次閱讀
    基于深度學習的方法在<b class='flag-5'>處理</b>3D<b class='flag-5'>點</b><b class='flag-5'>云</b>進行缺陷分類應用
    主站蜘蛛池模板: 久久999视频| 丝瓜涩涩屋黄瓜香蕉丝瓜| 亚洲精品免费在线视频| 国产精一品亚洲二区在线播放| 午夜DV内射一区区| 精品国产在线观看福利| 最近日本MV字幕免费观看视频| 男女高潮又爽又黄又无遮挡 | 亚洲免费无l码中文在线视频| 久久国产欧美| 成人免费视频在线播放| 亚洲AV精品无码喷水直播间| 久久香蕉国产线看观看| 成人精品亚洲| 亚洲一级毛片免费在线观看| 欧美精品久久久久性色AV苍井 | 久草草在线视视频| 99精品中文字幕在线观看| 无码日韩人妻精品久久蜜桃免费| 久久精品视频在线看99| MMM日本兽交| 亚洲欧洲一级| 人人干人人看| 久久国产精品萌白酱免费| 成人免费视频在线看| 一个人在线观看的视频| 日韩精品无码视频一区二区蜜桃| 黄色aa大片| 成激人情在线影院920| 伊人久久大香线蕉综合99| 日韩欧美一区二区三区在线视频 | 免费精品国产日韩热久久| 国产成人无码视频一区二区三区| 最新无码专区在线视频| 星空无限传媒视频在线观看视频| 免费国产成人| 黄梅戏mp3大全| 国产成人精品区在线观看| 99福利在线| 又大又硬又爽免费视频| 日日噜噜夜夜狠狠视频|