在ros中用usb_cam连接两个相机

参考

应用usb_cam同时打开多个摄像头方法_xp_fangfei的博客-优快云博客_usb_cam

 

1、下载源码

git clone https://github.com/bosch-ros-pkg/usb_cam.git

git  clone 比较慢,直接进个github下载比较快。

2、创建工作空间

 创建工作空间catkin_mutil-cam(名字随意,自己明白是啥就行),在catkin_mutil-cam下创建src,然后将下载的源码usb_cam复制到src下。

然后在catkin_mutil-cam下编译:catkin_make

usb_cam树结构

.
├── AUTHORS.md
├── CHANGELOG.rst
├── CMakeLists.txt
├── include
│   └── usb_cam
│       └── usb_cam.h
├── launch
│   ├── usb_cam-test.launch
├── LICENSE
├── mainpage.dox
├── nodes
│   └── usb_cam_node.cpp
├── package.xml
├── README.md
└── src
    ├── LICENSE
    └── usb_cam.cpp

3、同时连接两个相机

同时连接两个相机需要更改相应的节点和cpp文件

  • 增加节点usb_cam_node.cpp文件

  • usb_cam_node.cpp修改的内容
90 image_pub_ = it.advertiseCamera("image_raw", 1);
93 node_.param("video_device", video_device_name_, std::string("/dev/video0"));
273 ros::init(argc, argv, "usb_cam1");

 新建 usb_cam_node1.cpp

90 image_pub_ = it.advertiseCamera("image_raw_new", 1);
93 node_.param("video_device", video_device_name_, std::string("/dev/video2"));
273 ros::init(argc, argv, "usb_cam2");
  •  对应的CMakeLists.txt进行修改
## Declare a cpp executable
add_executable(${PROJECT_NAME}_node nodes/usb_cam_node.cpp)
target_link_libraries(${PROJECT_NAME}_node
  ${PROJECT_NAME}
  ${avcodec_LIBRARIES}
  ${swscale_LIBRARIES}
  ${catkin_LIBRARIES}
)
## Declare a cpp executable //新增节点的内容
add_executable(${PROJECT_NAME}_node1 nodes/usb_cam_node1.cpp)
target_link_libraries(${PROJECT_NAME}_node1
  ${PROJECT_NAME}
  ${avcodec_LIBRARIES}
  ${swscale_LIBRARIES}
  ${catkin_LIBRARIES}
)
  • 对应的launch文件进行修改
<launch>
  <node name="usb_cam1" pkg="usb_cam" type="usb_cam_node" output="screen" > 
    <param name="video_device" value="/dev/video0" />  //第一个节点,cam1对应video0
    <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>
//(cam和video根据自己的实际情况命名)
  <node name="usb_cam2" pkg="usb_cam" type="usb_cam_node1" output="screen" >
    <param name="video_device" value="/dev/video2" /> //第二个节点,cam2对应video2 
    <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>
  // image_view 对应的第一个节点
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
 // image_view_new 对应的第二个节点
  <node name="image_view_1" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam_node1/image_raw_new"/>
    <param name="autosize" value="true" />
  </node>

</launch>
  •  内容都修改后,再次进行编译。在catkin_muilt-cam打开终端:catkin_make
  • 编译成功,启动相机
roslaunch usb_cam usb_cam-test.launch
  • 相机可视化。新打开一个终端 ,启动ros
roscore
打开一个新终端
rosrun rviz rviz

 在rviz 界面,点击Add---By topic---/usb_cam---/image-raw---image

两个相机同时显示界面

 

 

 

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值