開山第一篇筆記+教程(發給熱愛ROS的童鞋)——ROS下讀取攝像頭圖像 圖像轉換


寫一個node節點,接收圖像,並將處理後的圖像發佈出去。

關於(不注意Note 的童鞋在這上面浪費好多時間)
http://wiki.ros.org/cv_bridge_redesign 是針對於diamondback版本的。
http://wiki.ros.org/image_transport/Tutorials 是針對老版本 <cv_bridge/CvBridge.h>類型的教程。但publish 和cubscribe 的形式值得學習。

言歸正傳,
我主要參考的是 

工具:uvc_camera
安裝 uvc_camera, 打開https://github.com/ktossell/camera_umd
選擇最右邊的,選擇到Ubuntu命令行輸入
rosdep install uvc_camera 查看依賴是否滿足
進入目錄查看哪種編譯方式,rosmake還是catkin。發現是package.xml用catkin_make -j8編譯(-j8針對4核以上電腦),安裝完成。

通讀
此教程
在catkin目錄的src文件夾下創建包cv_projects
catkin_create_pkg cv_projects sensor_msg cv_bridge roscpp std_msgs image_transport

關於CMakeList.txt文件的編寫參照之前的教程 

我在最後添加
add_executable(cv_test src/cv_test.cpp)
target_link_libraries(cv_test ${catkin_LIBRARIES})

由於例子中的節點是從"/camera/image_raw" 中訂閱消息,爲了保證源碼的完整性,這裏要通過launch文件將其路徑remap一下。
image_sub_ = it_.subscribe("/camera/image_raw", 1, &ImageConverter::imageCb, this);

這裏我在cv_projects目錄下新建launch目錄,添加cv_test.launch文件
<launch>
     <node name="cv_test" pkg="cv_projects" type="cv_test">
          <remap from="camera/image_raw" to="image_raw"/>
     </node>
</launch>

這裏將"camera/image_raw"路徑改爲了"image_raw"是因爲我們運行
啓動攝像頭節點:$rosrun uvc_camera uvc_camera_node
查看話題: $rostopic list 
發現如下列表
/camera_info
/image_raw
/image_raw/compressed
/image_raw/compressed/parameter_descriptions
/image_raw/compressed/parameter_updates
/image_raw/compressedDepth
/image_raw/compressedDepth/parameter_descriptions
/image_raw/compressedDepth/parameter_updates
/image_raw/theora
/image_raw/theora/parameter_descriptions
/image_raw/theora/parameter_updates
因此改爲接收/image_raw  topic

至此代碼完畢。

運行:
首先啓動ROS核:$roscore

啓動攝像頭節點:$rosrun uvc_camera uvc_camera_node

啓動程序:$roslaunch cv_projects cv_test.launch





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章