程姜荣 宋芳
摘 要: 视觉跟随是机器人领域中一个比较重要的部分,可以应用在仓储搬运、安防、军事等多种领域。由于传统算法存在当背景比较复杂的情况下无法有效跟踪目标、对跟踪目标和外部环境的分辨率要求高所以只能进行辅助跟踪、计算量大无法满足实时性要求等问题。本文采用KCF算法设计,设计了基于ROS的移动机器人视觉跟随系统,利用循环矩阵在傅里叶空间可对角化的性质,从而使得矩阵运算被转化成元素的点乘,减少了计算量从而提高了运算速度,满足了算法的实时性要求。经过实验和数据分析,本移动机器人可以实时有效的跟随指定目标实现视觉跟随功能。
关键词: ROS;视觉跟随;KCF算法;移动机器人
中图分类号: TP399 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.02.005
本文著录格式:程姜荣,宋芳. 基于ROS的移动机器人视觉跟随系统设计[J]. 软件,2020,41(02):23-27+43
【Abstract】: Visual following is an important part in the field of robot, which can be used in many fields such as storage and transportation, security, military and so on. Because the traditional algorithm can not track the target effectively when the background is complex, the resolution of the target and the external environment is high, so it can only do auxiliary tracking, and the computation is too large to meet the real-time requirement. In this paper, a ROS-based mobile robot visual following system is designed by using KCF Algorithm, which makes use of the property that circulant matrix can be diagonalized in Fourier space, so that the matrix operation can be transformed into the dot product of elements the computation is reduced and the computation speed is increased, which can meet the real-time requirement of the algorithm. Through experiments and data analysis, the mobile robot can follow the specified target effectively in real-time to achieve visual follow function.
【Key words】: ROS; Visual following; KCF algorithm; Mobile robot
0 引言
由于互聯网和人工智能的飞速发展推动了机器人技术的高速发展[1]。机器人视觉跟随技术作为应用非常广泛且实用的关键技术越来越受到重视[2]。机器人在不断的对我们的生活方式产生影响,视觉跟踪机器人模仿了生物行为,使机器人可以通过传感器获取外界信息通过计算做出相应的判断使得机器人更加智能化,使得机器人可以处理更加复杂的问题,比如医疗机器人、安防机器人、智能仓储物
流机器人等,可以带来更多的方便。
视觉跟随机器人可以采用各种跟踪算法,一般采用的跟踪算法有以下几种,首先是基于区域的跟踪算法,这种算法是根据在图像中运动的物体所引发的背景变化对物体进行跟踪,这种算法存在的问题是如果当背景比较复杂的情况下无法满足跟踪的要求[3]。然后是基于跟踪目标的外部轮廓进行跟踪的算法,这种算法需要对跟踪的目标进行边缘检测和图像分割等处理后提取出被跟踪目标的外部轮廓,根据被跟踪目标物体的外部轮廓进行跟踪[4]。而且该轮廓跟随物体本身变化进行更新,这种算法相对基于区域的跟踪算法减少了计算量[5],但是对跟踪目标和外部环境的分辨率要求高,所以在实际的应用中只能作为一种辅助的跟踪算法。此外,还有基于跟踪目标所建立的模型进行跟踪的算法[6],这种算法首先对跟踪目标建立模型,模型的建立是通过对图像中的数据信息在训练阶段学习后得到的,在建立好跟踪目标的模型以后通过匹配的方式实现跟踪,但是由于在图像的不断变化与更新过程中需要实时更新[7],导致计算量很大所以无法满足移动机器人跟踪目标的实时性需求。
本文设计的移动机器人视觉跟随系统采用了KCF算法[8],对目标跟随的正负样本进行处理。该算法对目标周围的区域采用循环矩阵去采集,目标检测器的训练采用脊回归,由于在傅里叶空间可对循环矩阵进行对角化,从而使得矩阵运算被转化成元素的点乘[9],大大减少计算量,从而提高运算速度,可满足实时性要求。在系统软件实现方面,本文采用ROS操作系统开发移动机器人。ROS操作系统可对底层设备的控制和硬件进行抽象化处理,同时由于各种开发中通用的功能被制作成独立的功能包模块,因此在开发机器人的过程中可以根据需要对各个模块进行独立开发,不但缩短了开发周期而且也方便开发人员对各个模块进行维护升级[10]。在数据采集方面,本文采用Kinect摄像头,对外部环境进行数据采集。Kinect作为一款深度摄像头不但价格便宜而且可以在一定范围内获得比较准确的数据,甚至可以替代激光雷达和超声波测距[11]。利用采集到数据,采用KCF算法,经过Raspberry Pi 3B+嵌入式计算机处理,实现移动机器人目标跟随功能。
1 移动机器人系统
1.1 移动机器人硬件平台
对于移动机器人硬件系统的设计,分为基于STM32F103底层控制系统、上层嵌入式计算系统Raspberry Pi 3B+和远程的笔记本电脑,保证上层嵌入式系统和远程笔记本在同一个局域网中,三者相互通信配合实现目标跟随功能。其中底层的底盘控制系统主要组成部分有STM32、IMU 、电机、编码器等,移动机器人左右轮的移动速度是通过编码器来测量,IMU模块主要作用是采集移动机器人在三维空间当中移动的姿态、方向和加速度等信息,通过STM32进行PID 控制[12],实现移动器人的精准移动。移动机器人实物图如图1所示。
上层的嵌入式计算系统,主要由Raspberry Pi 3+、Kinect 深度摄像头组成,Raspberry Pi 3+ 搭载主频为 1.4GHz、内含ARM Cortex-A53核心的处理器,配备1G内存和多种外设,通过上层嵌入式计算系统完成外界视频信息获取、图像处理、数据处理、运动决策实现视觉跟随算法、根据获取信息发送跟随指令,远程的笔记电脑主要作用是可以实现移动机器人远程控制与监测[13]。根据需求设计出的硬件整体设计结构如图2所示。
1.2 移动机器人软件系统
ROS作为开源的机器人操作系统,可以实现跨越各种机器人平台的分布式网络,从而简化了复杂的任务[14],降低了机器人开发的周期和难度。根据设计需要,由于Kinetic版本的ROS操作系统支持的Ubuntu16.04,所以上层嵌入式计算系统安装了UbuntuMate16.04,远程的笔记本电脑安装了Ubuntu16.04。在安装过ROS后,ROS系统框架创建了一个连接所有进程的网络。本文首先根据移动机器人视觉跟随功能的具体要求,根据硬件平台特点,设计出移动机器人视觉跟随系统节点框图,如图3所示。
ROS是一个基于集中式拓扑的图结构,可以处理每个节点与其他节点之间的通信問题。在ROS系统中的每一个节点都相当于一个进程,Kinect摄像头主要作用是读取外部视频信息可以独立的作为一个节点。移动机器人的底盘作为一个运动执行器,可根据系统经过处理的数据,发布消息控制底盘运动,所以也可以作为一个独立的节点进行开发。运行在环境中的KCF视觉算法作为视觉跟踪节点,每一个节点可以分开独立的设计,大大降低了开发难度。不同的节点之间可以根据需要采用不同的通信方式,其中最常用的通信方式有两种,单向消息发送和接收方式的话题(topic)通信和双向消息请求和响应方式的服务(service)通信。
2 基于KCF算法的视觉跟随系统
2.1 KCF算法的原理
KCF算法是一种通过鉴别进行跟踪的算法,一般需要在跟踪过程中训练出一个对目标进行分类的检测器,对于需要追踪的目标通过目标分类检测器进行判断,目标分类检测器的更新是使用新检测结果去更新训练集而得到的[15]。首先选取需要跟踪的目标区域为正样本,使用目标分类检测器进行训练,然后把跟踪目标周围的区域作为负样本,在越靠近目标的区域的时候为正样本的可能性就越大,目标和背景的区分是通过训练目标检测器得到的,从而可以得到目标位 置[16]。
(1)循环矩阵
一般采用稀疏采样的方式的传统检测目标跟踪算法会导致样本之间存在冗余,使用KCF 算法可以有效避免这种问题,对于样本的构造是在对跟踪目标区域附近采用循环矩阵[17]进行循环位移操作。
2.2 视觉跟随实现
由于Kinect摄像头的RGB图像大小为像素。本文把RGB图像的中心横坐标320作为定值。负反馈与输出值可以选取目标框的中心横坐标值,从而可以形成闭环控制回路,然后将得到的给定值与反馈值的差值经过PD控制后作为旋转角速度,通过订阅移动机器人的速度话题获取速度信息,可实现移动机器人左右转向控制。为了实现对移动机器人前后运动的控制,首先需要提前设定一个固定值,让移动机器人和被跟踪的目标之间保持这个值,(本文设定这个固定值为1 m)。为了得到跟踪目标和移动机器人之间实时的距离信息,需要订阅深度图话题上的深度信息,在深度图中选取与它所对应的RGB图中目标框的中心点为中心坐标,选取中心点为坐标点的区范围内的25个像素,并求出他们的中值。将该值作为跟踪目标与移动机器人之间的测量距离,将测量值与设定值的差值经过PI控制后,作为移动机器人前后移动的直线速度,最后将直线速度信息发布出来,通过订阅速度话题来控制机器人前后移动。具体的流程如下:
第一步:首先在系统中订阅Kinect摄像头发布的RGB图像话题,当笔记本屏幕上出现实时的彩色视频,然后拖动鼠标选择需要跟踪的目标用矩形框包围,把选中的矩形框的坐标信息与RGB图像信息发送给目标跟踪算法进行初始化。
第二步:对于接收到的RGB图像信息采用目标跟踪算法进行迭代更新,为了后面步骤的进行,需要一个话题将深度图的深度信息和RGB图像的目标框坐标信息和发布出来。对以后的每一帧RGB图像重复执行第二步中的操作。
第三步:为了控制移动机器人的左右转动,需要订阅第二步中发布的话题,在第二步发布的话题中可以获取到RGB图像和与它对应的目标框的坐标信息,移动机器人在获取到这个信息后控制角速度ω,发送角速度信息到底盘控制节点,控制底盘的左右移动,使移动机器人始终对正需要跟踪的目标。
第四步:为了控制移动机器人的前后移动需要得到深度信息和与之对应目标框的坐标信息,所以订阅第二步中发布的话题,通过获取的信息来控制移动机器人前后移动的直线移动速度v,保证移动机器人与跟踪目标的安全距离,保持在1 m左右。
如图4所示,在视频中用矩形框选中目标后,根据彩色图像中目标框的坐标信息可以控制移动机器人转动,根据深度信息可以控制移动机器人的直线速度,从而可以有效跟踪选中的目标,实现视觉跟随功能。
3 移动机器人实验
移动机器人跟随系统由于相机水平视野小等存在一些难点,当跟踪目标行走速度过快或者转弯的时候会走出视野[22],从而导致跟踪的失败。为了对移动机器人视觉跟随系统的效果进行验证,设计了跟随实验,实验示意图如图5所示。
在图5中位置 1 是实验所用的移动机器人,被跟踪的人作为跟踪目标从位置2出发在34m的区域内以0.5m/s 的平均速度任意走动,实验设定的跟踪安全距离为1m。使用Kinect相机采集到的RGB图像和深度图像的信息,就可以启动跟踪节点,由KCF算法对获取的信息进行处理后,发送控制指令到底盘节点从而实现对实验中的人物的跟踪,实验场景图如图6所示。
采样移动机器人和跟随目标的位置信息,然后计算跟随目标与移动机器人运动轨迹和跟随误差[23],通过数据分析得出,本课题设计的移动机器人跟随误差在x方向可以控制在17 cm以内,在y方向可以控制在11 cm以内。x方向跟随误差如图7所示,y方向跟随误差如图8所示。
4 结论
本文通过搭建的基于ROS的移动机器人平台,采用KCF跟踪算法进行视觉跟随实验,记录实验现场的移动机器人和被跟踪人的位置信息,通过计算被跟踪人与移动机器人的运动轨迹误差后,经过实验分析得出本移动机器人跟随误差在x方向可以控制在17 cm以内,在y方向可以控制在11 cm以内,实验证明本移动机器人视觉跟随系统可以准确快速跟随选中目标达到预期目标。虽然移动机器人跟随系统可以成功跟随目标,但由于ROS机器人操作系统本身也存在一些问题,列如上层嵌入式计算系统和笔记本电脑需要在同一个局域网下,这是ROS机器人操作系统的局限性,所以还有改进的空间。
参考文献
牟思. 浅谈物联网的关键技术及计算机物联网的应用[J]. 软件, 2018, 39(6): 189-191.
柴婷婷, 丁言露. 机器人仿真及其自动化研究进展[J]. 制造业自动化, 2011, 33(12): 87-89.
史心雨. 基于兴趣点和形状特征的动作识别[D]. 南京理工大学, 2011.
陶飞. 基于稀疏表示的视频目标跟踪算法研究[D]. 湖南大学, 2014.
蔡雄峰, 艾丽华, 丁丁. 一种缓解协同过滤算法数据稀疏性的方法[J]. 软件, 2015, 36(3): 41-47.
朱文青, 刘艳, 卞乐, 等. 基于生成式模型的目标跟踪方法综述[J]. 微处理机, 2017, 38(1) : 41-47.
胡雨豪, 刘波. 基于机器视觉的四轴飞行器自主巡航算法改进[J]. 软件, 2018, 39(2): 52-56.
Henriques J F, Rui C, Martins P, et al. High-SpeedTracking with Kernelized Correlation Filters [J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015, 37(37)3): 583-596.
谢涛, 吴恩斯. 一种鲁棒的基于集成学习的核相关红外目标跟踪算法[J]. 电子与信息学报, 2018, 40(03): 602-609.
何洋. 基于最大熵多移动机器人气味源定位[D]. 杭州电子科技大学, 2015.
贺超, 刘华平, 孙富春, 等. 采用kinect的移动机器人目标跟随与避障[J]. 智能系统学报, 2013, 8(5): 426-432.
胡安琪. PID 控制在地面轮式机器人中的运用 [J]. 河北电力技术, 2018, 37(05): 62-66.
岳立言, 欧阳昇, 翟宝蓉. 嵌入式Linux远程监控系统的设计与开发[J]. 软件, 2018, 39(6): 20-22.
黄武陵. 基于ROS构建无人驾驶车辆环境感知系统[J]. 单片机与嵌入式系统应用, 2016, 16(11): 5-9.
张礼雄, 张忠林. 视频中多目标车辆的检测与跟踪方法研究[J]. 计算机技术与发展, 2018, 28(07): 125-129.
宗伟伟. 基于PTZ摄像机的运动目标跟踪算法研究与实现[D]. 东北大学, 2011.
邵博, 熊惠霖, 郁文贤. 基于核相关滤波器的无人机目标跟踪算法[J]. 信息技术, 2017(11): 150-156.
余礼杨, 范春晓, 明悦. 改进的核相关滤波器目标跟踪算法[J]. 计算机应用, 2015, 35(12): 3550-3554.
杨德东, 蔡玉柱, 毛宁, 杨福才. 采用核相关滤波器的长期目标跟踪[J]. 光学精密工程, 2016, 24(08): 2037-2049.
常芳, 尚振宏, 刘辉, 李润鑫. 一种基于颜色特征的自适应目标跟踪算法[J]. 信息技术, 2018(03): 10-14.
杨德东, 蔡玉柱, 毛宁, 杨福才. 采用核相关滤波器的长期目标跟踪[J]. 光学精密工程, 2016, 24(08): 2037-2049.
姜雪原. 基于动态规划算法的轨迹地图匹配软件设计与实现[J]. 软件, 2015, 36(5): 108-112.
李慧霞, 高梓豪. 室内智能移動机器人规则物体识别与抓取[J]. 软件, 2016, 37(02): 89-92.