精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

如何在光線(xiàn)跟蹤和碰撞檢測(cè)上下文中使用NanoVDB 庫(kù)的示例

星星科技指導(dǎo)員 ? 來(lái)源:NVIDIA ? 作者:NVIDIA ? 2022-04-28 14:22 ? 次閱讀

開(kāi)放式 VDB 是奧斯卡獎(jiǎng)獲獎(jiǎng)的稀疏動(dòng)態(tài)卷的行業(yè)標(biāo)準(zhǔn)庫(kù)。在整個(gè)視覺(jué)效果行業(yè)中,它被用于模擬和渲染水、火、煙、云和大量其他依賴(lài)于稀疏體積數(shù)據(jù)的效果。該庫(kù)包括一個(gè)分層的、動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu)和一套工具,用于高效地存儲(chǔ)和操作三維網(wǎng)格上離散的稀疏體數(shù)據(jù)。庫(kù)由 學(xué)院軟件基金會(huì)( ASWF ) 維護(hù)。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) VDB :具有動(dòng)態(tài)拓?fù)涞母叻直媛氏∈杈?。

盡管 OpenVDB 提供了性能優(yōu)勢(shì),但它的設(shè)計(jì)并沒(méi)有考慮到 GPUs 。它對(duì)幾個(gè)外部庫(kù)的依賴(lài)使得利用 GPUs 上的 VDB 數(shù)據(jù)變得很麻煩,這正是本文主題的動(dòng)機(jī)。我們將向您介紹 NanoVDB 庫(kù),并提供一些如何在光線(xiàn)跟蹤和碰撞檢測(cè)上下文中使用它的示例。

NanoVDB 簡(jiǎn)介

最初在 NVIDIA 開(kāi)發(fā)的 NanoVDB 庫(kù)是一個(gè) ASWF OpenVDB 項(xiàng)目的新增功能 。它提供了一個(gè)與 OpenVDB 的核心數(shù)據(jù)結(jié)構(gòu)完全兼容的簡(jiǎn)化表示,具有在 NanoVDB 和 OpenVDB 數(shù)據(jù)結(jié)構(gòu)之間來(lái)回轉(zhuǎn)換、創(chuàng)建和可視化數(shù)據(jù)的功能。

poYBAGJqMpWAAPy-AAD5OmBKd9k476.png

圖 1 OpenVDB 和 NanoVDB 數(shù)據(jù)結(jié)構(gòu)的圖示。

NanoVDB 采用了 VDB 樹(shù)結(jié)構(gòu)的壓縮、線(xiàn)性化、只讀表示(圖 1 ),這使得它適合于樹(shù)層次結(jié)構(gòu)的快速傳輸和快速、無(wú)指針遍歷。為了提高效率,數(shù)據(jù)流經(jīng)過(guò)調(diào)整,可以在 GPUs 和 CPU 上使用。

創(chuàng)建 NanoVDB 網(wǎng)格

盡管 NanoVDB 網(wǎng)格是一種只讀數(shù)據(jù)結(jié)構(gòu),但該庫(kù)包含生成或加載數(shù)據(jù)的功能。

所有的 OpenVDB 網(wǎng)格類(lèi) – LevelSets 、 FogVolumes 、 PointIndexGrids 和 PointDataGrids ——都支持 NanoVDB 表示,并且可以直接從 OpenVDB 文件(即 。 vdb 系統(tǒng) 文件)加載。還可以將數(shù)據(jù)加載或保存到 NanoVDB 自己的文件格式中或從中保存,該格式本質(zhì)上是其內(nèi)存流的一個(gè)轉(zhuǎn)儲(chǔ),其中包含用于高效檢查的附加元數(shù)據(jù)。

以下代碼示例從 OpenVDB 文件轉(zhuǎn)換:

以下代碼示例從 OpenVDB 文件轉(zhuǎn)換:

openvdb::io::File file(fileName);
auto vdbGrid = file.readGrid(gridName);
auto handle = nanovdb::openToNanoVDB(vdbGrid);

雖然從現(xiàn)有的 OpenVDB 數(shù)據(jù)加載是典型的用例,但是附帶的網(wǎng)格生成器工具允許您直接在內(nèi)存中構(gòu)建 NanoVDB 網(wǎng)格。提供了一些簡(jiǎn)單原語(yǔ)的函數(shù)來(lái)幫助您入門(mén):

