Astra相機的ROS開發環境配置與使用
- 一、Astra相機簡介
- 二、搭建ROS作業空間
- 1.下載ROS驅動功能包
- 2.安裝依賴
- 3.配置作業空間
- 三、配置設備節點
- 1.固定設備串口號
- 2.獲取設備資訊
- 3.修改launch檔案
- 四、啟動相機節點
- 五、配置相機內參
- 1.下載內參檔案
- 2.使用內參檔案
- 3.啟動launch
- 六、RVIZ查看點云
- 1.啟動rviz
- 2.查看點云
- 3.快捷啟動rviz
- 4.保存點云資訊
- 5.查看pcd檔案
一、Astra相機簡介

Astra相機(售價150)是由樂視與奧比中光合作生產的一款體感相機,其對標微軟Kinect相機(售價800+),可用于機器視覺、3D點云、opencv、SLAM學習,支持ROS框架能夠在ubuntu、windows、Android等系統下進行開發,其官方(https://orbbec3d.com/develop/)提供了相應的SDK供開發者使用,

相機的具體引數如下所示,本文主要講解如何在Ubuntu端搭建基于ROS的開發環境,

二、搭建ROS作業空間
1.下載ROS驅動功能包
Astra相機官方提供了ROS驅動進行開發,該驅動目前僅支持ROS Kinetic 和 Melodic版本,
該專案的官方地址為https://github.com/orbbec/ros_astra_camera,由于處于外網原因,建議將其搬運至國內碼云后進行下載,此處提供我搬運的碼云地址:https://gitee.com/jasonli0012/ros_astra_camera

2.安裝依賴
下載完專案原始碼后,需要先進行安裝依賴檔案,此處安裝命令中的**$ROS_DISTRO**將根據你的ROS版本不同而不同,此處我選擇Melodic版本進行開發,Astra相機同樣支持ROS Kinetic版本的開發,
sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros

3.配置作業空間
完成安裝依賴檔案后,需要新建一個作業空間用于對Astra相機的ROS開發,
# 新建作業空間
mkdir -p astra/src
cd astra
catkin_make
source devel/setup.bash
# 將下載的原始碼移動至src目錄下
cd src
mv ~/ros_astra_camera ~/ws/astra/src/
# 編譯
cd ..
catkin_make
編譯成功后如圖所示:

此處建議大家將source devel/setup.bash寫入 .bashrc檔案中,以防止之后重復操作,此處我用的命令列為zsh所以修改的檔案為 .zshrc,加載的檔案為 setup.zsh,
# bash
sudo vi ~/.bashrc
# 填寫你自己的作業空間目錄
source ~/ws/astra/devel/setup.bash
# zsh
sudo vi ~/.zshrc
# 填寫你自己的作業空間目錄
source ~/ws/astra/devel/setup.zsh

三、配置設備節點
1.固定設備串口號
為了方便之后進行開發,需要將Astra相機的串口號固定表示,其官方功能包中就自帶腳本,只需要直接運行即可,
roscd astra_camera
# 運行腳本
./scripts/create_udev_rules
出現如下圖所示內容即表明成功,

隨后再次編譯作業空間即可,
# 到達作業空間下
roscd astra_camera
cd ../..
# 編譯
catkin_make -j7
上述命令中編譯命令catkin_make后帶的引數表示使用幾核(CPU核心)進行編譯,此處表明使用7核心進行編譯以達到快速編譯,
2.獲取設備資訊
由于官方提供的launch檔案是通過設備的 vendor (設備貼牌)和 product (設備ID)進行啟動節點的,所以首先我們需要確定設備的貼牌和ID ,
在命令列輸入命令lsusb分別查看Astra相機插拔前后的設備資訊,可以發現設備資訊,

通過對比,排除多出的USB驅動外,剩余的兩項即為設備資訊
Bus 001 Device 019: ID 2bc5:0502
Bus 001 Device 018: ID 2bc5:0403
其中設備的貼牌為 2bc5 ,而0502 代表彩色攝像頭,0403代表深度攝像頭,
3.修改launch檔案
在獲取設備資訊后,我們需要修改官方提供的launch檔案,
# 找到launch檔案所在目錄
roscd astra_camera/launch
# 編輯launch檔案
sudo gedit astra_pro,launch
打開launch檔案后,找到第71行,將設備的屬性修改為彩色相機的設備ID,

四、啟動相機節點
啟動launch檔案,運行節點,出現如下圖所示內容即表示運行成功,此處黃色報警內容可暫時忽略,
roslaunch astra_carma astrapro.launch

另開命令列運行rqt節點
rosrun rqt_image_view rqt_image_view
在rqt工具上方選擇所需訂閱的話題即可調出不同的圖片,此處展示為彩色圖片(rgb)中的原圖(image_raw),此外也可以選擇深度、紅外等所需影像,


五、配置相機內參
1.下載內參檔案
由于相機本身存在畸變,所以需要使用一些組態檔來完成去畸變作業,此處給出Astra相機中彩色相機和深度相機的內參組態檔,
camera.yaml檔案
image_width: 640
image_height: 480
camera_name: camera
camera_matrix:
rows: 3
cols: 3
data: [577.54679, 0. , 310.24326,
0. , 578.63325, 253.65539,
0. , 0. , 1. ]
camera_model: plumb_bob
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [0.125197, -0.196591, 0.006816, -0.006225, 0.000000]
rectification_matrix:
rows: 3
cols: 3
data: [1., 0., 0.,
0., 1., 0.,
0., 0., 1.]
projection_matrix:
rows: 3
cols: 4
data: [590.55457, 0. , 306.57339, 0. ,
0. , 592.83978, 256.43008, 0. ,
0. , 0. , 1. , 0. ]
depth.yaml 檔案
image_width: 640
image_height: 480
camera_name: depth_Astra_Orbbec
camera_matrix:
rows: 3
cols: 3
data: [582.795354, 0.000000, 326.415982, 0.000000, 584.395006, 249.989410, 0.000000, 0.000000, 1.000000]
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [-0.068613, 0.174404, 0.001015, 0.006240, 0.000000]
rectification_matrix:
rows: 3
cols: 3
data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000]
projection_matrix:
rows: 3
cols: 4
data: [586.186035, 0.000000, 329.702427, 0.000000, 0.000000, 590.631409, 250.167765, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000]
復制上述檔案并放置到cfg檔案夾中即可,
#路徑
roscd astra_camera/cfg

