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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu18系统下采集点云数据(速腾16线激光雷达)与ZED 2 相机进行外参标定(Matlab的LCC工具箱)

發布時間:2024/1/18 Ubuntu 118 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu18系统下采集点云数据(速腾16线激光雷达)与ZED 2 相机进行外参标定(Matlab的LCC工具箱) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇是最近的實驗記錄:在Ubuntu系統下讀取點云數據并在rviz中顯示,錄制自己的rosbag數據包并離線播放,將rosbag文件轉化為pcd格式導入MATLAB中,和雙目相機進行外參標定。

目錄

    • 硬件準備
    • 軟件準備
    • 開始
      • 速騰16線激光雷達
        • 環境配置
        • 編譯運行
        • 錄制rosbag
        • 讀取自己錄制的rosbag
        • 轉化rosbag數據為pcd格式
          • 顯示PCAP格式點云
      • ZED 2 雙目相機
        • 環境配置
        • 利用MATLAB進行雙目相機內參標定
        • MATLAB 外參標定
    • ------------------------------------未完待續-----------------------------------

硬件準備

Robosense 16線激光雷達
按照官網用戶手冊進行電氣連接即可

軟件準備

筆記本電腦安裝Linux系統,我的是Ubuntu 18.04,ROS Melodic。
參考:CSDN、ROS官網、Robosense-Github

開始

速騰16線激光雷達

環境配置

按照官方提示,首先下載rslidar_sdk項目,這里我用的2.1的方法,網絡不好的朋友用2.2的方法手動下載一下應該也可以。之后按照3.3和3.4的指令,安裝兩個必需的庫yaml和libpcap
此外,還需要修改電腦的IP地址來和激光雷達適配。將電腦和雷達連接后,對電腦IP地址進行修改,進入設置-網絡-有線連接-設置-IPV4-地址,在 地址欄填入192.168.1.102,子網掩碼255.255.255.0,網關(gateway)192.168.1.1,(激光雷達默認的IP地址是192.168.1.200)DNS我沒有設置,自動配置,沒有出現什么問題(有其他博主配置了才能運行,這里大家按自己情況參考),其他是要檢查portal是否為6699和7788.

編譯運行

環境配置完畢后編譯運行rslidar_sdk,依舊按官方提示
我試過4.1或4.2的方法都可以。

我的備忘:重新讀取激光雷達數據時先從終端進入我的工作空間cd robosense_ws,編譯運行catkin_make,配置環境source devel/setup.bash,輸入roslaunch rslidar_pointcloud rs_lidar_16.launch 即可彈出Rviz窗口,能看到激光雷達實時采集到的點云數據。(如果看不到的話,在Rviz中左側欄下方的Add按鈕中添加pointcloud話題即可) 使用roslaunch指令可以自動啟動節點管理器,不需要roscore。

錄制rosbag

進入工作空間,輸入指令rosbag record -O [bagname] [topic1] [topic2] [...] 開始錄制點云數據的rosbag,不加中括號,bagname是可選項。按ctrl+c終止record指令即可結束錄制。
我的備忘rosbag record -O lidar1.bag rslidar_points
這里bagname.bag是可以自己指定的錄制出的ros包名稱,如果不指定則默認按照錄制結束時間命名,topic1是激光雷達讀取的點云數據流的話題名稱,也可以列出多個話題名稱。在rviz中可以查看pointcloud對應的topic名稱。

讀取自己錄制的rosbag

這里要記住之前實時顯示點云時的話題名稱,在rviz中修改好配置才能播放rosbag包。
打開終端進入存放自己錄制好的rosbag的工作空間,輸入指令rosbag play -l lidar1.bag
這里 -l 是loop,循環播放的含義,因為我錄制的rosbag時長較短所以循環播放,還有很多播放指令可以參考其他博客

我的備忘:彈出rviz窗口后在左側欄中Global Option 選項中修改Fixed Frame為 rslidar,Add添加PointCloud2話題,并將話題Topic修改為/rslidar_points

轉化rosbag數據為pcd格式

為了在MATLAB中使用點云數據,需要將點云數據轉化為MATLAB支持的pcd或ply格式。之前在Windows系統下使用速騰自帶的RSView軟件采集并可視化點云數據,但錄制的數據包只能存儲為pcap或csv格式,都是MATLAB不支持的格式,所以才有了這篇博客,在Ubuntu下嘗試完成激光雷達和雙目相機的外參標定的工作。
新建終端roscore進入工作空間cd robosense_ws
將ros包轉化成pcd文件rosrun pcl_ros bag_to_pcd <input_file.bag> <topic> <output_directory>
輸入你的rosbag名也可加上路徑,話題名稱,轉化后的pcd文件的存儲位置,這樣就把ros包轉化成pcd格式文件了,注意pcd文件是按幀存儲的,因此一個bag文件獲取的pcd文件是很多個,每個pcd是一幀數據,可以通過pcl_viewer命令pcl_viewer <filename.pcd>來查看,還可以用指令-bc -fc 加上r,g,b數值來改變背景或點云的顏色。

我的備忘rosrun pcl_ros bag_to_pcd pointcloud1/lidar1.bag rslidar_points ~/pcd_file1 pcl_viewer 1_1.pcd -fc (255,255,0)

顯示PCAP格式點云

