ROS中阶笔记(五):机器人感知—机器视觉(下)

本文涉及的产品
资源编排,不限时长
简介: ROS中阶笔记(五):机器人感知—机器视觉

3 ROS+OpenCV


3.1 OpenCV简介


Open Source Computer Vision Library;基于BSD许可发行的跨平台开源计算机视觉库(Linux、Windows和Mac OS等);由一系列C函数和少量C++类构成,同时提供C++、Python、Ruby、MATLAB等语言的接口;实现了图像处理和计算机视觉方面的很多通用算法,而且对非商业应用和商业应用都是免费的;可以直接访问硬件摄像头,并且还提供了一个简单的GUl系统一highgui。


3.2 OpenCV使用


安装OpenCV


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


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTQwODE2MzkxOTYucG5n.png

测试例程


$ roslaunch robot_vision usb_cam.launch        # 启动摄像头
$ rosrun robot_vision cv_bridge_test.py        # 打开opencv图像,自己的api接口
$ rqt_image_view                   # ROS中的图像


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTQwOTMxMDI3ODMucG5n.png

imgmsg_to_cv2():将ROS图像消息转换成OpenCV图像数据

cv2_to_imgmsg():将OpenCV格式的图像数据转换成ROS图像消息

输入参数:


1.图像消息流

2.转换的图像数据格式


3.3 人脸识别


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTQwOTU5MTc4MzQucG5n.png


启动人脸识别实例


$ roslaunch robot_vision usb_cam.launch            # 启动摄像头
$ roslaunch robot_vision face_detector.launch      # 启动人脸识别功能节点
$ rqt_image_view

aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTQxMDExNDQ5MjAucG5n.png


初始化部分:完成ROS节点、图像、识别参数的设置。


ROS图像回调函数:将图像转化成OpenCV的数据格式,然后预处理之后开始调用人脸识别的功能函数,最后把识别的结果发布。


人脸识别:调用OpenCV提供的人脸识别接口,与数据库中的人脸特征进行匹配。


3.4 物体跟踪


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTQxMDE2Mzc5NzgucG5n.png

启动物体跟踪实例


$ roslaunch robot_vision usb_cam.launch                  # 启动摄像头
$ roslaunch robot_vision motion_detector.launch          # 启动物体跟踪功能节点
$ rqt_image_view


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTQxMDIzNTc2MDcucG5n.png


初始化部分:完成ROS节点、图像、识别参数的设置


图像处理:将图像转换成OpenCV格式;完成图像预处理之后开始针对两帧图像进行比较,基于图像差异识别到运动的物体,最后标识识别结果并发布


4 二维码识别


4.1 二维码使用


安装二维码识别功能包


$ sudo apt-get install ros-kinect-ar-track-alvar


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTQxMTAyMDAzNzQucG5n.png

创建二维码


$ rosrun ar_track_alvar createMarker
$ rosrun ar_track_alvar createMarker 0
$ roscd robot_vision/config
$ rosrun ar_track_alvar createMarker -s 5 0         #边长5厘米,数字为0的二维码
$ rosrun ar_track_alvar createMarker -s 5 1
$ rosrun ar_track_alvar createMarker -s 5 2

4.2 摄像头二维码识别


1.启动摄像头二维码识别示例


$ roslaunch robot_vision usb_cam_with_calibration.launch
$ roslaunch robot_vision ar_track_camera.launch


启动摄像头时,需要加载标定文件,否则可能无法识别二维码。


2.查看识别到的二维码位姿


$ rostopic echo /ar_pose_marker


4.3 Kinect二维码识别


启动Kinect二维码识别示例


$ roslaunch robot_vision freenect.launch
$ roslaunch robot_vision ar_track_kinect.launch


5 扩展内容:物体识别与机器学习


Object Recognition Kitchen(ORK) 物体识别框架


TensorFlow Object Detection API 识别API

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
18天前
|
Ubuntu 机器人 Linux
|
18天前
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
|
18天前
|
机器人
【ROS速成】半小时入门机器人ROS系统简明教程之安装测速(二)
半小时入门机器人ROS系统简明教程之安装测速
|
6月前
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
166 1
|
5月前
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
199 2
|
5月前
|
机器人 定位技术 C++
技术笔记:ROS中测试机器人里程计信息
技术笔记:ROS中测试机器人里程计信息
|
6月前
|
NoSQL 机器人 Windows
ROS机器人编程技术控制两只小海龟的编队运动
ROS机器人编程技术控制两只小海龟的编队运动
197 1
|
6月前
|
机器人 Python Windows
ROS机器人编程技术应用与实践
ROS机器人编程技术应用与实践
76 1
|
6月前
|
机器人 Unix C++
ROS机器人编程技术架构命令应用
ROS机器人编程技术架构命令应用
82 1
|
6月前
|
Ubuntu 机器人 编译器
ROS机器人编程技术系统安装
ROS机器人编程技术系统安装
83 1

热门文章

最新文章

推荐镜像

更多