2.使用內參檔案
為了在啟動launch檔案時呼叫內參檔案,需要對其進行修改,
roscd astra_camera/launch
sudo gedit astrapro.launch

此處使用gedit編輯器打開launch檔案并修改其25、26行內容,將內參檔案的地址填寫入內,
# 原內容:
<arg name="rgb_camera_info_url" default="" />
<arg name="depth_camera_info_url" default="" />
# 替換為:
<arg name="rgb_camera_info_url" default="file://$(find astra_camera)/cfg/camera.yaml" />
<arg name="depth_camera_info_url" default="file://$(find astra_camera)/cfg/depth.yaml" />
隨后向下,找到第84行修改為如下內容:
# 原內容:
<param name="camera_info_url" value="" />
# 替換為:
<param name="camera_info_url" type="string" value="$(arg rgb_camera_info_url)" />

3.啟動launch
配置完成后可以再次啟動節點,查看校準后的影像內容,
原始的深度圖:

校準后的深度圖:

六、RVIZ查看點云
1.啟動rviz
除了使用rqt工具進行查看影像外,還可以使用rviz工具進行查看影像,命令列中直接啟動rviz工具,
rviz

此時的rviz內尚未訂閱任何節點,此時可以訂閱查看影像資訊,點擊左下方Add按鈕選擇image型別,添加影像節點,

隨后在左側打開選項卡image,在image Topic中選擇自己訂閱的節點即可,

上述步驟可重復進行,從而達到訂閱多個攝像頭節點,如下圖即為同時打開三個攝像頭,

2.查看點云
同樣再次點擊左下方Add按鈕,選擇PointCloud2型別新建內容,

隨后,在左側PointCloud2選項下訂閱 /camera/depth_registered/points話題,并將Global Options下Fixed Frame選為camera_depth_optical_frame,完成上述操作后,即可在中央查看到點云選項,

