91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CUDA-NDT的定義與使用實(shí)例

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 作者:NVIDIA英偉達(dá)企業(yè)解 ? 2022-07-08 09:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著自主機(jī)器的發(fā)展,我們可以在生活中經(jīng)??吹阶灾鳈C(jī)器的應(yīng)用。有傳統(tǒng)應(yīng)用的倉庫工廠 AMR、機(jī)械臂、銀行酒店里面的服務(wù)機(jī)器人、家庭機(jī)器人、無人物流車、自主礦卡等等。不同的自主機(jī)器,軟件架構(gòu)的方案也不一樣,但核心的模塊定位、導(dǎo)航、感知、控制等都是相通的。

定位模塊是自主機(jī)器最核心的模塊之一,定位又包括全局定位和局部定位,對(duì)于自主機(jī)器,其精度需要達(dá)到厘米級(jí)別。

本文我們將討論全局定位,即確定自主機(jī)器在全局下的位置。傳統(tǒng)的低速自主機(jī)器,類似于 AMR 等,其采用的定位方式通常以 SLAM(Simultaneous Localization and Mapping)的方法進(jìn)行同時(shí)建圖和定位,但是該方法實(shí)現(xiàn)代價(jià)高、難度大,并不適用于室外自主機(jī)器——類似于無人物流車、園區(qū)接駁車等的實(shí)時(shí)高精度定位需求。這些室外自主機(jī)器行駛速度快、距離遠(yuǎn)、環(huán)境復(fù)雜,使得 SLAM 的精度下降,同時(shí)遠(yuǎn)距離的行駛將導(dǎo)致實(shí)時(shí)構(gòu)建的地圖偏移過大。因此,如果在已有高精度的全局地圖的情況下進(jìn)行自主機(jī)器的定位,將極大的簡化該問題。

因此,將問題分為獨(dú)立的兩部分:建圖 Mapping 和定位 Matching。NDT 是一種點(diǎn)云配準(zhǔn)算法,可同時(shí)用于點(diǎn)云的建圖和定位。

CUDA-NDT

正態(tài)分布變換算法(NormalDistributions Transform, NDT)同 ICP 算法的功能一致,即,用于計(jì)算兩幀點(diǎn)云數(shù)據(jù)之間的坐標(biāo)變換矩陣,從而能夠使不同的坐標(biāo)下的點(diǎn)云數(shù)據(jù)合并到同一個(gè)坐標(biāo)系統(tǒng)中。不同的是 NDT 算法對(duì)初值不敏感,且不需要進(jìn)行對(duì)應(yīng)點(diǎn)的特征計(jì)算,所以速度較快。NDT 算法使用應(yīng)用于 3D 點(diǎn)統(tǒng)計(jì)模型的標(biāo)準(zhǔn)優(yōu)化技術(shù)來確定兩個(gè)點(diǎn)云之間最可能的配準(zhǔn)。

NDT 算法和 ICP 算法可以結(jié)合使用,以提高配準(zhǔn)精度和速度。首先,NDT 算法可用于粗配準(zhǔn),得到轉(zhuǎn)換參數(shù);然后使用 ICP 算法結(jié)合參數(shù)進(jìn)行精細(xì)配準(zhǔn)。為了改進(jìn) NDT 算法在 NVIDIA Jetson 上的性能,我們推薦使用基于 CUDA 加速的 CUDA-NDT。

使用CUDA-NDT

以下是 CUDA-NDT 的使用實(shí)例。我們需要初始化相關(guān)的類對(duì)象,設(shè)置相關(guān)的參數(shù),并調(diào)用接口函數(shù)。

cudaNDT ndtTest(nPCountM, nQCountM, stream);ndtTest.setInputSource(source);ndtTest.setInputTarget(target);ndtTest.setResolution(resolution);ndtTest.setMaximumIterations(nr_iterations);ndtTest.setTransformationEpsilon(epsilon);ndtTest.setStepSize(step_size);    ndtTest.ndt(cloud_source, nPCount,               cloud_target, nQCount, guess,transformation_matrix,stream);

CUDA-NDT 計(jì)算的輸出是 transformation_matrix,代表的含義如下:

  • 源點(diǎn)云 (P)* transformation_matrix = 目標(biāo)坐標(biāo)系的點(diǎn)云 (Q)


