ROS--雙目相機標定中遇到的問題
ROS–雙目相機標定中遇到的問題
現象
使用兩個usb_cam分別釋出image_raw話題後(如官網上所要求的),再執行rosrun camera_calibration cameracalibrator.py … 進行標定時,視窗變黑,無響應。
反省
這個問題從剛開始弄雙目標定就遇到,起始原因是使用兩個獨立的攝像機代替雙目攝像機。之後為了解決這個問題,去使用ROS書上的程式碼,但是由於版本比較老,導致機器上編譯原始碼一直有錯誤,不斷嘗試各種方法也沒有解決;而且程式碼工程量大,導致一直沒有真正理解原始碼。直到約兩三個月後的2018.01.26實在走投無路,從頭開始一步一步排查的時候發現了官網上一直沒有細看的文件。
解決
文件裡面這段話太重要了!如下:
3.1.1 Unsynchronized Stereo
By default, the image_pipeline assumes that stereo cameras are triggered to capture images simultaneously, and that matching image pairs have identical timestamps. This is the ideal situation, but requires hardware support.
Starting in Diamondback, you will be able to calibrate stereo pairs that are not (or inexactly) synchronized.
To enable approximate timestamp matching, give the –approximate=0.01 option. This permits a “slop” of 0.01s between image pairs. If you still don’t see a display window, or it is sporadically updated, try increasing the slop.
分析
雙目相機在硬體上將兩個攝像機整合到一起,會將兩個相機影象打包後一起進行傳送,所以左右影象是同步的。但是如果使用兩個單目攝像機代替雙目相機時就不能保證收到的左右影象是同一時刻的,這就不滿足標定程式cameracalibrator.py中對左右影象時間戳相同的要求,所以會出現上述視窗黑掉無反應的情況。所幸官網對這種情況作了支援,如上文所示,在只要加入–approximate=0.01即可,如果還沒有反應可以嘗試增大0.01這個值。
例子
- 單獨執行
$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 --approximate=0.01 right:=/my_stereo/right/image_raw left:=/my_stereo/left/image_raw right_camera:=/my_stereo/right left_camera:=/my_stereo/left
- 在launch檔案的node中
<node ns="$(arg camera)" name="cameracalibrator"
pkg="camera_calibration" type="cameracalibrator.py"
args="--approximate=0.01 --size 8x6 --square 0.028" output="screen">
<remap from="left" to="left/image_raw"/>
<remap from="right" to="right/image_raw"/>
<remap from="left_camera" to="left"/>
<remap from="right_camera" to="right"/>
</node>
工程原始碼
移步到我的github,這個工程實現了使用兩個usb攝像頭組成的雙目相機完成雙目標定以及雙目測距功能,基本功能已經實現,文件還在完善中。本篇文章相關的部分可檢視/launch/stereo_calibration.launch檔案。
總結
所以,使用ROS要看官網文件!不要對英文有排斥!不要過度依賴課本,因為ROS版本不斷更新,書本上很多東西都不適用了。
2018.01.26晚,小記,自省。
相關文章
- ROS下采用camera_calibration進行雙目相機標定ROS
- 面試遇到的redis相關問題面試Redis
- html中的table標籤設定寬(width)高(height)屬性時遇到的小問題HTML
- Halcon單相機標定
- 資料標準化遇到的問題
- [20221125]設定hugepages遇到的問題.txt
- laravel使用中遇到的問題Laravel
- Hodoop配置中遇到的問題OdooOOP
- 工作中遇到的問題
- javaweb中自己遇到的問題JavaWeb
- loadrunner學習中遇到的問題
- @UpdateProvider註解中遇到的問題IDE
- weex學習中遇到的問題
- kafka 運維中遇到的問題Kafka運維
- 【專案中遇到的zookeeper的問題】
- 問題定級標準
- 【面試】工作中遇到的難點及解決方案——人臉解鎖相機衝突問題面試
- 實際專案中遇到的問題
- 安裝 Laravel Mix 中遇到的問題Laravel
- Vue使用中遇到的程式碼問題Vue
- 爬蟲過程中遇到的問題爬蟲
- 關於工作中遇到的問題
- 自動生成相機標定軌跡
- 如何有效設定OKR中目標? - RedditOKR
- 求職遇到的面試題目求職面試題
- linux遇到的問題Linux
- Vagrant 遇到的問題
- Homestead 遇到的問題
- sudo 遇到的問題
- JackJson遇到的問題JSON
- mysql 遇到的問題MySql
- WangEditor遇到的問題
- 高速攝影機輔助的相機方位線上標定
- 工業相機丟包的問題
- vue專案中遇到的問題總結Vue
- weex中UISegmentControl實現及遇到的問題UI
- css中經遇到的文字換行問題CSS
- React開發中遇到的問題總結React
- 面試中遇到的一些問題面試