ros调用摄像头
1、安装功能包
只能在catkin_ws/src 目录下创建功能包,编译
cd catkin_ws/src git clone https://github.com/bosch-ros-pkg/usb_cam.git cd .. catkin_make
2、运行usb_cam_node
先打开新的终端,运行roscore
新版本的usb_cam包在launch文件夹下有自带的launch文件,名叫usb_cam-test.launch,我们可以直接cd到这个文件夹下运行它。再打开新终端:
cd catkin_ws/src/usb_cam/launch
roslaunch usb_cam-test.launch
出现如下错误:需要source 一下,环境变量未设置
source ~/catkin_ws/devel/setup.bash
如下error,则需要安装image-view
ERROR: cannot launch node of type [image_view/image_view]: image_view
sudo apt-get install ros-kinetic-image-view
重新运行launch文件就可以正常弹出摄像头图像窗口
在usb_cam-test.launch文件中,默认用的video0,打开本地摄像头,改成video1,就可以打开外接摄像头
使用USB摄像头,将默认的改为video1(注意需要重新编译一下)
<launch> <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" > pkg--功能包名 name--节点运行名 type--节点可执行文件的名字 output--节点标准输出打印到终端(默认是终端日志) <param name="video_device" value="/dev/video0" /> param--参数说明 ,每个活跃的节点可以通过ros::param::get()接口获取parameter的值 <param name="image_width" value="640" /> <param name="image_height" value="480" /> <param name="pixel_format" value="yuyv" /> <param name="camera_frame_id" value="usb_cam" /> <param name="io_method" value="mmap"/> </node> <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen"> respawn--复位属性,该节点停止时,会自动重启 <remap from="image" to="/usb_cam/image_raw"/> remap--重映射 将已有的包直接改名拿来用 <param name="autosize" value="true" /> </node> </launch>
其他属性说明
require ="true" :必要节点,当该节点终止时,launch文件中其他节点也被终止
ns="namespace" 为节点内的相对名称添加命名空间前缀