日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在旭日X3派开发板上使用Intel Realsense深度相机

發(fā)布時(shí)間:2024/3/26 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在旭日X3派开发板上使用Intel Realsense深度相机 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在前文《多方位玩轉(zhuǎn)“地平線新發(fā)布AIoT開發(fā)板——旭日X3派(Sunrise x3 Pi)” 插電!開機(jī)!輕松秒殺!》中,我們已經(jīng)成功了使用了這個(gè)開發(fā)板。

深度相機(jī)目前在多個(gè)應(yīng)用得到了廣泛的應(yīng)用,如果能在上面運(yùn)行起來深度相機(jī)的話,那這個(gè)開發(fā)板豈不是能應(yīng)用在更多的場景上😃。

我在這個(gè)板子上對深度相機(jī)所需的SDK進(jìn)行了編譯,SDK版本為:Intel? RealSense? SDK 2.0 (v2.50.0)。

📣📣📣2022-7-2日更新:利用預(yù)編譯包,成功獲取D435的RGBD圖像!!!

總結(jié)下遇到的問題:

  • 軟鏈接似乎不能直接復(fù)制粘貼,在新的環(huán)境下要手動(dòng)配置下,所以在百度云里我刪除了軟連接的文件。
  • 部分相機(jī)需要99-realsense-libusb.rules文件支持。

一 預(yù)編譯包

我編譯這個(gè)SDK花費(fèi)了5.6個(gè)小時(shí),為了方便各位后續(xù)使用,各位可以直接下載編譯好的文件,包含C++和Python的庫,相關(guān)文件我已經(jīng)上傳至百度云(提取碼:awe4 )。

在提供的這些文件中,壓縮包built_realsense.zip為這些文件夾的集合,99-realsense-libusb.rules為相機(jī)規(guī)則文件,在源碼包的config文件夾中。

①頭文件、庫文件、bin文件配置。 文件夾libincludebin的內(nèi)容都要放在/usr/local文件夾下,假設(shè),這些文件的下載根目錄為downpath,則具體操作如下(建議移動(dòng)前check下路徑):

## 復(fù)制文件 sudo cp -r downpath/bin/* /usr/local/bin/ sudo cp -r downpath/include/* /usr/local/include/ sudo cp -r downpath/lib/* /usr/local/lib/## 創(chuàng)建庫的軟鏈接 sudo ln -s /usr/local/lib/librealsense2-gl-so.2.50.0 /usr/local/lib/librealsense2-gl.so.2.50 sudo ln -s /usr/local/lib/librealsense2-gl-so.2.50 /usr/local/lib/librealsense2-gl.so sudo ln -s /usr/local/lib/librealsense2.so.2.50.0 /usr/local/lib/librealsense2.so.2.50 sudo ln -s /usr/local/lib/librealsense2.so.2.50 /usr/local/lib/librealsense2.so

② Python包配置。 文件夾python3的內(nèi)容注意要放在/usr/lib/python3/dist-packages/里面(建議移動(dòng)前check下路徑)。

## 復(fù)制文件 sudo cp -r downpath/python3/dist-packages/pyrealsense2 /usr/lib/python3/dist-packages/ ## 創(chuàng)建庫的軟鏈接 sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pybackend2.cpython-38-aarch64-linux-gnu.so.2.50.0 /usr/lib/python3/dist-packages/pyrea lsense2/pybackend2cpython-38-aarch64-linux-nu.so.2.50 sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pybackend2.cpython-38-aarch64-linux-gnu.so.2.50 /usr/lib/python3/dist-packages/pyrea lsense2/pybackend2cpython-38-aarch64-linux-nu.so sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pyrealsense2.cpython-38-aarch64-linux-gnu.so.2.50.0 /usr/lib/python3/dist-packages/pyrealsense2.cpython-38-aarch64-linux-gnu.so.2.50 sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pyrealsense2.cpython-38-aarch64-linux-gnu.so.2.50 /usr/lib/python3/dist-packages/pyrealsense2.cpython-38-aarch64-linux-gnu.so

③ bin文件配置。 可執(zhí)行文件,拷貝過后不存在執(zhí)行屬性。需要sudo chmod +x **來賦予執(zhí)行權(quán)限