因?yàn)榧す忸愋偷妮敵鳇c(diǎn)云的數(shù)量為固定值,所以 CUDA-NDT 在輸出化的時(shí)候,要求輸入兩幀點(diǎn)云的最大數(shù)量,從而分配計(jì)算資源。

class cudaNDT{public:    /*       nPCountM and nQCountM are the maximum of count for input clouds       They are used to pre-allocate memory.    */    cudaNDT(int nPCountM, int nQCountM, cudaStream_t stream = 0);    ~cudaNDT(void);void setInputSource (void *source);void setInpuTarget (void *target);void setResolution (float resolution);void setMaximumIterations (int nr_iterations);void setTransformationEpsilon (double epsilon);void setStepSize (double step_size);    /*    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        guess: initial guess of transformation_matrix        stream: CUDA stream    Output:        transformation_matrix: rigid transformation matrix    */
    void ndt(float *cloud_source, int nPCount,            float *cloud_target, int nQCount,            float *guess, void *transformation_matrix,            cudaStream_t stream = 0);    void *m_handle = NULL;};

經(jīng)過 CUDA 加速的 NDT 速度對(duì)比微加速版本提升了 4 倍左右,請(qǐng)參考下表的性能對(duì)比,經(jīng)過 NDT 匹配的點(diǎn)云效果對(duì)比請(qǐng)參考圖 1 和圖 2。

CUDA-NDT

PCL-NDT

count of

pointscloud

7000

7000

cost time(ms)

34.7789

136.858

fitness_score

0.538

0.540

CUDA-NDT 與 PCL-NDT 的性能對(duì)比

開始使用CUDA-NDT

我們希望通過本文介紹使用 CUDA-NDT 從而獲得更好的點(diǎn)云注冊(cè)性能。

因?yàn)?NDT 在 NVIDIA Jetson 上無法使用 CUDA 進(jìn)行點(diǎn)云的加速處理,所以我們開發(fā)了基于 CUDA 的 CUDA-NDT。

復(fù)制鏈接,獲得相關(guān)庫和實(shí)例代碼。

https://github.com/NVIDIA-AI-IOT/cuda-pcl/tree/main/cuda-ndt

審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5598

    瀏覽量

    109804
  • NDT
    NDT
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    15252
  • CUDA
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

    14482

原文標(biāo)題:基于CUDA加速的自主機(jī)器SLAM技術(shù)——CUDA-NDT