3.快捷啟動rviz
為了方便之后減少重復打開rviz添加上述內容的作業,此處提供了rviz的引數檔案以方便再次打開,
Panels:
- Class: rviz/Displays
Help Height: 0
Name: Displays
Property Tree Widget:
Expanded:
- /Global Options1
- /Status1
- /PointCloud21
- /Depth1
- /ir1
- /RGB1
Splitter Ratio: 0.5
Tree Height: 361
- Class: rviz/Selection
Name: Selection
- Class: rviz/Tool Properties
Expanded:
- /2D Pose Estimate1
- /2D Nav Goal1
- /Publish Point1
Name: Tool Properties
Splitter Ratio: 0.5886790156364441
- Class: rviz/Views
Expanded:
- /Current View1
Name: Views
Splitter Ratio: 0.5
- Class: rviz/Time
Experimental: false
Name: Time
SyncMode: 0
SyncSource: PointCloud2
Preferences:
PromptSaveOnExit: true
Toolbars:
toolButtonStyle: 2
Visualization Manager:
Class: ""
Displays:
- Alpha: 0.5
Cell Size: 1
Class: rviz/Grid
Color: 159; 147; 147
Enabled: true
Line Style:
Line Width: 0.029999999329447746
Value: Lines
Name: Grid
Normal Cell Count: 0
Offset:
X: 0
Y: 0
Z: 0
Plane: XZ
Plane Cell Count: 10
Reference Frame: camera_depth_optical_frame
Value: true
- Alpha: 1
Autocompute Intensity Bounds: true
Autocompute Value Bounds:
Max Value: 9.859000205993652
Min Value: 0.5799999833106995
Value: true
Axis: X
Channel Name: intensity
Class: rviz/PointCloud2
Color: 255; 255; 255
Color Transformer: RGB8
Decay Time: 0
Enabled: true
Invert Rainbow: false
Max Color: 255; 255; 255
Max Intensity: 4096
Min Color: 0; 0; 0
Min Intensity: 0
Name: PointCloud2
Position Transformer: XYZ
Queue Size: 10
Selectable: true
Size (Pixels): 3
Size (m): 0.009999999776482582
Style: Squares
Topic: /camera/depth_registered/points
Unreliable: false
Use Fixed Frame: true
Use rainbow: true
Value: true
- Class: rviz/Image
Enabled: true
Image Topic: /camera/depth/image_rect
Max Value: 1
Median window: 5
Min Value: 0
Name: Depth
Normalize Range: true
Queue Size: 2
Transport Hint: raw
Unreliable: false
Value: true
- Class: rviz/Image
Enabled: true
Image Topic: /camera/ir/image
Max Value: 1
Median window: 5
Min Value: 0
Name: ir
Normalize Range: true
Queue Size: 2
Transport Hint: raw
Unreliable: false
Value: true
- Class: rviz/Image
Enabled: true
Image Topic: /camera/rgb/image_raw
Max Value: 1
Median window: 5
Min Value: 0
Name: RGB
Normalize Range: true
Queue Size: 2
Transport Hint: raw
Unreliable: false
Value: true
Enabled: true
Global Options:
Background Color: 48; 48; 48
Default Light: true
Fixed Frame: camera_depth_frame
Frame Rate: 30
Name: root
Tools:
- Class: rviz/Interact
Hide Inactive Objects: true
- Class: rviz/MoveCamera
- Class: rviz/Select
- Class: rviz/FocusCamera
- Class: rviz/Measure
- Class: rviz/SetInitialPose
Theta std deviation: 0.2617993950843811
Topic: /initialpose
X std deviation: 0.5
Y std deviation: 0.5
- Class: rviz/SetGoal
Topic: /move_base_simple/goal
- Class: rviz/PublishPoint
Single click: true
Topic: /clicked_point
Value: true
Views:
Current:
Class: rviz/Orbit
Distance: 3.863161325454712
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Focal Point:
X: 2.0370023250579834
Y: -1.0987344980239868
Z: -0.031386714428663254
Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
Pitch: 0.004796733148396015
Target Frame: <Fixed Frame>
Value: Orbit (rviz)
Yaw: 2.4886555671691895
Saved: ~
Window Geometry:
Depth:
collapsed: false
Displays:
collapsed: false
Height: 961
Hide Left Dock: false
Hide Right Dock: false
QMainWindow State: 000000ff00000000fd0000000400000000000001fa00000323fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001b500000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001a6000000c900fffffffb0000000a0044006500700074006801000001e9000000ae0000001600fffffffb00000006005200470042010000029d000000c30000001600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000019200000323fc0200000005fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000211000000a400fffffffb000000040069007201000002540000010c0000001600fffffffb0000000a0049006d00610067006501000002fb000000c00000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000003e80000032300000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
RGB:
collapsed: false
Selection:
collapsed: false
Time:
collapsed: false
Tool Properties:
collapsed: false
Views:
collapsed: false
Width: 1920
X: 0
Y: 27
ir:
collapsed: false
新建檔案astra_camera.rviz并將上述檔案保存其內,最后將檔案反正如下目錄即可,
# 打開功能包根目錄
roscd astra_camera
# 新建檔案夾
mkdir rviz
cd rviz
# 復制上述檔案至astra_camera.rviz
sudo vi astra_camera.rviz

最后,即可快捷啟動rviz環境了!
roscd astra_camera/
rviz -d rviz/astra_camera.rviz


4.保存點云資訊
如果需要實時保存當前點云資訊,可以直接運行如下節點,該節點將把當前點云資訊保存至當前目錄下,
rosrun pcl_ros pointcloud_to_pcd input:=/camera/depth_registered/points

保存點云資訊時,要注意及時停止(Ctrl+C)否則會生產大量的pcd檔案,

5.查看pcd檔案
查看pcd檔案需要使用特定工具,此處介紹工具pcl_viewer
# 安裝
sudo apt-get install pcl-tools
查看檔案的方式如下,其中xxxx替換為所需查看的檔案名,
pcl_viewer xxxx.pcd

打開后,可以使用滑鼠進行放大、縮小、移動,操作同rviz一樣,同時可以點擊鍵盤上的數字鍵1~5切換不同的顏色,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/264538.html
標籤:區塊鏈
上一篇:Golang學習之路—map
下一篇:Golang 實作的打字小程式