// generate a sparse narrow-band level set (i.e. truncated signed distance field) representation of a sphere.
auto handle = nanovdb::createLevelSetSphere(50, nanovdb::Vec3f(0));

下面的示例顯示了如何使用 lambda 函數(shù)生成小而密集的體積(圖 2 ):

nanovdb::GridBuilder builder(0);
auto op = [](const nanovdb::Coord& ijk) -> float { return menger(nanovdb::Vec3f(ijk) * 0.01f);
};
builder(op, nanovdb::CoordBBox(nanovdb::Coord(-100), nanovdb::Coord(100)));
// create a FogVolume grid called "menger" with voxel-size 1
auto handle = builder.getHandle<>(1.0, nanovdb::Vec3d(0), "menger", nanovdb::GridClass::FogVolume);

網(wǎng)格控制柄

網(wǎng)格句柄 是一個(gè)簡(jiǎn)單的類(lèi),它擁有它分配的緩沖區(qū)的所有權(quán),允許網(wǎng)格的范圍劃分( RAII )。

它還用于封裝不透明的網(wǎng)格數(shù)據(jù)。盡管網(wǎng)格數(shù)據(jù)本身是以數(shù)據(jù)類(lèi)型(如 浮動(dòng) 為模板的),但句柄提供了一種方便的方法來(lái)訪(fǎng)問(wèn)網(wǎng)格的元數(shù)據(jù),而不必知道網(wǎng)格的數(shù)據(jù)類(lèi)型 MIG 是什么。這很有用,因?yàn)槟梢约兇鈴木浔_定 GridType 。

下面的代碼示例驗(yàn)證是否有包含級(jí)別集函數(shù)的 32 位浮點(diǎn)網(wǎng)格:

const nanovdb::GridMetaData* metadata = handle.gridMetaData();
if (!metadata->isLevelSet() || !metadata->gridType() == GridType::Float) throw std::runtime_error("Not the right stuff!");

網(wǎng)格緩沖區(qū)

NanoVDB 被設(shè)計(jì)成支持許多不同的平臺(tái), CPU , CUDA 甚至圖形 api 。為了實(shí)現(xiàn)這一點(diǎn),數(shù)據(jù)結(jié)構(gòu)被存儲(chǔ)在一個(gè)平坦的連續(xù)內(nèi)存緩沖區(qū)中。

使這個(gè)緩沖區(qū)駐留在 CUDA 設(shè)備上很簡(jiǎn)單。為了完全控制,您可以使用 CUDA api 分配設(shè)備內(nèi)存,然后將句柄的數(shù)據(jù)上載到其中。

void* d_gridData;
cudaMalloc(&d_gridData, handle.size());
cudaMemcpy(d_gridData, handle.data(), handle.size(), cudaMemcpyHostToDevice);
const nanovdb::FloatGrid* d_grid = reinterpret_cast(d_gridData);

NanoVDB 的 GridHandle 模板化在緩沖區(qū)類(lèi)型上,緩沖區(qū)類(lèi)型是其內(nèi)存分配的包裝器。它默認(rèn)為使用主機(jī)系統(tǒng)內(nèi)存的主機(jī)緩沖區(qū);然而, NanoVDB 還提供了CUDA 緩沖器,以便輕松創(chuàng)建 CUDA 設(shè)備緩沖區(qū)。

auto handle = nanovdb::openToNanoVDB<nanovdb::CudaDeviceBuffer>(vdbGrid);
handle->deviceUpload();
const nanovdb::FloatGrid* grid = handle->deviceGrid();

將數(shù)據(jù)流解釋為納米網(wǎng)格類(lèi)型后,可以使用這些方法訪(fǎng)問(wèn)網(wǎng)格中的數(shù)據(jù)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱相關(guān) API 的文檔。本質(zhì)上,它反映了 OpenVDB 中只讀方法的基本子集。

auto hostOrDeviceOp = [grid] __host__ __device__ (nanovdb::Coord ijk) -> float {
  // Note that ReadAccessor (see below) should be used for performance.
  return grid->tree().getValue(ijk);
};