④ rules文件配置。 測試中發(fā)現(xiàn)部分文件需要rules文件支持,系統(tǒng)中有兩個(gè)放置rules文件的地方,安全起見,在文件夾/usr/lib/udev/rules.d/和文件夾/usr/lib/udev/rules.d/下都存一份99-realsense-libusb.rules文件。

這樣就可以愉快的使用啦(? ?_?)?,下圖為D435檢測情況。

歡迎給位來測試哦!!o( ̄▽ ̄)ブ

本次測試發(fā)現(xiàn),開發(fā)板似乎存在USB3.0接口不穩(wěn)的問題,多重試重啟幾次?_?

二 自己編譯SDK

編譯所需要的文件已經(jīng)放在百度云(提取碼:li0f )中,在編譯前請?zhí)崆跋螺d

編譯前需要注意以下幾點(diǎn):

  • 由于編譯過程需要聯(lián)網(wǎng),然而開發(fā)板的有線網(wǎng)默認(rèn)為靜態(tài)地址,因此要強(qiáng)行關(guān)掉有線網(wǎng)的連接,關(guān)閉指令為sudo nmcli device disconnect eth0,eth0為網(wǎng)絡(luò)名,可以利用sudo nmcli dev查看。
  • 依賴一些包,在安裝前要安裝上sudo apt-get install libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libusb-dev。
  • 所需SDK依賴GLFW庫,源碼包已放在上述的百度云中,也可以從https://github.com/glfw/glfw/releases/download/3.3.7/glfw-3.3.7.zip中下載,之后參考博客《Ubuntu18.04安裝glfw3.3》的方式進(jìn)行安裝。

以上內(nèi)容是我編譯過程中記錄的一些筆記,可能對丟失一些庫,但是這些都會(huì)在系統(tǒng)上提示,根據(jù)需求安裝即可。

