关于怎样把普通usb摄像头图像发布到ros的topic

前言:一个人搞某个领域的东西,没个人带真不行,整天纠结于各种小毛问题

  这是一个很容易提出的问题,ORB_SLAM做在线单目必须牵扯到怎样把usb_cam(这里指笔记本自带摄像头)的数据发布到ros的topic供使用,这里给出方法如下:

Step1:https://github.com/bosch-ros-pkg/usb_cam官网下载usb_cam包

Step2:新建build cmake+make大家都懂得

Step3:这一步我犯傻逼了,去可执行文件目录进行./usb_cam_node后报错:
[ERROR] [1467341521.830460517]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying…
可能是大家都没我这么二所以没Google到有人问过,只搜到一个再stackoverflow问过但是和我不一样情况,所以我就先扔这了,我就记住这个11311这个数字了,过了一会我再跑其他ros程序时先执行roscore后偶然瞥见这个窗口名称:

看到这个数字没,11311,泥煤的,没启动roscore就想发布到topic我真是醉了。

  至此,我们成功运行了cv_camera_node,但是正规情况下不该这么玩的,其实这也是因为自己还不理解ros的本质:我们把cv_camera放进catkin_ws/src下面,然后在catkin_ws下面执行catkin_make,这时候就在catkin_ws/devel/cv_camera下面生成了ros识别的(也就是可以rosrun的)可执行文件,我们就可以简单执行 rosrun cv_camera cv_camera_node了

Step4:好,现在我们可以看见usb_cam指示灯亮了,究竟topic里有没有图像呢,现在打开rviz:
rosrun rviz rviz
  按照topic添加一个image,现在就可以看到图像了。

  当然,科研的道路上必然存在艰辛,别问我为什么有此感慨,就刚才,刚写好博客,又运行了一次报错:

醉了

  运行cheese后发现是摄像头坏了,估计被刚才一连番的攻击攻陷了,没事咱重启电脑,然而还是不行,那咱换程序,usb_cam官网http://wiki.ros.org/usb_cam最下面给出了cv_camera的包,用的opencv的接口,按原来方法运行,ok,可以。
  这里总结一下这两个包,在我的笔记本上usn_cam驱动自带摄像头提示上面错误,驱动外接usb没问题,而cv_camera两者都没问题,还有一个要注意的,一般外接usb摄像头启动系统时video0就不一定是自带摄像头了,要重新修改源文件再生成二进制,参考下面

  这里我有个疑问,为什么rviz里添加image可以但是添加camera不行?

  接下来还有个问题,比如在用cv_camera的时候我想用外接的usb摄像头不想用笔记本自带的怎么办?这时我们打开cv_camera的官网说明:

鼠标选中处

  所以我们知道程序有个参数device_id是选择摄像头的,一般笔记本自带的是0,其他的是1,2….往后排,具体怎么看哪个摄像头对应哪个值最简单的办法就是打开/etc/下面搜索video,一个摄像头对应一个文件,把摄像头拔了对应哪个文件就没了,以此确定摄像头与videox的对应关系。
  好,现在我们打开下载的cv_camera包,进入src下面打开driver.cpp,为什么是这个源文件我只能告诉你我是一个一个打开找的,看到里面有个

鼠标选中处

  我们把他的参数改为1,重新进入build目录cmake+make,然后按照上文方法启动cv_camera_node,这时候usb摄像头的数据就进入cv_camera_node/image_raw了,同理我们在/home/kylefan/catkin_ws/src/usb_cam/nodesusb_cam_node.cpp里面发现以下语句
  

我们把0改为1,就实现了usb摄像头的启动。
:ORB_SLAM2单目在线,注意把程序里面的topic改为以上topic名称

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值