可以構(gòu)造自定義緩沖區(qū)來(lái)處理不同的內(nèi)存空間。有關(guān)創(chuàng)建可與圖形 API 交互操作的緩沖區(qū)的示例的更多信息,請(qǐng)參閱存儲(chǔ)庫(kù)中的示例。

致使

由于 NanoVDB 網(wǎng)格提供了一個(gè)緊湊的只讀 VDB 樹(shù),因此它們很適合渲染任務(wù)。光線(xiàn)將 VDB 網(wǎng)格跟蹤到圖像中。使用每線(xiàn)程一條光線(xiàn),并使用一個(gè)自定義的 雷吉諾 functor 生成光線(xiàn),該函數(shù)接受像素偏移并創(chuàng)建世界空間光線(xiàn)。完整的代碼在存儲(chǔ)庫(kù)示例中可用。

考慮到沿射線(xiàn)采樣具有空間相干性這一事實(shí),可以使用 讀寫(xiě)器 來(lái)加速采樣。當(dāng)光線(xiàn)向前移動(dòng)時(shí),這會(huì)緩存樹(shù)遍歷堆棧,從而允許自底向上的樹(shù)遍歷,這比傳統(tǒng)的自上而下遍歷要快得多,后者涉及相對(duì)較慢的無(wú)界根節(jié)點(diǎn)。

auto renderTransmittanceOp = [image, grid, w, h, rayGenOp, imageOp, dt] __host__ __device__ (int i) {
    nanovdb::Ray wRay = rayGenOp(i, w, h);
    // transform the ray to the grid's index-space...
    nanovdb::Ray iRay = wRay.worldToIndexF(*grid);
    // clip to bounds.
    if (iRay.clip(grid->tree().bbox()) == false) {
        imageOp(image, i, w, h, 1.0f);
        return;
    }
    // get an accessor.
    auto acc = grid->tree().getAccessor();
    // integrate along ray interval...
    float transmittance = 1.0f;
    for (float t = iRay.t0(); t < iRay.t1(); t+=dt) {
        float sigma = acc.getValue(nanovdb::Coord::Floor(iRay(t)));
        transmittance *= 1.0f - sigma * dt;
    }
    imageOp(image, i, w, h, transmittance );
};

由于光線(xiàn)與水平集網(wǎng)格相交是一項(xiàng)常見(jiàn)任務(wù), NanoVDB 實(shí)現(xiàn)了一個(gè)零交叉功能,并使用分層 DDA ( HDDA )作為沿光線(xiàn)的根搜索的一部分來(lái)清空空間跳躍(圖 5 )。有關(guān) HDDA 的更多信息,請(qǐng)參閱 OpenVDB 中高效光線(xiàn)行進(jìn)的分層數(shù)字微分分析儀 。下面是代碼示例:

...
    auto acc = grid->tree().getAccessor();
    // intersect with zero level-set...
    float iT0;
    nanovdb::Coord ijk;
    float v;
    if (nanovdb::ZeroCrossing(iRay, acc, ijk, v, iT0)) { 
        // convert intersection distance (iT0) to world-space
        float wT0 = iT0 * grid->voxelSize();
        imageOp(image, i, w, h, wT0);
    } else {
        imageOp(image, i, w, h, 0.0f);
    }
...

碰撞檢測(cè)

碰撞檢測(cè)和解決是 NanoVDB 的另一項(xiàng)任務(wù),因?yàn)樗鼈兺ǔP枰行У夭檎覍?shí)體碰撞對(duì)象的有符號(hào)距離值。窄帶電平集表示非常理想,因?yàn)樗鼈冇梅?hào)對(duì)內(nèi)部/外部拓?fù)湫畔ⅲㄅ鲎矙z測(cè)所需)進(jìn)行了緊湊編碼。此外,最近點(diǎn)變換(沖突解決所需的)很容易從水平集函數(shù)的梯度計(jì)算。

下面的代碼示例是一個(gè)用于處理沖突的函數(shù)。使用 讀寫(xiě)器 是很有用的,因?yàn)橛糜跊_突解決的梯度計(jì)算涉及到同一空間附近的多個(gè)提取。

