在 ROS Noetic 中使用帶 GPU 支持的 PCL

本文章同步發(fā)布于
https://williamgong.github.io/2024/03/05/%E5%9C%A8ROSNoetic%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%B8%A6GPU%E6%94%AF%E6%8C%81%E7%9A%84PCL/

前言

ROS Noetic 中自帶的 PCL 1.10 并沒有 GPU 支持。如果想要啟用 GPU/CUDA 支持的話,只能自己編譯。
然而與 OpenCV 類似,ROS 使用了 pcl_ros, pcl_conversions 等包作為 PCL 與 在 ROS 的接口,使用自編譯版本的 PCL 需要修改這些包的設(shè)置,較為麻煩。
以下是在 ROS 中使用自編譯(帶 GPU 支持)版本 PCL 的完整步驟。

編譯 PCL

最新版 PCL (PCL 1.14.0) 若啟用 gpu 支持,需要 CUDA Toolkit v9.2+
同時(shí),因?yàn)槭褂昧?ccmake,需要安裝 cmake-curses-gui:

sudo apt install cmake-curses-gui

在項(xiàng)目官方倉(cāng)庫(kù)下載 PCL,然后簽出到自己需要的版本。

一般保持在 master 分支即可。若想使用特定版本,可以使用 git tag 查看版本并簽出。
簽出完成后,至項(xiàng)目目錄下:

mkdir build && cd build
ccmake ..

此時(shí),進(jìn)入 cmake 配置界面。
c 進(jìn)入編譯選項(xiàng)配置。

ccmake 界面

這里把選項(xiàng) BUILD_CUDABUILD_GPU 打開。
多按幾次 c,會(huì)根據(jù)之前的選項(xiàng)生成新的選項(xiàng)。然后根據(jù)需要打開選項(xiàng)。
c,直到下方出現(xiàn)按鍵 g 的提示后,按 g。此時(shí)配置完成。
之后編譯安裝:

make
sudo make install

默認(rèn)安裝路徑下,PCL 會(huì)被安裝到 /usr/local。

修改 pcl_conversions 和 pcl_ros

對(duì)于 pcl_conversion,需要修改的文件是 /opt/ros/noetic/share/pcl_ros/cmake/pcl_rosConfig.cmake
首先是修改頭文件的目錄。找到含有 include 目錄的行,將 /usr/include/pcl-1.10 改為 /usr/local/include/pcl-1.14
再往下到 set(libraries 開頭的行,將所有 pcl 的庫(kù)路徑修改至 /usr/local/lib 下。
對(duì)于 pcl_ros,也是同樣操作。但 pcl_ros 可能缺少部分 pcl 庫(kù)的路徑,如 libpcl_registration.so。需要手動(dòng)加上。

實(shí)際路徑根據(jù)安裝位置確定,這里是默認(rèn)安裝位置。

至此,安裝已全部完成。所有依賴 pcl,pcl_ros,pcl_conversion 的包應(yīng)該都能正常編譯。
如果發(fā)現(xiàn)鏈接器報(bào)錯(cuò) undefined reference,可能是 pcl_ros 的部分庫(kù)目錄沒有加上,找到?jīng)]有加上的路徑就好。

附:禁止 pcl_conversions 和 pcl_ros 的更新

操作完成后,這兩個(gè)包在更新時(shí)可能會(huì)覆蓋掉上面進(jìn)行的設(shè)置,可以使用 apt-mark 屏蔽對(duì)軟件包的更新:

sudo apt-mark hold pcl_conversions
sudo apt-mark hold pcl-ros
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容