ros實現計算機UVC_cramer通信
目前在沒喲turtlebot的實物的情況下,來模擬進行計算機通信,實現UVC_camera實現遠程傳輸圖像。要求其中一臺計算機帶有USB攝像頭,我們使用uvc——camera,是最常用的usb攝像頭功能包.
- 安裝uvc_camera功能包
$ sudo apt - get install ros - kinetic - uvc - camera
- 安裝image相關功能包
$ sudo apt - get install ros - kinetic - image -*
$ sudo apt - get install ros - kinetic - rqt - image - view
- 運行uvc_camera節點
- 如果收到"[WARN]:camera calibration file /home/xxxx/.ros/camera_info/camera.yaml not found",可以忽略,這是攝像頭未進行校準的提醒,對我們本節沒有影響。
- 查看話題消息
$ 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
/ rosout
/ rosout _ agg
-
查看圖像信息
在上一節中我們運行了usc_camera_node節點時會發布圖像信息,我們用image_view和Rviz實際的查看圖像。 -
用image_view節點查看圖像,後面附加選項“image:=/image_raw”是把話題列表中的話題以圖像的形式上查看的選項。(image_raw爲話題),運行如下指令,攝像頭拍攝的圖像將會在小窗頭中顯示。
$ rosrun image _ view image _ view image :=/ image _ raw
- 用rqt_image_view节点检查
rqt_image_view中有GUI元素的rqt插件image_view。运行rqt_image_view节点将显示顯示如上一節所顯示的圖像。与image_view不同,您还可以在运行后从图像查看器GUI中选择一个话题。
$ rqt _ image _ view image :=/ image _ raw
- 用RViz查看
我们运行一个可视化工具RViz
$ rviz
RViz运行后,先更改“Displays”选项。单击RViz左下方的[Add],在[By display
type]选项卡中选择[Image],以此加载图像显示功能
-
遠程圖像傳輸
我們介紹一種从另一台远程计算机上查看安装在机器人上的usb相机的图像信息的方法,實現機器人上的計算機與我們的電腦的通信。
-
连接了相机的计算机-主機
在主機上(鏈接有攝像頭的計算機)運行roscore主節點。在這之前,我們首先要做的是修改網絡變量,ROS_MASTER_URI和ROS_HOMENAME。首先,使用类似gedit的文档编辑程序(sublime、text、vim、emacs和nano),使用以下命令打开bashrc文件。
$ gedit ~/. bashrc
加載bashrac後,修改ROS_MASTER_URI和ROS_HOSTNAME變量。localhost爲本機IP地址,可使用ifconfig來查看。
export ROS _ MASTER _ URI = http:// localhost: 11311
export ROS _ HOSTNAME = localhost
然后运行roscore,并在另一个终端窗口中运行uvc_camera_node节点
$ roscore
$ rosrun uvc _ camera uvc _ camera _ node
3.远程计算机-從機
同样地,在远程计算机上,打开bashrc文件并修改ROS_MASTER_URI和ROS_HOSTNAME变量,将ROS_MASTER_URI设置为连有相机的计算机的IP,并将ROS_HOSTNAME变量更改为远程计算机本身的IP
export ROS _ MASTER _ URI = http:// 主機的localhost: 11311
export ROS _ HOSTNAME = localhost
$ rosrun image _ view image _ view image :=/ image _ raw
這樣我們就可以在從幾上觀察到主機上攝像頭所拍攝的畫面。