auto collisionOp = [grid, positions, velocities, dt] __host__ __device__ (int i) {
    nanovdb::Vec3f wPos = positions[i];
    nanovdb::Vec3f wVel = velocities[i];
    nanovdb::Vec3f wNextPos = wPos + wVel * dt;
    // transform the position to a custom space...
    nanovdb::Vec3f iNextPos = grid.worldToIndexF(wNextPos);
    // the grid index coordinate.
    nanovdb::Coord ijk = nanovdb::Coord::Floor(iNextPos);
    // get an accessor.
    auto acc = grid->tree().getAccessor();
    if (tree.isActive(ijk)) { // are you inside the narrow band?
        float wDistance = acc.getValue(ijk);
        if (wDistance <= 0) { // are you inside the levelset?
            // get the normal for collision resolution.
            nanovdb::Vec3f normal(wDistance);
            ijk[0] += 1;
            normal[0] += acc.getValue(ijk);
            ijk[0] -= 1;
            ijk[1] += 1;
            normal[1] += acc.getValue(ijk);
            ijk[1] -= 1;
            ijk[2] += 1;
            normal[2] += acc.getValue(ijk);
            normal.normalize();
            
            // handle collision response with the surface.
            collisionResponse(wPos, wNextPos, normal, wDistance, wNextPos, wNextVel);
        }
    }
    positions[i] = wNextPos;
    velocities[i] = wNextVel;
};

同樣,完整的代碼可以在存儲(chǔ)庫(kù)中找到。

基準(zhǔn)

NanoVDB 被開(kāi)發(fā)成在主機(jī)和設(shè)備上同樣運(yùn)行良好。使用 modernCUDA 中的擴(kuò)展 lambda 支持,您可以輕松地在兩個(gè)平臺(tái)上運(yùn)行相同的代碼。

本節(jié)包括比較英特爾線(xiàn)程構(gòu)建塊和 CPU CUDA 上光線(xiàn)跟蹤和碰撞檢測(cè)性能的基準(zhǔn)測(cè)試。計(jì)時(shí)以毫秒為單位,與 NVIDIA NVIDIA 8000 相比,是在 Xeon E5-2696 v4 x2 –( 88 個(gè) CPU 線(xiàn)程)上生成的。使用的 FogVolume 是兔子云, LevelSet 是 dragon 數(shù)據(jù)集。兩者都可以從 OpenVDB 網(wǎng)站下載。渲染的分辨率為 1024×1024 。這次碰撞試驗(yàn)?zāi)M了一億顆彈道粒子。

雖然基準(zhǔn)測(cè)試(圖 6 和下表)顯示了 NanoVDB 高效表示加速 CPU 上 OpenVDB 的好處,但它真正突出了使用 GPU 對(duì) VDB 數(shù)據(jù)進(jìn)行只讀訪(fǎng)問(wèn)以進(jìn)行碰撞檢測(cè)和光線(xiàn)跟蹤的好處。

圖 6 Intel TBB 與 CUDA 的比較(越小越好)。

結(jié)論

NanoVDB 是一個(gè)小而強(qiáng)大的庫(kù),它通過(guò)使用 GPUs 來(lái)加速某些 OpenVDB 應(yīng)用程序。開(kāi)源存儲(chǔ)庫(kù)現(xiàn)在可用了!要下載源代碼、構(gòu)建示例

關(guān)于作者

Wil Braithwaite 在倫敦和洛杉磯的工作室工作了 15 年的視覺(jué)特效。他的職位包括研究、技術(shù)指導(dǎo)、合成、 CG 監(jiān)督和 MOCAP 監(jiān)督。他開(kāi)創(chuàng)了圖形硬件在 VFX 管道中的應(yīng)用,在 NVIDIA 擔(dān)任高級(jí)應(yīng)用工程師,專(zhuān)門(mén)從事咨詢(xún)、培訓(xùn)和使用 NVIDIA 技術(shù)協(xié)助 VFX 工作室項(xiàng)目的開(kāi)發(fā)。

