《ROS理论与实践》学习笔记(六)机器视觉处理
在学习《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
跟踪物体特征点案例流

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





