ros中相機標定

2021-10-24 05:39:22 字數 3757 閱讀 5648

今天,由於apriltag的相機定位需要輸入相機內參,所以需要開始標定內參。

事先準備:

usb相機(通過usb口連線電腦):

標定板:

參考:安裝usb_cam ros功能包保證相機通過usb連線後可以傳回影象資料

cd ~/catkin_ws/src

git clone

然後退回到工作空間,編譯**:

cd~/catkin_ws

catkin_make

編譯好之後,新增編譯好的檔案到環境變數:

source devel/setup.bash
然後接下來測試usb_cam:

先執行usb_cam節點:

rosrun usb_cam usb_cam_node
執行上面命令發現沒有顯示影象,只看到攝像頭開啟了。這是因為ros發布的topic是/usb_cam/image_raw,我們需要開啟image_view來看到攝像頭輸出的影象。

新開啟乙個終端,可以通過如下命令檢視話題列表:

rostopic list
執行結果如下(現實是當前存在的話題列表,其中/usb_cam/image_raw是相機輸出的影象資料)

/rosout

/rosout_agg

/usb_cam/camera_info

/usb_cam/image_raw

/usb_cam/image_raw/compressed

/usb_cam/image_raw/compressed/parameter_descriptions

/usb_cam/image_raw/compressed/parameter_updates

/usb_cam/image_raw/compresseddepth

/usb_cam/image_raw/compresseddepth/parameter_descriptions

/usb_cam/image_raw/compresseddepth/parameter_updates

/usb_cam/image_raw/theora

/usb_cam/image_raw/theora/parameter_descriptions

/usb_cam/image_raw/theora/parameter_updates

所以我們需要執行如下命令才可以看到影象(使得image_view訂閱話題/usb_cam/image_raw,顯示攝像頭實時拍到的影象資料):

rosrun image_view image_view image:=/usb_cam/image_raw
或者直接寫launc**件,這樣就不用乙個終端執行node,乙個終端看影象。新建usb_cam_test.launch:

其中欄位的意義可按照字面理解,這裡不再解釋。

然後終端直接執行:

roslaunch usb_cam usb_cam_test.launch
參考:

首先獲取依賴項並編譯驅動程式:

$ rosdep install camera_calibration
確保你的單目相機正在ros上發布影象。讓我們列出檢查影象是否已發布的主題(這一步在1中已經做過):

$ rostopic list
該指令會列出你所有發布的話題,檢查是否有影象話題,大多數ros相機驅動程式提供的預設主題是:

/camera/camera_info

/camera/image_raw

標定之前,您需要載入要標定的影象話題(其中size為角點引數,square為邊長引數。):

$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera
若報錯

waiting for service /camera/set_camera_info ...

service not found

waiting for service /camera/set_camera_info ...

service not found

可以改為:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/usb_cam/image_raw camera:=/camera --no-service-check
然後標定視窗會開啟,如下圖所示

按照下圖的方式,移動標定板到特定位置,用以幫助標定:

當移動標定棋盤時,你會看到校準側邊欄上的幾個條的長度增加了。當「校準」按鈕亮起時,您有足夠的資料用於校準,可以單擊「校準」檢視結果。

校準大約需要一分鐘。窗戶可能是灰色的,但等一下,它在工作。

標定完成後,您將在終端中看到校準結果,校準視窗中顯示標定影象:

終端輸出情況如圖:

0.0, 0.0, 1.0]

r = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]

p = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]

# ost version 5.0 parameters

[image]

width

640height

480[narrow_stereo/left]

camera matrix

430.215550 0.000000 306.691343

0.000000 430.531693 227.224800

0.000000 0.000000 1.000000

distortion

-0.337586 0.111612 -0.000218 -0.000030 0.0000

rectification

1.000000 0.000000 0.000000

0.000000 1.000000 0.000000

0.000000 0.000000 1.000000

projection

1.000000 0.000000 0.000000 0.000000

0.000000 1.000000 0.000000 0.000000

0.000000 0.000000 1.000000 0.000000

ros單目相機標定

記錄一下使用ros進行單目相機標定的過程。roslaunch usb cam usb cam test.launch2.安裝ros的標定功能包 sudo apt get install ros melodic camera calibration 3.執行ros標定功能包 0.0375是指單個網格的...

深度學習 相機標定 相機標定

術語 內參矩陣 intrinsic matrix 焦距 focal length 主點 principal point 徑向畸變 radial distortion 切向畸變 tangential distortion 旋轉矩陣 rotation matrices 平移向量 translation ...

相機標定之棋盤標定

該文章主要學習如何進行相機標定,原理部分只是比較多,不多贅述。首先,相機標定主要是去求解內參k和外參 r t 以下為相機標定過程中常用的opencv自帶的幾個重要函式。1.opencv 提供的函式projectpoints2 投影三維點到影象二維點。函式引數如下 void cvprojectpoin...