想將之前在Windows系統下采集的pcap格式點云數據拷貝到ubuntu系統下讀取。這里要進入工作空間下的src文件夾—ros_rslidar—rslidar_pointcloud—launch—rs_lidar_16.launch,修改<param name="pcap" value="你的pcap文件絕對位置">,這里可以添加多行同時讀取多個pcap數據包。
之后在終端進入工作空間cd robosense_ws 輸入roslaunch rslidar_pointcloud rs_lidar_16.launch即可顯示pcap文件。

ZED 2 雙目相機

環境配置

在官方Github這里可以看到使用ZED相機的prerequisition,我的系統是Ubuntu18.04,安裝了CUDA11.7,ROS Melodic。在這里下載安裝了SDK8.2,注意看好自己的系統和CUDA的版本,下載對應的ZED SDK。下載安裝好之后會在/usr/local/zed/tools下看到一系列工具用來可視化相機采集到的圖像。

我的備忘:ZED可視化工具位置:/usr/local/zed/tools/zed_explorer
ZED讀取的圖像保存位置:/home/amber/Documents/ZED

利用MATLAB進行雙目相機內參標定

在Ubuntu系統下安裝MATLAB,這里和window下略有不同,首先從官網上下載了.iso文件,之后在終端運行相應命令來進行安裝,有很多博客講的很仔細就不再展開。安裝好后進入安裝文件夾,我是安在/home下新建的的/matlab2022a文件夾中,進入文件夾打開終端運行bin/matlab即可啟動MATLAB。這里可以參考網上教程創建MATLAB桌面圖標,這樣就不需要每次都進入終端輸入指令來運行了。
剛裝好的MATLAB工具欄部分字體太小,可以在編輯器中輸入如下指令來調整:

s = settings; s.matlab.desktop.DisplayScaleFactor; s.matlab.desktop.DisplayScaleFactor.PersonalValue = 1.4;

1.4是放大的倍數,根據自己需要更改。(這里發現一個問題,調整工具欄字體大小之后有些App使用的時候顯示不完全就很心累,遇到這種情況可以先把PersonalValue改成1運行一下再重新運行一遍,然后重啟MATLAB)

在Apps中找到Stereo Camera Calibrator,就可以開始雙目相機標定啦。只要將雙目相機讀取的左右圖像分別Import即可。在這里附上雙目相機采集圖像并分割左右圖像保存到兩個文件夾下的MATLAB程序:
(電腦連接上雙目相機,運行程序后,按下空格鍵即可采集當前時刻的圖像幀,并自動分割為左右圖像保存在你指定的文件夾下,名稱自定。)

clc; % Open the ZED zed = webcam('/dev/video2') preview(zed) %----------------------------------------- % Set video resolution=720P zed.Resolution = zed.AvailableResolutions{1}; % Get image size [height,width,channels] = size(snapshot(zed)) ok = 1; i = 1; % Start loop while ok % get key value w = waitforbuttonpress; if w % Capture the current image img = snapshot(zed);% Split the side by side image into two images image_left = img(:, 1 : width/2, :); image_right = img(:, width/2 +1: width, :); % save images imwrite(image_left, ['/home/amber/matlab2022a/gyz/left1/',num2str(i),'L.jpg']); imwrite(image_right, ['/home/amber/matlab2022a/gyz/right1/',num2str(i),'R.jpg']); % Display the left and right images subplot(1,2,1); imshow(image_left); title('Image Left'); subplot(1,2,2); imshow(image_right); title('Image Right'); drawnow; i = i+1; end end % close the camera instance % clear zed %----------------------------------------

在工具欄中勾選
進行calibrate,保存Export Camera Parameters中的Export Parameters to Workspace, 還可以保存生成的session
之后在實時編輯器中輸入如下代碼可以將剛才生成的重投影誤差等數據可視化

showReprojectionErrors(stereoParams,'BarGraph'); %顯示重投影誤差showExtrinsics(stereoParams,"PatternCentric") %顯示外參數據showExtrinsics(stereoParams,"CameraCentric")

采集原始圖像時可以多保存一些,因為有些圖像重投影誤差較大,需要手動剔除。我采集了20組,最后保留了15組圖像,最后的Error是0.12。看其他博客說誤差在0.3以下就差不多了,大家可以根據自己實際情況作調整。

MATLAB 外參標定

MATLAB自帶的LiDAR Toolbox可以用來處理點云數據,包括進行濾波降噪、剔除離群點等功能,非常方便。用LiDAR Camera Calibrator 工具箱來進行激光雷達和雙目相機的外參標定,目的是獲取兩個坐標系之間的轉換關系。

首先試著運行了外參標定的官方demo,注意到需要傳入的文件格式是:pcd或ply格式的點云數據 和png或jpg格式的圖像數據。
因此計劃在ROS下讀取rosbag數據再轉化成pcd格式,同時采集雙目相機圖像,傳入工具箱中。這里要注意時空同步的問題,由于我只是采集標定板在不同位置的靜態場景數據,因此只需要改變標定板位置,保持相機和雷達相對位置固定,分別記錄在特定位置下的圖像和點云數據即可。

  • 采集數據
  • 在matlab中進行LCC測試
  • 數據前處理:圖像降噪、提取roi,點云濾波,地面去除分割
  • 粗配準,精配準

本篇主要是記錄自己最近標定實驗的流程,年紀大了,沒有好記性只有爛筆頭啦。如有錯誤還請大家指正,有疑問的朋友們也可以一起交流討論,相互學習共同進步~

------------------------------------未完待續-----------------------------------

總結

以上是生活随笔為你收集整理的Ubuntu18系统下采集点云数据(速腾16线激光雷达)与ZED 2 相机进行外参标定(Matlab的LCC工具箱)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。