国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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上開發機器人應用獲得更好更全面的體驗和支持。

審核編輯:郭婷

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

    關注

    979

    文章

    4470

    瀏覽量

    196520
  • CUDA
    +關注

    關注

    0

    文章

    127

    瀏覽量

    14475
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    NVIDIA CUDA Tile的創新之處、工作原理以及使用方法

    NVIDIA CUDA 13.1 推出 NVIDIA CUDA Tile,這是自 2006 年 NVIDIA CUDA 平臺發明以來,最大的一次技術進步。這一令人振奮的創新引入了一套面向
    的頭像 發表于 12-24 10:17 ?462次閱讀
    NVIDIA <b class='flag-5'>CUDA</b> Tile的創新之處、工作原理以及使用方法

    在Python中借助NVIDIA CUDA Tile簡化GPU編程

    NVIDIA CUDA 13.1 版本新增了基于 Tile 的GPU 編程模式。它是自 CUDA 發明以來 GPU 編程最核心的更新之一。借助 GPU tile kernels,可以用比 SIMT
    的頭像 發表于 12-13 10:12 ?1192次閱讀
    在Python中借助NVIDIA <b class='flag-5'>CUDA</b> Tile簡化GPU編程

    NVIDIA CUDA 13.1版本的新增功能與改進

    NVIDIA CUDA 13.1 是自 CUDA 二十年前發明以來,規模最大、內容最全面的一次更新。
    的頭像 發表于 12-13 10:08 ?2206次閱讀

    NVIDIA Jetson AGX Thor Developer Kit開發環境配置指南

    NVIDIA Jetson AGX Thor 專為物理 AI 打造,與上一代產品 NVIDIA Jetson AGX Orin 相比,生成式 AI 性能最高提升至 5 倍。通過發布后的軟件更新優化,Jetson Thor 的生成
    的頭像 發表于 11-08 09:55 ?7252次閱讀
    NVIDIA <b class='flag-5'>Jetson</b> AGX Thor Developer Kit開發環境配置指南

    【CIE全國RISC-V創新應用大賽】+基于MUSE Pi Pro的3d激光里程計實現

    ├── USB 3.0接口 ← IMU數據通道 └── 電源管理模塊 軟件架構 應用層: Point-LIO里程計節點 ↓ 中間件層: ROS2通信框架 + PCL處理庫 ↓
    發表于 10-24 17:02

    BPI-AIM7 RK3588 AI與 Nvidia Jetson Nano 生態系統兼容的低功耗 AI 模塊

    應用。 []() AIM-IO是一款專為 Jetson Nano 生態系統設計的開源擴展板。它與 RK3588 AI Module7 配合使用,為您提供一個微型 AI 開發平臺,支持定制載板開發,并加速機器
    發表于 10-11 09:08

    什么是加速加速的重點選購指標是哪些?

    加速是提升網站、APP訪問速度的關鍵工具,很多人卻搞不清它的作用和選購要點。本文 華納 會先用通俗語言解釋加速是什么,再拆解選購時必看
    的頭像 發表于 09-12 16:29 ?1474次閱讀

    ADI借助NVIDIA Jetson Thor平臺加速人形機器人研發進程

    當前,人形機器人正逐步邁向實際應用部署階段,其落地節奏取決于物理智能與實時推理能力的發展。隨著NVIDIA Jetson Thor平臺的正式面市,Analog Devices, Inc. (ADI)將進一步加速人形機器人與自主移動機器人(AMR)的研發進程。
    的頭像 發表于 08-29 14:07 ?3155次閱讀

    基于 NVIDIA Blackwell 的 Jetson Thor 現已發售,加速通用機器人時代的到來

    ·專為物理 AI 和機器人打造的機器人計算機 NVIDIA Jetson AGX Thor 開發者套件和量產級模組,現已發售。 ·超過 200 萬開發者正在使用 NVIDIA 的機器人技術棧,聯影
    發表于 08-26 09:28 ?1299次閱讀
    基于 NVIDIA Blackwell 的 <b class='flag-5'>Jetson</b> Thor 現已發售,<b class='flag-5'>加速</b>通用機器人時代的到來

    AI 驅動三維逆向:降噪算法工具與機器學習建模能力的前沿應用

    在三維逆向工程領域,傳統方法在處理復雜數據和構建高精度模型時面臨諸多挑戰。隨著人工智能(AI)技術的發展,降噪算法工具與機器學習建模能力的應用,為三維逆向工程帶來了創新性解決方案,顯著提升
    的頭像 發表于 08-20 10:00 ?703次閱讀
    AI 驅動三維逆向:<b class='flag-5'>點</b><b class='flag-5'>云</b>降噪算法工具與機器學習建模能力的前沿應用

    NVIDIA Jetson + Isaac SDK 人形機器人方案全面解析

    SDK + Isaac Sim :專為機器人打造的軟件開發平臺,支持 ROS、實時感知、動作規劃和 AI 強化學習 二、Jetson 芯片系列對比 型號 GPU (CUDA) CPU AI級別
    的頭像 發表于 07-30 16:12 ?2181次閱讀

    Jetson平臺核心組件BOM清單概覽

    Jetson平臺核心組件BOM清單概覽 NVIDIA Jetson系列作為業界領先的邊緣計算和人工智能(AI)平臺,其強大的性能背后是一系列精心挑選的核心芯片、電源管理集成電路(PMIC)以及豐富
    的頭像 發表于 07-30 16:11 ?3132次閱讀

    NVIDIA Jetson + Isaac SDK 在人形機器人領域的方案詳解

    機器人感知、導航、運動控制、任務規劃的模塊化開發框架和物理仿真環境 二、Jetson 系列芯片型號對比表 型號 GPU (CUDA 核心) CPU AI性能(TOPS) 功耗(W) 典
    的頭像 發表于 07-30 16:05 ?3614次閱讀

    PCl Express M.2規格書

    電子發燒友網站提供《PCl Express M.2規格書.pdf》資料免費下載
    發表于 06-25 15:41 ?2次下載

    使用NVIDIA CUDA-X庫加速科學和工程發展

    NVIDIA GTC 全球 AI 大會上宣布,開發者現在可以通過 CUDA-X 與新一代超級芯片架構的協同,實現 CPU 和 GPU 資源間深度自動化整合與調度,相較于傳統加速計算架構,該技術可使計算工程工具運行速度提升至原來的 11 倍,計算規模增加至 5 倍。
    的頭像 發表于 03-25 15:11 ?1532次閱讀