快速上手:15分鐘從插線到讀出深度數(shù)據(jù))
RealSense 深度相機(jī)快速上手15分鐘從插線到讀出深度數(shù)據(jù)【免費(fèi)下載鏈接】librealsenseRealSense SDK項(xiàng)目地址: https://gitcode.com/GitHub_Trending/li/librealsenselibrealsense 是 RealSense 深度相機(jī)的官方開源 SDK把相機(jī)的彩色、深度、紅外流變成代碼能用的數(shù)據(jù)。這篇寫給做機(jī)器人、3D 掃描、視覺項(xiàng)目的你讀完能裝好 SDK、確認(rèn)相機(jī)在線并讓程序讀出物體距離。裝好 SDK按場景挑最省事的安裝路徑先按場景選Python 用戶走 pipUbuntu 上寫 C 走官方 apt 源因?yàn)閮烧叨际穷A(yù)編譯的省掉源碼編譯那半小時(shí)。Python任何平臺pip install pyrealsense2這條命令裝 Python 綁定裝完就能import pyrealsense2。穩(wěn)定版叫 pyrealsense2嘗鮮版叫 pyrealsense-beta兩個只裝一個。Ubuntu 20/22/24C 開發(fā)curl -sSf https://librealsense.realsenseai.com/Debian/librealsenseai.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/librealsenseai.gpg /dev/null echo deb [signed-by/etc/apt/keyrings/librealsenseai.gpg] https://librealsense.realsenseai.com/Debian/apt-repo $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/librealsense.list sudo apt-get update這三行添加官方 APT 源并刷新包列表。sudo apt-get install librealsense2-dkms librealsense2-utils librealsense2-devdkms 包會自動打好內(nèi)核模塊補(bǔ)丁內(nèi)核模塊是 OS 加載進(jìn)內(nèi)核、用來驅(qū)動硬件的一段代碼升級內(nèi)核后自動重編utils 提供 realsense-viewer 等工具dev 提供編譯頭文件。裝完驗(yàn)證驅(qū)動是否生效modinfo uvcvideo | grep version:輸出包含 realsense 字樣說明打過補(bǔ)丁的驅(qū)動已加載。源碼編譯只有兩種情況需要內(nèi)核不在 dkms 支持的 LTS 列表里或要合并自己的補(bǔ)丁。步驟是git clone https://gitcode.com/GitHub_Trending/li/librealsense cd librealsense ./scripts/setup_udev_rules.sh ./scripts/patch-realsense-ubuntu-lts-hwe.sh克隆倉庫、裝 udev 規(guī)則udev 規(guī)則是決定哪個用戶能讀 USB 設(shè)備的系統(tǒng)配置、再給當(dāng)前 Ubuntu LTS 內(nèi)核打驅(qū)動補(bǔ)丁。然后編譯安裝mkdir build cd build cmake .. -DBUILD_EXAMPLEStrue make -j$(nproc) sudo make install在 build 目錄完成配置和編譯把庫、示例、工具裝進(jìn) /usr/local。完整流程見 doc/distribution_linux.md??炊?dāng)?shù)據(jù)深度相機(jī)給你的四類數(shù)據(jù)各在說什么相機(jī)給你的不是一張圖而是四類數(shù)據(jù)各自回答不同的問題。彩色幀普通 RGB 照片給人看和展示用單位是像素。深度幀每個像素存著相機(jī)到物體的距離單位毫米0 表示沒測出來。這是整個 SDK 的核心產(chǎn)出?;A(chǔ)設(shè)施幀紅外左右紅外相機(jī)拍下的圖是算深度的原料人眼在暗處看到的就是它。點(diǎn)云把每個深度像素按相機(jī)參數(shù)投影到三維空間得到 (x, y, z) 坐標(biāo)集合是機(jī)器人抓取和 3D 掃描的起點(diǎn)。完成最常用的四個操作從出流到調(diào)參裝完之后的日常工作基本就這四件事。跑通第一個出流程序用 pipeline 接口因?yàn)樗雅渲?、啟動、取幀打包成一個對象5 行就能出數(shù)。import pyrealsense2 as rs pipe rs.pipeline() pipe.start() frames pipe.wait_for_frames() print(frames.get_depth_frame().get_distance(320, 240))保存后運(yùn)行 → 終端打印畫面中心像素的距離單位是米。C 版等價(jià)物是示例目錄里的 hello-realsense完整示例清單在 examples/。把深度變成 3D 點(diǎn)云深度幀還是二維的點(diǎn)云把它立起來。編譯時(shí)帶-DBUILD_EXAMPLEStrue運(yùn)行 rs-pointcloud → 彈出一個實(shí)時(shí) 3D 點(diǎn)云窗口鼠標(biāo)可以旋轉(zhuǎn)和縮放。每個深度像素都用標(biāo)定數(shù)據(jù)相機(jī)鏡頭參數(shù)SDK 已內(nèi)置算出自己的三維坐標(biāo)。錄制與回放 .db3 文件把現(xiàn)場一次流式會話存成文件之后不接相機(jī)也能反復(fù)調(diào)試。.db3 是基于 SQLite 的錄制文件和 ROS2 的 rosbag2 同格式標(biāo)準(zhǔn) ROS2 工具能直接打開。代碼側(cè)兩個對象各管一頭rs2::recorder 把真實(shí)設(shè)備包成邊用邊錄的設(shè)備rs2::playback 把文件加載成只讀設(shè)備兩者用法和普通設(shè)備一致還能 seek、變速。viewer 里在 Settings Playback Record 勾選錄制。注意想讓文件被 ROS2 工具兼容把壓縮選項(xiàng)設(shè)成 Never Compress。細(xì)節(jié)看 doc/record-and-playback.md。打開 D400 高級模式控制面板在 viewer 里開啟高級模式 → 出每個傳感器的獨(dú)立控制項(xiàng)激光功率、曝光、幀率都能單獨(dú)調(diào)開啟動作會寫進(jìn)相機(jī)閃存重置相機(jī)后也不用再開。過一遍三個高頻故障找不到相機(jī)、深度圖有洞、顏色對不齊真實(shí)問題大多落在這三類里各按現(xiàn)象 → 怎么查 → 看到什么 → 怎么解決走一遍。系統(tǒng)找不到相機(jī)現(xiàn)象lsusb | grep 8086無輸出viewer 列表是空的程序報(bào)找不到設(shè)備。怎么查先看 USB 層再看內(nèi)核日志。lsusb | grep 8086 dmesg | tail -508086 是 RealSense 的 USB 廠商號第一條確認(rèn)硬件是否被系統(tǒng)看到第二條看驅(qū)動有沒有報(bào)錯。看到什么lsusb 為空是 USB 層問題lsusb 有設(shè)備但 dmesg 里 uvcvideo 報(bào)錯是驅(qū)動層問題。怎么解決換到 USB3 口口內(nèi)是藍(lán)色換原裝線剛升級過內(nèi)核的話重跑一次內(nèi)核補(bǔ)丁腳本再插拔相機(jī)。深度圖大片空洞現(xiàn)象深度圖大面積黑色0 值物體邊緣鋸齒深度質(zhì)量工具的 Fill Rate有效像素占比直接反映圖能用來算的比例只有 78% 左右。怎么查編譯 post-processing 示例掛上空間濾波器spatial filter讓每個像素參考鄰居值平滑??吹绞裁撮_啟后 Fill Rate 升到 92% 左右邊緣變連續(xù)把它的 alpha 強(qiáng)度參數(shù)調(diào)到 0空洞立刻回來證明是濾波在起作用。怎么解決空間濾波常開再疊一個時(shí)域?yàn)V波器temporal filter默認(rèn)時(shí)間常數(shù) 200 ms壓掉逐幀抖動的噪點(diǎn)。顏色和深度對不齊現(xiàn)象深度幀和彩色幀疊在一起同一個物體的輪廓錯位點(diǎn)云顏色串邊。怎么查跑 align 示例它把深度幀映射到彩色幀的坐標(biāo)系空間對齊spatial alignment??吹绞裁磳R后兩幀共用同一套像素網(wǎng)格錯位消失單幀對齊開銷幾毫秒實(shí)時(shí)流完全夠用。怎么解決下游計(jì)算統(tǒng)一用對齊后的深度幀需要反方向彩色到深度映射時(shí)看 align-advanced 示例。平臺差異與高頻坑差異集中在 Linux 驅(qū)動環(huán)節(jié)Windows 和 Python 路線基本沒有摩擦。平臺安裝方式驗(yàn)證驅(qū)動備注Ubuntu 20/22/24官方 apt 包modinfo 輸出含 realsense推薦路線功能最完整非 LTS 內(nèi)核 / 其他發(fā)行版源碼編譯 手動補(bǔ)丁dmesg 出現(xiàn)新 uvcvideo 注冊需自己確認(rèn)內(nèi)核版本受支持Windows官方預(yù)編譯 bundle設(shè)備管理器識別相機(jī)不用打內(nèi)核補(bǔ)丁macOS源碼編譯依賴走 Homebrewlsusb 看到設(shè)備文檔見 doc/installation_osx.md僅 Pythonpip install pyrealsense2lsusb 看到 8086 設(shè)備起步最快高頻坑按癥狀 → 原因 → 解法記lsusb | grep 8086為空相機(jī)插了 USB2 口或線不行 → 換 USB3 口換原裝線。dmesg 報(bào)tainting kernel內(nèi)核 4.4 之后的常規(guī)警告不影響功能 → 忽略。編譯報(bào)fastrtps/fastcdr錯找不到 DDS 依賴 → cmake 加-DBUILD_WITH_DDSOFF。編譯報(bào) curl 依賴錯更新檢查模塊找不到 libcurl → cmake 加-DCHECK_FOR_UPDATESOFF。gcc: internal compiler error編譯內(nèi)存不夠 → 關(guān)掉占內(nèi)存的程序虛擬機(jī)里把內(nèi)存加到至少 2 GB。虛擬機(jī)里相機(jī)行為詭異USB3 透傳有損耗官方不保證 VM 支持 → 要用就選 VMware 并確認(rèn) USB3 控制器模擬正?!,F(xiàn)在就做插好相機(jī)運(yùn)行 realsense-viewer → 彩色、深度、紅外三個視口亮起。跑一遍上面那段 5 行腳本拿到你的第一個深度數(shù)值。相機(jī)不亮就先lsusb | grep 8086按第一節(jié)的順序往下排?!久赓M(fèi)下載鏈接】librealsenseRealSense SDK項(xiàng)目地址: https://gitcode.com/GitHub_Trending/li/librealsense創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考