基于ROS平台的机器人目标识别系统的设计
2018-03-21贾浩东
贾浩东
(西安交通大学附属中学,陕西西安,710043)
0 引言
目前,随着人工智能技术的不断发展与控制芯片处理能力的不断提高,智能机器人在现实生活中的应用也越来越广泛。作为智能机器人的一个重要的组成部分,视觉识别系统也越来越受到人们的重视[1]。智能机器人的视觉识别系统是指利用计算机或微处理器来实现系统对现实世界信息的感知与识别,主要是通过目标对象的纹理、颜色、形状等信息提取其关键特征,进而完成对环境中指定目标对象的识别。机器人视觉系统主要致力于令机器人的核心控制芯片具有从二维图像获取到现实世界中三维环境信息的能力。这不但包括对现实世界中三维物体的位置、形状、运动等信息的感知,而且能对其进行深度地识别与反馈。
本文以ROS平台为基础,搭建了针对移动机器人的目标识别系统。系统可通过Adaboost算法使移动机器人自动识别区域中的目标对象,对于移动机器人领域的研发具有较高的理论及实际应用价值。中。ROS也支持一种类似于代码共享的云平台,不同位置的开发者可通过该平台实现相关项目的协同开发与联合发布。基于上述思想,ROS可以使一个项目实现从底层文件系统到上层用户接口完全独立研发。与此同时, ROS工具包也能将项目的所有内容整合到一起。
2 系统架构介绍
1 ROS平台简要介绍
ROS(Robot Operating System)是一个开源的、广泛适用于机器人的开发与应用的操作平台。它不但为机器人开发者提供包括机器人硬件抽象,底层驱动与控制,模块间消息传递等功能。而且也包含用于获取、编译、和跨平台运行程序所需的工具和API接口[2]。
为机器人开发者提供代码和功能上的支持是ROS平台的主要开发宗旨[3]。它提供了一个分布式的运行平台,平台中各独立的、分布式运行的模块被封装在开源通用的ROS程序包和功能包
2.1 软件架构
机器人目标识别算法的实现主要依赖ROS平台。该平台的运行架构是一种使用经过特殊集成与封装的通信机制实现平台中各子模块间松耦合连接的处理架构,ROS平台提供若干种不同类型的通讯方式,包括基于服务(Service)的同步远程过程调用通讯、基于话题(Topic)的异步数据通讯,此外还支持服务器对用户输入的指定的参数信息的存储与应用。ROS系统中模块间的通信采用点对点的通信方式。系统中的每一个模块可设置为一个节点(node),节点之间的通信协议采用订阅(subscribe)和发布(publ ish)的形式。通信前在系统中建立一个话题(topic)。在每个节点中发布方在此话题中发布相应的通信数据,接收方订阅相应的通信数据并完成相应的通信。图1为机器人系统中图像处理节点示意,在该节点中我们订阅“ /image_raw”话题中的消息,在节点中完成相应的识别,再将识别结果发布至“dj i_sdk/image_raw”中,其余节点可订阅该话题上的消息,完成其余功能。
2.2 硬件架构
移动机器人目标识别系统采用了NVIDIA公司生产的Jetson TK1作为开发平台,该平台基于嵌入式Linux系统,具有丰富的接口,搭载了图像采集模块,整个系统具备小型化、低功耗、低成本、高灵活性等显著特点[4]。Jetson TK1是NVIDIA嵌入式Linux开发平台,其核心处理器具备与现代桌面GPU相同的高级功能和架构,同时具有移动芯片的低功耗,可连续在繁重的工作量下运作。因此,本文所设计算法的代码实现可以轻松的在TK1上完成,具有与桌面相似的GPU加速性能水平。
图1 ROS系统节点通信示意图
3 基于Adaboost的目标识别算法
3.1 算法简介
本系统的图像识别算法采Freund和Schapire提出的Adaboost算法,该算法的检测模型由多个弱分类器级联组成。Adaboost算法在训练的过程中不需要预先设定每个弱分类器的错误率下限,而是通过弱学习的过程自适应地调整个分类器的错误率,因此该算法在不需要提供弱学习器先验信息的前提下仍保证了极高的检测和识别率,在提出之后得到了广泛的应用。
通过Adaboost算法实现对指定目标对象的识别的过程主要由模型训练和目标对象识别两个部分组成。模型训练是指根据给定的样本,提取训练集中图片的特征组成训练集(如Haar-l ike小波特征、HOG特征等),并以此为基础不断调整模型中各弱分类器的参数,使给定样本中模型的最终的分类误差最低;对象识别是指在模型训练完成的基础上,对于输入图像的特征,利用算法模型计算得出该图像的分类信息,根据分类结果实现对象的识别。
3.2 算法实现
Adaboost算法的主要训练流程如下[4],其中hj(x ) = Pw(y = 1 |x ) - Pw(y = - 1 |x),反映了属于正样本和属于负样本之间的概率差。
(1)给定训练集的样本(x1,y1) ,( x1,y1), … ,( xN, yN),对于正样本令 yi= 1 ;负样本,令 yi=-1。对样本中的各权重按照下式进行初始化,式中l为正样本个数,m为负样本个数;
(2)给定分类器个数T,对于 t = 1 ,…,T
①对于每个输入的特征j,得到弱分类器 ht∈[-1 , 1];
②计算弱分类器 ht分类误差,选出最优的弱分类器 ht;
最终经过上述训练过程得到Adaboost的数学模型,在目标识别的过程中,本系统通过提取目标图像的Haar关键特征,然后将特征输入Adaboost模型中进行目标识别[5]。具体检测过程如下所示:首先,初始化检测窗口并载入训练模型的各参数值;其次,按照一定的方向移动检测窗口,提取窗口内的Haar特征,直至检测窗口遍历整个图像;然后,利用训练好的Adaboost模型对目标进行检测,若发现目标则在图形中标出被检测的目标,否则按照一定的倍数对检测窗口进行放大,再次按照上述步骤进行一次图像遍历;不断的放大检测窗口并对目标图像执行上述遍历的过程,直至检测窗口超过原图像的一半大小,并输出最终的检测结果。该过程的具体过程如图2所示。
图2 目标识别系统识别目标的流程图
经过上述过程,机器人利用Adaboost算法最终完成了在指定区域内自动对目标的识别与检测。图3展示了机器人利用该目标识别系统进行人脸识别的结果,结果表明,该系统对单目标和多目标都有很强的目标识别能力。
图3 目标识别系统在人脸识别过程中的运行结果
4 结论
本文利用开源的ROS机器人平台,提出并设计了一种移动机器人目标识别系统,该系统通过视觉传感器采集图像信息并上传至机器人主控芯片,主控芯片上运行的ROS平台上利用Adaboost算法实现了对指定区域内对目标的实时识别与检测。
本文提出的基于ROS平台的机器人目标系统充分利用ROS分布式计算与实时交互的特性,不但降低了开发难度,而且提高了目标识别的效率及效果[6],使移动机器人能够自动识别目标区域内的对象,为后续移动机器人的自主运行、精确定位以及自主避障的相关研究奠定了一定的基础。
[1]刘洁,平雪良,齐飞,蒋毅.基于视觉跟踪的机器人测量方法与实现[J].应用光学.2016,37(05):686-692.
[2]刘晓帆,赵彬.基于ROS的移动机器人平台系统设计[J/OL].微型机与应用.2017,(11):54-56+59.
[3]左 轩 尘 ,韩 亮 亮 ,庄 杰 ,石 琪 琦 ,黄 炜 .基 于 ROS 的空间机器人人机交互系统设计[J].计算机工程与设计 ,2015,36(12):3370-3374.
[4]文学志,方巍,郑钰辉.一种基于类Haar特征和改进AdaBoost分类器的车辆识别算法[J].电子学报 .2011,5:1121-1126.
[5]李婷俐.基于多特征级联分类器的道路车辆检测方法研究[D].湖南大学.2012-05.
[6]刘彬.基于ROS和OpenCV的云服务系统与人脸识别应用[J].科技广场.2016,11:40-43.