Ken Museth 是模擬技術(shù)的高級(jí)主管,并于 2020 年初加入 NVIDIA ,當(dāng)時(shí)他發(fā)起了 NanoVDB 的開(kāi)發(fā)。他以前在開(kāi)發(fā)虛擬現(xiàn)實(shí)技術(shù)的時(shí)候,一直致力于虛擬現(xiàn)實(shí)的開(kāi)發(fā)。他是 VDB 的創(chuàng)建者和 OpenVDB 的首席架構(gòu)師,也是其技術(shù)指導(dǎo)委員會(huì)的主席。此外,肯在 SpaceX 公司工作了六年,對(duì)新的猛禽火箭發(fā)動(dòng)機(jī)進(jìn)行大規(guī)模流體動(dòng)力學(xué)模擬。在 2017 年加入 Weta 之前,他在夢(mèng)工廠動(dòng)畫(huà)和數(shù)字領(lǐng)域工作了 10 年,在此之前,他曾在加州理工學(xué)院和林科平大學(xué)擔(dān)任研究員和全職教授。他擁有哥本哈根大學(xué)量子動(dòng)力學(xué)博士學(xué)位,并獲得電影藝術(shù)與科學(xué)學(xué)院頒發(fā)的技術(shù)成就獎(jiǎng)。肯是 SIGGRAPH 2020 技術(shù)論文委員會(huì)成員。

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    4936

    瀏覽量

    102814
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4700

    瀏覽量

    128697
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    3D霍爾傳感器在掃地機(jī)器人中用于碰撞檢測(cè)

    電子發(fā)燒友網(wǎng)站提供《3D霍爾傳感器在掃地機(jī)器人中用于碰撞檢測(cè).pdf》資料免費(fèi)下載
    發(fā)表于 09-06 10:26 ?0次下載
    3D霍爾傳感器在掃地機(jī)器人中用于<b class='flag-5'>碰撞檢測(cè)</b>

    SystemView上下文統(tǒng)計(jì)窗口識(shí)別阻塞原因

    SystemView工具可以記錄嵌入式系統(tǒng)的運(yùn)行時(shí)行為,實(shí)現(xiàn)可視化的深入分析。在新發(fā)布的v3.54版本中,增加了一項(xiàng)新功能:上下文統(tǒng)計(jì)窗口,提供了對(duì)任務(wù)運(yùn)行時(shí)統(tǒng)計(jì)信息的深入分析,使用戶(hù)能夠徹底檢查每個(gè)任務(wù),幫助開(kāi)發(fā)人員識(shí)別阻塞原因。
    的頭像 發(fā)表于 08-20 11:31 ?385次閱讀

    何在FreeRTOS操作系統(tǒng)上跑RT-Thread?

    我現(xiàn)在有個(gè)項(xiàng)目用的MCU 內(nèi)核是很小眾的,芯片廠家僅支持freertos,我現(xiàn)在想把rt-thread弄上去跑,不知道該怎么實(shí)現(xiàn)開(kāi)關(guān)中斷以及上下文切換等,能提供幫助嗎? 底層繼續(xù)使用freertos,我在應(yīng)用中使用rt-thread
    發(fā)表于 07-09 08:30

    何在IDF框架中使用自定義的靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

    基于商業(yè)需要,我們需要在 ESP-IDF v4.0-rc 這個(gè)版本的IDF中開(kāi)發(fā)與使用自定義庫(kù),有如下問(wèn)題請(qǐng)協(xié)助: 1如何利用IDF框架編寫(xiě)自定義靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)? 2如何在IDF框架
    發(fā)表于 06-25 07:57

    鴻蒙Ability Kit(程序框架服務(wù))【應(yīng)用上下文Context】

    [Context]是應(yīng)用中對(duì)象的上下文,其提供了應(yīng)用的一些基礎(chǔ)信息,例如resourceManager(資源管理)、applicationInfo(當(dāng)前應(yīng)用信息)、dir(應(yīng)用文件路徑)、area
    的頭像 發(fā)表于 06-06 09:22 ?406次閱讀
    鴻蒙Ability Kit(程序框架服務(wù))【應(yīng)用<b class='flag-5'>上下文</b>Context】

    編寫(xiě)一個(gè)任務(wù)調(diào)度程序,在上下文切換后遇到了一些問(wèn)題求解

    大家好, 我正在編寫(xiě)一個(gè)任務(wù)調(diào)度程序,在上下文切換后遇到了一些問(wèn)題。 為下一個(gè)任務(wù)恢復(fù)上下文后: __builtin_tricore_mtcr_by_name(\"pcxi\"
    發(fā)表于 05-22 07:50

    Linux內(nèi)存故障追蹤的實(shí)用技術(shù)指南

    使用kprobe跟蹤swap_readpage()內(nèi)核函數(shù),這會(huì)在觸發(fā)換頁(yè)所在的進(jìn)程上下文中進(jìn)行,可以跟蹤觸發(fā)換頁(yè)操作的進(jìn)程的信息。展示了哪個(gè)進(jìn)程正在從換頁(yè)設(shè)備中換入頁(yè),前提是系統(tǒng)中有正在使用的換頁(yè)設(shè)備。
    發(fā)表于 04-01 14:27 ?534次閱讀
    Linux內(nèi)存故障追蹤的實(shí)用技術(shù)指南

    TC397收到EVAL_6EDL7141_TRAP_1SH 3上下文管理EVAL_6EDL7141_TRAP_1SH錯(cuò)誤怎么解決?

    我收到EVAL_6EDL7141_TRAP_1SH 3 類(lèi)(TIN4-Free 上下文列表下溢)上下文管理EVAL_6EDL7141_TRAP_1SH錯(cuò)誤。 請(qǐng)告訴我解決這個(gè)問(wèn)題的辦法。
    發(fā)表于 03-06 08:00

    請(qǐng)問(wèn)risc-v中斷還需要軟件保存上下文和恢復(fù)嗎?

    risc-v中斷還需要軟件保存上下文和恢復(fù)嗎?
    發(fā)表于 02-26 07:40

    何在測(cè)試中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大會(huì) 上分享了他如何在測(cè)試中使用 ChatGPT。
    的頭像 發(fā)表于 02-20 13:57 ?719次閱讀

    何在ModustoolBox中使用XMC4000系列庫(kù)

    我發(fā)現(xiàn) BSP Assistant 只能用于 XMC7000 系列,但我使用的是 XMC4000 系列。 如何在 ModustoolBox 中使用 XMC4000 系列庫(kù)
    發(fā)表于 01-24 06:16

    TC39x如何在用戶(hù)模式下訪(fǎng)問(wèn)外圍設(shè)備?

    你好, 我已經(jīng)在 TC39x 中啟用了用戶(hù)模式 1,并希望在用戶(hù)模式下允許訪(fǎng)問(wèn)一些外圍設(shè)備和功能。 我主要想在用戶(hù)模式下使用 cpu endinit(在啟用和禁用看門(mén)狗的上下文中)。
    發(fā)表于 01-22 06:52

    ISR的上下文保存和恢復(fù)是如何完成的?

    函數(shù):ifxCPU_enableInterrupts ();如果我讓更高優(yōu)先級(jí)的 ISR 中斷優(yōu)先級(jí)較低的 ISR,那么 ISR 的上下文保存和恢復(fù)是如何完成的?
    發(fā)表于 01-22 06:28

    一文讀懂:為什么碰撞檢測(cè)是協(xié)作機(jī)器人的底層技術(shù)

    的機(jī)器人我們將其稱(chēng)為協(xié)作機(jī)器人。 協(xié)作機(jī)器人具有諸多優(yōu)點(diǎn),包括輕量化、環(huán)境友好性、智能感知、人機(jī)協(xié)作和易于編程等。在這些優(yōu)點(diǎn)背后,有一項(xiàng)功能是非常重要的,那就是碰撞檢測(cè)——主要作用是減少碰撞力對(duì)機(jī)器人本體的影
    的頭像 發(fā)表于 12-06 08:35 ?991次閱讀
    一文讀懂:為什么<b class='flag-5'>碰撞檢測(cè)</b>是協(xié)作機(jī)器人的底層技術(shù)

    何在Linux中使用htop命令

    本文介紹如何在 Linux 中使用 htop 命令。
    的頭像 發(fā)表于 12-04 14:45 ?1905次閱讀
    如<b class='flag-5'>何在</b>Linux<b class='flag-5'>中使</b>用htop命令