欢迎光临散文网 会员登陆 & 注册

小黑仿生轮腿机器人(二)-机器视觉

2023-03-30 08:00 作者:机器谱  | 我要投稿

1. 功能描述

      机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。

      本文将结合机器视觉基础,基于开源的轮腿机器人平台,进行形状识别(识别圆形)、颜色检测(红绿蓝)、颜色追踪的应用开发。

2. 功能实现

操作系统:Ubuntu18.04系统,基于Debian GNU/Linux,支持x86、amd64(即x64)、ARM和ppc架构。

软件:OpenCV、ROS melodic

2.1 形状识别—识别圆形

主要用到的器材摄像头、红色和绿色两种圆形图(见下图)

实现思路:利用摄像头采集图片信息识别圆形,在界面上显示出圆的圆心坐标。

操作步骤:

(1)如果您的机器人还没有配置好环境变量,那需要先把资料附件里的visual_experiment_ws文件夹拷贝到系统里,然后执行:

① 在visual_experiment_ws文件夹中的src文件夹同级别目录下,编译工作空间,并配置环境变量;

② 打开终端(Ctrl+Alt+T),输入roslaunch astra_camera astra.launch(见下图),等待程序的运行。

(2)如果您的机器人已经配置好了环境变量,或(1)中的操作已经完成,则执行:

① 打开第二个终端(Ctrl+Shift+T)输入命令:roslaunch shape_detection shape_detection_experiment.launch,等待界面的启动;

② 放置待识别的圆形图(请把物品放置在摄像头可以采集到的区域),就可以在界面上看到识别结果。下图是分别识别出红色圆形、绿色圆形轮廓,并显示识别出圆心的中心坐标x、y的值。

      这个功能的python例程源码在visual_experiment_ws\src\shape_detection\scripts文件夹里, 文件名是shape_detection_victory.py,该程序的关键点是:先采集图像信息,再对图像信息进行处理,把识别信息显示在界面上,大家有兴趣可以阅读参考。

2.2 颜色检测(红绿蓝)

主要用到的器材:摄像头、红绿蓝三种物品(见下图)

实现思路:当把物品放置在摄像头前时,在界面上显示识别颜色的结果。

颜色识别算法的核心原理:

RGB和HSV彩色模型:

     数字图像处理通常采用RGB(红、绿、蓝)和HSV(色调、饱和度、亮度)两种彩色模型,RGB虽然表示比较至直观,但R、G、B数值和色彩三属性并没有直接关系,模型通道并不能很好的反映出物体具体的颜色信息,而HSV模型更符合我们描述和解释颜色的方式,使用HSV的彩色描述会更加直观。

RGB和HSV的区别:

①. RGB模型

三维坐标:

RGB:三原色(Red, Green, Blue)

原点到白色顶点的中轴线是灰度线,r、g、b三分量相等,强度可以由三分量的向量表示。

用RGB来理解色彩、深浅、明暗变化:

色彩变化: 三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线

深浅变化:RGB顶点和CMY顶点到原点和白色顶点的中轴线的距离

明暗变化:中轴线的点的位置,到原点,就偏暗,到白色顶点就偏亮

②. HSV模型

倒锥形模型:

这个模型就是按色彩、深浅、明暗来描述的。

H是色彩

S是深浅, S = 0时,只有灰度

V是明暗,表示色彩的明亮程度,但与光强无直接联系,(意思是有一点点联系吧)。

③. RGB与HSV的联系

从上面的直观的理解,把RGB三维坐标的中轴线立起来,并扁化,就能形成HSV的锥形模型了。

但V与强度无直接关系,因为它只选取了RGB的一个最大分量。而RGB则能反映光照强度(或灰度)的变化。

v = max(r, g, b)

由RGB到HSV的转换:

④. HSV色彩范围

操作步骤:

(1)先把资料附件里的visual_experiment_ws文件夹拷贝到系统里,然后执行:

① 在visual_experiment_ws文件夹中的src文件夹同级别目录下,编译工作空间,并配置环境变量;

② 打开终端(Ctrl+Alt+T),输入roslaunch astra_camera astra.launch(见下图),等待程序的运行。

③ 打开第二个终端(Ctrl+Shift+T)输入命令:roslaunch color_detection color_detectioning.launch,等待程序的运行。

④ 界面启动后,放置物品(请把物品放置在摄像头可以采集到的区域),然后开始识别并在界面上显示识别结果。下面以蓝色物品为例,当摄像头识别到蓝色物品后,在界面显示结果(the color is blue)。

⑤ 试着去放置红色、绿色物品,分别识别出的结果如下面两幅图。当摄像头识别到红色物品后,在界面显示结果(the color is red);当摄像头识别到绿色物品后,在界面显示结果(the color is green)。

2.3 颜色追踪

主要用到的器材:本实验中需要用到的器材见下图,用红色的灭火器作为被追踪的物体。

实现思路:摄像头采集到红色物品后,通过串口通信来发布消息,轮腿订阅消息后进行相应的运动。

操作步骤:

①首先参考2.2中的步骤,实现颜色检测功能。

②打开资料中的

visual_experiment_ws\src\color_tracking\arduino_program\Color_Tracking_Arduino_Program文件夹,下载程序Color_Tracking_Arduino_Program.ino至轮腿机器人的mega2560主控板。

③ 打开终端(Alt+ctrl+T),输入roslaunch astra_camera astra.launch 命令即可,见下图。

④ 打开第二个终端(shift+ctrl+T),输入roslaunch color_tracking camera_calibration.launch 命令,见下图。

⑤ 移动灭火器,观察轮腿跟随灭火器运动的效果。

注意1:请把灭火器放置在摄像头可采集到的区域内;

注意2:受硬件的影响,移动灭火器的速度建议稍微慢点,如可以先把灭火器移动到一个位置,观察轮腿追踪的效果。

我在可以在rviz界面里看到摄像头采集到红色目标的中心坐标及面积,供追踪使用(见下图);同时可以观察到轮腿进行追踪红色的灭火器,直到运动到靠近灭火器的地方。

     这个功能的python例程源码在visual_experiment_ws\src\color_tracking\scripts文件夹里, 文件名是ros_arduino_translation_test.py,该程序的关键点是:识别红色区域并在界面上显示识别后的坐标及面积。大家有兴趣可以阅读参考。


3. 资料下载

资料内容:轮腿机器人-机器视觉-例程源代码

资料下载地址:http://www.robotway.com/h-col-196.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com

小黑仿生轮腿机器人(二)-机器视觉的评论 (共 条)

分享到微博请遵守国家法律