《ROS理论与实践》学习笔记(六)机器视觉处理

本文介绍了ROS环境下摄像头驱动配置、参数标定方法,并通过OpenCV和Tensorflow实现图像处理与物体识别,包括人脸识别与控制机器人等案例。

在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第七讲:机器视觉处理 。主要学习了ROS的USB摄像头启动、摄像头参数标定、OpenCV及Tensorflow案例的练习。


课程内容

1.ROS摄像头驱动及数据接口

usb摄像头功能包安装:

$ sudo apt-get install ros-melodic-usb-cam

启动usb摄像头并用rqt显示:

$ roslaunch usb_cam usb_cam-test.launch
$ rqt_image_view

usb摄像头具体数据接口见ROS Wiki:wiki usb_cam

在练习时发现了一些问题,与虚拟机的外设链接有关。
1.启动usb摄像头launch文件时出现如下警告:

[ERROR] Cannot identify '/dev/video0': 2, No such file or directory

在这里插入图片描述

解决方法:在虚拟机设置中勾上显示所有USB输入设备,重启后连接usb摄像头。
具体过程见博客:无法打开USB摄像头

2.如上成功连接摄像头后,启动launch文件又出现如下警告:

[ERROR] [1621304764.757189189]: select timeout

在这里插入图片描述解决方法:在1的基础上,将虚拟机的USB兼容性改为3.0即可


2.摄像头参数标定

安装calibration参数标定功能包:

$sudo apt-get install ros-melodic-camera-calibration

启动launch文件:

$ roslaunch robot_vision usb_cam.launch
$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam

其中size表示标定棋盘的内部角点个数,square表示每个棋盘格的边长,image和camera为设置摄像头发布的图像话题。
将标定靶进行平移和旋转直到X/Y/Size/Skew进度条均变为绿色后,点击CALIBRATE,存储得到如下的标定文件:
在这里插入图片描述


3.ROS+OpenCV图像处理方法及案例

ROS OpenCV功能包安装:

$ sudo apt-get install ros-melodic-vision-opencv libopencv-dev python-opencv

主要的API:

  • imgmsg_to_cv2() : 将ROS图像消息转换成OpenCV图像数据
  • cv2_to_imgmsg() : 将OpenCV格式的图像数据转换成ROS图像消息
  • 输入参数:图像信息流;转换的图像数据格式

人脸识别案例流程

  • 初始化:完成ROS节点、图像、识别参数的设置
  • 回调函数:将图像转换成OpenCV的数据格式,然后预处理之后开始调用人脸识别的功能函数,最后把识别结果发布
  • 人脸识别: 调用OpenCV提供的人脸识别接口,与数据库中的人脸特征进行匹配
$ roslaunch robot_vision usb_cam.launch
$ roslaunch robot_vision face_dector.launch
$ rqt_image_view

跟踪物体特征点案例流

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值