文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RV生態(tài)又一里程碑:英偉達(dá)官宣CUDA將兼容RISC-V架構(gòu)!

    電子發(fā)燒友網(wǎng)報(bào)道(文/梁浩斌)英偉達(dá)生態(tài)護(hù)城河CUDA,從最初支持x86、Power?CPU架構(gòu),到2019年宣布支持Arm?CPU,不斷拓展在數(shù)據(jù)中心的應(yīng)用生態(tài)。 在2019年至今的六年
    的頭像 發(fā)表于 07-19 00:04 ?6614次閱讀
    RV生態(tài)又一里程碑:英偉達(dá)官宣<b class='flag-5'>CUDA</b>將兼容RISC-V架構(gòu)!

    借助NVIDIA CUDA Tile IR后端推進(jìn)OpenAI Triton的GPU編程

    NVIDIA CUDA Tile 是基于 GPU 的編程模型,其設(shè)計(jì)目標(biāo)是為 NVIDIA Tensor Cores 提供可移植性,從而釋放 GPU 的極限性能。CUDA Tile 的一大優(yōu)勢是允許開發(fā)者基于其構(gòu)建自定義的 DS
    的頭像 發(fā)表于 02-10 10:31 ?268次閱讀

    如何在NVIDIA CUDA Tile中編寫高性能矩陣乘法

    本博文是系列課程的一部分,旨在幫助開發(fā)者學(xué)習(xí) NVIDIA CUDA Tile 編程,掌握構(gòu)建高性能 GPU 內(nèi)核的方法,并以矩陣乘法作為核心示例。
    的頭像 發(fā)表于 01-22 16:43 ?4865次閱讀
    如何在NVIDIA <b class='flag-5'>CUDA</b> Tile中編寫高性能矩陣乘法

    加濕器維修實(shí)例

    *附件:加濕器維修實(shí)例.doc
    發(fā)表于 01-06 15:03

    NVIDIA CUDA Tile的創(chuàng)新之處、工作原理以及使用方法

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

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

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

    NVIDIA CUDA 13.1版本的新增功能與改進(jìn)

    NVIDIA CUDA 13.1 是自 CUDA 二十年前發(fā)明以來,規(guī)模最大、內(nèi)容最全面的一次更新。
    的頭像 發(fā)表于 12-13 10:08 ?2226次閱讀

    如何在e203 SOC中添加自定義外設(shè)

    外設(shè)的基地址和連接e203_soc_top信號(hào)使用,并將自定義的外設(shè)正確實(shí)例化在此對(duì)外接口口模塊中。 3、在e203_soc_top中正確實(shí)例化第2步中的對(duì)外接口模塊 4、在system頂層模塊中正確
    發(fā)表于 10-20 10:38

    低漂移霍爾元件的應(yīng)用實(shí)例

    此章節(jié)中將介紹低漂移霍爾元件(砷化鎵 (GaAs))的應(yīng)用實(shí)例。
    的頭像 發(fā)表于 07-10 14:27 ?868次閱讀
    低漂移霍爾元件的應(yīng)用<b class='flag-5'>實(shí)例</b>

    KiCad 中的自定義規(guī)則(KiCon 演講)

    “ ?Seth Hillbrand 在 KiCon US 2025 上為大家介紹了 KiCad 的規(guī)則系統(tǒng),并詳細(xì)講解了自定義規(guī)則的設(shè)計(jì)與實(shí)例。? ” ? 演講主要圍繞 加強(qiáng) KiCad 中的自定義
    的頭像 發(fā)表于 06-16 11:17 ?2171次閱讀
    KiCad 中的自<b class='flag-5'>定義</b>規(guī)則(KiCon 演講)

    單片機(jī)實(shí)例項(xiàng)目:485與CAN總線運(yùn)用實(shí)例

    單片機(jī)實(shí)例項(xiàng)目:485與CAN總線運(yùn)用實(shí)例,推薦下載!
    發(fā)表于 06-03 20:48

    Nordic測距介紹

    的多天線設(shè)計(jì),系統(tǒng)資源要求非常高 兩者共同的缺點(diǎn)是: 不是標(biāo)準(zhǔn)的功能,沒有定義和使用藍(lán)牙標(biāo)準(zhǔn) 基于此,SIG在2022年11月就公開草案Channel Sounding(簡稱CS),并計(jì)劃在2024
    發(fā)表于 05-28 16:49

    UIAbility組件啟動(dòng)模式:實(shí)例在啟動(dòng)時(shí)的不同呈現(xiàn)狀態(tài)

    請(qǐng)求的UIAbility實(shí)例。在EntryAbility中,調(diào)用startAbility()方法時(shí),可以在want參數(shù)中增加一個(gè)自定義參數(shù),例如instanceKey,以此來區(qū)分
    發(fā)表于 05-16 06:10

    使用NVIDIA CUDA-X庫加速科學(xué)和工程發(fā)展

    NVIDIA GTC 全球 AI 大會(huì)上宣布,開發(fā)者現(xiàn)在可以通過 CUDA-X 與新一代超級(jí)芯片架構(gòu)的協(xié)同,實(shí)現(xiàn) CPU 和 GPU 資源間深度自動(dòng)化整合與調(diào)度,相較于傳統(tǒng)加速計(jì)算架構(gòu),該技術(shù)可使計(jì)算工程工具運(yùn)行速度提升至原來的 11 倍,計(jì)算規(guī)模增加至 5 倍。
    的頭像 發(fā)表于 03-25 15:11 ?1545次閱讀

    如何添加自定義單板

    在開發(fā)過程中,用戶有時(shí)需要?jiǎng)?chuàng)建自定義板配置。本節(jié)將通過一個(gè)實(shí)例講解用戶如何創(chuàng)建屬于自己的machine,下面以g2l-test.conf為例進(jìn)行說明。
    的頭像 發(fā)表于 03-12 14:43 ?1368次閱讀