下面開始編譯Realsense的SDK,下面是操作步驟:

  • 解壓librealsense-2.50.0.zip,進(jìn)入文件夾cd librealsense-2.50.0,并創(chuàng)建編譯文件夾mkdir build。
  • 編譯過程參考《Running pyrealsense2 on JetsonNano》,這里提到了利用RSUSB方法進(jìn)行編譯,我個(gè)人理解為是在編譯過程中要將深度相機(jī)連接到開發(fā)板上(不確定是否正確啊)。我使用的cmake指令為:cmake ../ -DFORCE_RSUSB_BACKEND=ON -DBUILD_PYTHON_BINDINGS:bool=true -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=release,切記安裝過程要聯(lián)網(wǎng)。
  • cmake過程中會(huì)下載一些依賴的代碼文件,有錯(cuò)誤的話一定要根據(jù)需求修改,防止后續(xù)make的時(shí)候出錯(cuò),導(dǎo)致白白編譯。
  • cmake成功之后就要使用make進(jìn)行編譯,因?yàn)橄到y(tǒng)內(nèi)存只有2G,因此如果想一遍成的話,在build文件夾下輸入make即可,切記不能使用多線程編譯,內(nèi)存不夠(我沒成功創(chuàng)建虛擬內(nèi)存,似乎系統(tǒng)內(nèi)核刪除了虛擬內(nèi)存的分配功能)。如果想更快的話,可以動(dòng)態(tài)的輸入make -j2,這樣在內(nèi)存不夠的地方再改回make即可。
  • 編譯成功之后,輸入sudo make install將編譯好的庫復(fù)制到系統(tǒng)中。
  • 本方法編譯的結(jié)果包含C++庫和Python函數(shù)包👏

    三 使用Realsense

    在使用前,一定要輸入sudo rs-enumerate-devices查看設(shè)備支持的分辨率以及連接信息。

    下面為設(shè)備連接信息,可以看到,當(dāng)前設(shè)備識(shí)別的USB接口為3.2接口,這樣就可以獲取更大分辨率的RGBD圖像了。

    Device info:Name : Intel RealSense L515Serial Number : f0211269Firmware Version : 01.05.08.01Recommended Firmware Version : 01.05.08.01Physical Port : 2-1-2Debug Op Code : 15Product Id : 0B64Camera Locked : YESUsb Type Descriptor : 3.2Product Line : L500Asic Serial Number : 0003a9d3dadaFirmware Update Id : 0003a9d3dada

    同時(shí)記錄,彩色相機(jī)和深度相機(jī)支持的配置,方便后續(xù)相機(jī)分辨率的設(shè)置。

    下面提供獲取RGBD數(shù)據(jù)的python代碼

    from hobot_vio import libsrcampy as srcampy import cv2 import numpy as np import time import pyrealsense2.pyrealsense2 as rs# 這里把前面的HDMI可視化部分的代碼貼上 # 復(fù)制類class ImageShow(object)pipeline = rs.pipeline() config = rs.config() ## 這里根據(jù)前面sudo rs-enumerate-devices的輸出進(jìn)行配置 config.enable_stream(rs.stream.depth, 1024, 768, rs.format.z16, 30) config.enable_stream(rs.stream.color, 1920, 1080, rs.format.rgb8, 30) align_to = rs.stream.color alignedFs = rs.align(align_to) profile = pipeline.start(config)####################################### ## 下面是獲取內(nèi)參的方式 frames = pipeline.wait_for_frames() depth = frames.get_depth_frame() color = frames.get_color_frame() # 獲取內(nèi)參 depth_profile = depth.get_profile() print('depth_profile:', depth_profile) # <pyrealsense2.video_stream_profile: 1(0) 640x480 @ 30fps 1> print(type(depth_profile)) # <class 'pyrealsense2.pyrealsense2.stream_profile'> print('fps:', depth_profile.fps()) # 30 print(depth_profile.stream_type()) # stream.depth print('', depth_profile.unique_id) # <bound method PyCapsule.unique_id of <pyrealsense2.video_stream_profile: 1(0) 640x480 @ 30fps 1>> color_profile = color.get_profile() print(depth_profile.fps()) print(depth_profile.stream_index()) color_intrin = cvsprofile.get_intrinsics() print(color_intrin) # width: 640, height: 480, ppx: 318.482, ppy: 241.167, fx: 616.591, fy: 616.765, model: 2, coeffs: [0, 0, 0, 0, 0] depth_intrin = dvsprofile.get_intrinsics() print(depth_intrin) extrin = depth_profile.get_extrinsics_to(color_profile) print(extrin)depth_sensor = profile.get_device().first_depth_sensor() depth_scale = depth_sensor.get_depth_scale() print('depth scale: ', depth_scale)#################### # 視頻流展示 im_show = ImageShow() while True:# 獲取圖片幀frameset = pipeline.wait_for_frames()aligned_frames = alignedFs.process(frameset)color_frame = aligned_frames.get_color_frame()depth_frame = aligned_frames.get_depth_frame()if not depth_frame or not color_frame:continuedepth_img = np.asanyarray(depth_frame.get_data())color_img = np.asanyarray(color_frame.get_data())color_img = cv2.cvtColor(color_img, cv2.COLOR_RGB2BGR)depth_bgr = cv2.applyColorMap(cv2.convertScaleAbs(depth_img, alpha=0.03), cv2.COLORMAP_JET)show_img = np.hstack([color_img, depth_bgr])im_show.show(show_img) im_show.close()

    跑起來之后,在顯示屏上的展示效果如下,能夠有效地獲取目標(biāo)的RGBD數(shù)據(jù)。

    但是,比較危險(xiǎn)的一點(diǎn),在整體的展示過程中,內(nèi)存耗用200M,CPU幾乎占滿,這樣很難繼續(xù)做其他的工作(這也與RGBD分辨率為1920*1080有關(guān),而且獲取數(shù)據(jù)這個(gè)過程存在大量的線程)。希望后續(xù)這個(gè)板子能從硬件上對這個(gè)SDK進(jìn)行一個(gè)適配,以騰出更多的計(jì)算空間給下游算法。

    四 小結(jié)

    花費(fèi)億點(diǎn)時(shí)間,終于完成了realsense的SDK編譯與使用,這意味著這個(gè)新板子可應(yīng)用在更多的場景。希望后續(xù)能夠?qū)@個(gè)問題進(jìn)行適配,降低CPU占用,給核心算法留點(diǎn)計(jì)算空間→_→。

    總結(jié)

    以上是生活随笔為你收集整理的在旭日X3派开发板上使用Intel Realsense深度相机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。