環境:Ubuntu16.04+ROS Kinetic
一、kinect v1簡介
Kinect v1深度相機擁有一個RGB彩色攝像頭,一個紅外線CMOS攝像機和一個紅外發射器。相機的紅外線CMOS攝像機和紅外發射器以左右水平的方式分佈。該相機採用的是以結構光爲基礎進行改進後的光編碼(Light Coding)技術獲得物體的深度信息。
Kinect的骨架座標系和深度座標系是以相機的IR(紅外)攝像機爲中心的右手座標系。原則上,Z軸方向不會取負值,但是如果獲得不可預知的值,則會給出-1。同時需注意,紅外攝像機是座標系原點,但深度值Z爲紅外到達點在Z軸方向的投影,而不是原點到紅外到達點之間的線性距離。
sudo apt-get install ros-kinetic-openni-* ros-kinetic-freenect-*
rospack profile
roslaunch freenect_launch freenect.launch
相關topic
(1)RGB圖像:/camera/rgb/image_color
ROS數據格式:sensor_msgs/Image
OPENCV數據格式:Mat
圖像尺寸:640*480
像素數據類型:8UC3
(2)深度圖像:/camera/depth/image
ROS數據格式:sensor_msgs/Image
OPENCV數據格式:Mat
圖像尺寸:640*480
像素數據類型:32FC1
(3)點雲數據(無整合RGB): /camera/depth/points
ROS數據格式:sensor_msgs/Image
PCL點雲庫數據格式:pcl::PointCloud<pcl::PointXYZ>
圖像尺寸:有序點雲,640*480
像素數據類型:double
三、相機標定
在ROS平臺上使用camera_calibration包進行相機的標定,相機標定工作界面如圖所示,該功能包基於張正友標定法,通過角點檢測匹配實際物理座標與圖像座標實現標定。
安裝功能包
rosdep install camera_calibration
運行命令
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera
size 11x8: 注意是字母x,是棋盤內部角點個數square 0.108:爲米單位的正方形邊長
image:訂閱的圖像
camera:發佈到設置參數的服務器
(1)紅外相機
(2)RGB相機
四、座標修正
http://neareal.net/index.php?Kinect%2FKinectForWindowsSDK%2FBasics%2FStartUp%2FDataFormatOfSkeletonAndDepth
https://blog.csdn.net/heyijia0327/article/details/43538695
Kinectから取得される座標データの補正と物體の體積推定の試み