张施皛,唐天宇,张志明,马国荣,高贺惟,余有灵
(同济大学 电子与信息工程学院,上海 200092)
随着信息技术与控制理论的发展,“人工智能+机器人”已经成为现阶段国内外的研究热点之一[1],机器人需要能模仿人类的感知行为来识别周围环境与自身状态,并进行分析和判断,采取相应的策略来完成相应的任务。智能机器人的设计与开发,是一个典型的复杂工程问题[2],在其方案论证、系统建模、硬件设计、算法编程、系统联调等研究实践中,由于需要综合运用电子电路技术、信号与系统、自动控制原理、计算机控制、传感检测技术、嵌入式系统、机械设计与制造、人工智能等专业知识,很难通过简单的一门或者若干门课程的形式实行实践教学。
在自动化及相关专业的高校本科培养体系中,学生的复杂工程问题解决能力和综合创新能力是课程教学质量的直接体现[3-4],需要在专业理论基础的指导下依托多样化、多层次的实践方式[5-6]开展工作,服务于我国正在实施的“创新驱动发展”“中国制造 2025”“新一代人工智能发展规划”等一系列重大国家战略,培养多学科交叉型与复合型人才[7-8]。以工程实践和学科竞赛为背景,多学科交叉的机器人竞赛专业覆盖面广,极具趣味性和挑战性,可以在常规教学之外,进行科技创新实践教学探索和改革[9-10],调动学生主动学习的积极性,全方位培养学生解决复杂工程问题的能力,并在竞赛实践中加以检验和提高。
2019 年中国机器人大赛中设置仿人视觉挑战项目[11],目的是推动机器视觉在智能机器人中的应用,与运动控制相互融合,基于单目视觉完成自主智能驾驶、定点停止和击打标靶等挑战任务。参赛同学以此竞赛实践项目为载体,跟踪人工智能和机器人学科发展中的前沿技术,通过针对性的理论学习和实践锻炼,课内课外融合、理论实践结合,有效地提高了大学生的综合创新意识和全面解决复杂工程问题的自主实践能力。
在比赛场地中,分别设置启动区、停止(禁入)区和路障,如图1 所示。其中启动区和停止区的图案均为黑白相间的方格;路障则是不规则特征的图案,位置随机摆放;道路是连接启动区和停止区的白色路径,黑色区域及围档是道路的边界。机器人仅可以通过单目视觉传感器获取场地信息,自主行驶在道路上(不得驶出道路之外),并能顺利跨越路障,在停止区前停住并打击放置在终点位置上的靶标。
图1 仿人视觉机器人比赛场地[11](单位:mm)
视觉感知信息处理作为机器人的主要技术手段之一[12],也是最接近于人类感知外界环境的探测方式,其中,单目视觉通过机器人的移动获得环境中特征点的信息,适用于工作任务比较简单的情况[13]。若需要充分利用仿人机器人的视觉系统来获取足够多的信息,图像处理与运动规划就尤其重要[12-14],在运动过程中得到更好的决策,提高运行效率。
近年来深度学习理论和技术日趋成熟,对机器人采集的图像进行识别、分类已成为一种方便且准确的方法[13-14],本文中的仿人视觉机器人架构如图2 所示,基于卷积神经网络和PID 控制算法,采用树莓派作为主控制器,通过单目摄像头采集道路与目标图像信息,使用三电机驱动的全向移动底盘进行位置移动,使用四自由度机械臂完成击打目标动作,实现机器人运动控制和挑战任务。
图2 系统架构设计
仿人视觉挑战项目应满足控制器、传感器、动力模块、供电模块的安全规范,满足速度、扭矩等参数要求,并且还需要满足安全性、重量尺寸等要求。故机器人本体选用博创尚和公司的智元素-格斗机器人[15],其外形和结构如图3 所示,采用半人形加全向移动底盘结构,同时具备STM32、Arduino 和树莓派3B 等多种平台硬件,全向移动底盘、双机械臂、树莓派处理器背包等各模块相互协作形成完整的机器人系统,符合竞赛项目需求。
图3 竞赛标准平台机器人
在本系统中,树莓派在软件层面进行数据采集、数据处理、控制算法等工作,在硬件层面与 STM32通信、实现各种电机和舵机的驱动,作为整个机器人系统的核心,起到承接软硬件模块的作用。
仿人视觉挑战项目机器人先通过单目机载摄像头采集典型道路图像数据,离线训练卷积神经网络,识别赛道不同区域的特征分类;在完成自动驾驶任务的过程中,再使用训练好的卷积神经网络作为图像处理模块,对机器人实际环境信息进行分类识别标签,然后送入到PID 控制器中,驱动机器人底层电机实现移动、循迹、转弯及停止等动作。数据处理及控制算法的总体流程图如图4 所示。用于数据处理的卷积神经网络算法和用于行驶控制的PID 算法构成机器人本体系统控制器处理算法的核心,在最短时间内完成规定动作并取得好的成绩。
图4 数据处理及控制算法总流程图
在本项目研究中,机器人的摄像头采集到赛道图像数据后,交由卷积神经网络 CNN 模型进行赛道元素的预测,进行初步的标签判定,再由控制算法做进一步的机器人运动控制。
本项目中,竞赛机器人采用卷积神经网络 CNN模型对赛道图像进行处理,通过数据采集、数据训练、数据预测 3 个子模块来完成道路元素的分类预测功能。标准的卷积神经网络一般由输入层、交替的卷积层和池化层的组合、全连接层和输出层构成。与普通全连接神经网络不同,卷积神经网络由于其本身具有的参数共享机制和连接稀疏性,可简化模型复杂度,减少模型参数,从而降低计算量和过拟合的风险[16]。在实现卷积神经网络模型时,已经有很多开发平台和工具可供选择,本文采用 Google 开发的开源框架TensorFlow[17-18],建立的CNN 模型层级结构如图5 所示,经过训练后的模型可以下载部署到机器人主控制器中运行。
图5 卷积神经网络模型层级结构
3.1.1 数据采集
数据采集阶段需要通过键盘人为控制机器人运动,在机器人运行时配合树莓派控制器通过单目摄像头采集大量的赛道图像数据,获得4 种典型类型的赛道图像,并以标签(“前进”“左转”“右转”“停止”)分别标识,经过调整图像大小与格式后存储为灰度图像集,最后压缩为指定格式文件提供给数据训练模块进行训练。
3.1.2 数据训练
数据训练阶段需要在高性能的计算机上离线运行,从而提高训练的效率。首先读取采集到的带标签灰度图像集,并划分成多批数据为小批量梯度下降算法(MBGD)做准备。在读取数据之后,使用TensorFlow库函数建立卷积神经网络模型,各层级的变量与结构设计完毕后,设置损失(loss)最小化函数。一次训练过程 Session 包含一定数量的周期迭代,每个周期中启动CNN 模型进行MBGD 算法,该周期的训练完成后,读取数据集的一部分作为预测集,用来判断模型的准确率,若该训练权重文件准确率高于历史权重文件则保留,在不断迭代中选择准确率最高的权重文件进行保存,供给数据预测模块进行实时图像的分类识别预测。
3.1.3 数据预测
数据预测阶段在机器人的树莓派控制器上在线运行,读取并保存数据训练模块中得到的权重文件后,远程操作打开机器人摄像头,实时获取机器人所在位置的赛道图像,调用预测程序函数使用该权重文件进行实时计算,预测和分类识别赛道,得到赛道图像标签结果后,获知机器人行进方向的信息,交由控制器算法进一步处理。
PID 控制策略是一种成熟的控制算法,其结构简单、稳定性好、可靠性高,并且易于实现[19]。虽然PID控制器的参数整定相当烦琐,需要很强的工程经验,但相对于其他控制算法,其编程简单、可操作性强,故选为机器人运动控制器算法。由于竞赛机器人平台没有提供控制理论数学模型,故在调试过程中,使用试凑法来确定PID 控制器中的比例Kp、积分Ki 和微分Kd 参数,根据各控制参数对系统响应的作用影响,调整参数数值,确定最后的PID 控制参数,以获得满意的响应输出。
机器人路径规划与驾驶控制系统采用闭环负反馈控制,在采集赛道图像并经过 CNN 模型得到预测的结果后,将连续几帧历史图像的预测结果保存在内存中,进行下一步处理,控制算法的流程图如图6 所示。若当前图像判断为“前进”标签,则再综合考虑前若干历史帧的标签,决定是否应该加速;若是“左转”或“右转”标签,则采用OpenCV 的ROI 操作与直方图计算得到左/右侧黑白像素比例,换算出误差,再经过PID 控制算法调节机器人的行进速度与方向;若是“停止”标签,则逐渐减速直至机器人停止运动并实现打击靶标动作,完成击靶任务。
图6 基于PID 的路径规划与驾驶控制算法框图
由于Python 编程逐点处理像素的效率较低,故将PID 控制算法与数字图像处理计算函数编译为C 共享库,再由Python 主程序调用。处理流程简述如下:先获取图像左右两侧矩形范围内黑色像素的点数,两侧像素的累加值之差作为PID 控制器的输入误差量,计算得到标签识别后的转向角度与速度控制量,最终输入到驱动程序中控制电机运动。
竞赛规则中提高了技术难度,在赛道中增加了迷彩路面特殊元素干扰,其在机器人运行道路的位置随机设定,因此需要设计适应性较强的算法来对路障元素进行处理,以减小对任务过程的干扰,避免赛道信息误判。
首先在使用TensorFlow 建立的CNN 模型训练集中加入“路障”标签,通过神经网络初步判断出路面迷彩元素后,再使用C 语言共享库读取摄像头左右两侧的黑色像素个数。与常规非迷彩路面不同的是,此次检测需要从两侧向中间扫描,在检测到接近白色像素时当前行扫描即停止;实测发现,与普通路面处理流程相比较,需减小扫描宽度才能得到较好的结果。检测完成后,经过PID 控制器运算获得自动驾驶电机运动控制参数。
路面迷彩路障处理的流程图如图7 所示。
图7 路障处理算法流程图
实验室调试赛道按竞赛标准赛道 1 : 1 搭建,如图8 所示。机器人从启动区开始,经过若干弯道与迷彩路障,均正确识别并正常自主行驶,最后在停止禁入区前减速、停止并击打靶标,顺利完成自动驾驶任务,运动过程中没有压到黑色边界部分,赛道总长约为10 m,全程花费时间约为10 s,调试过程中的手动秒表计时结果稳定,偏差不超过±0.1 s。
图8 实验室调试赛道及机器人实物照片
仿人机器人的视觉系统是机器人获取外界环境信息的主要来源,是机器人决策的主要依据,同时也是自身行为信息的一种反馈途径。以机器人仿人视觉对抗竞赛项目为背景开展综合创新能力训练,提出基于卷积神经网络识别不同的路况条件情况并通过PID 控制使机器人按道路行驶的方案,并对视觉系统中的图像分类、特征识别等问题进行了研究和实现,最终实现的控制方案具有实时性高、抗干扰能力强的特点。
仿人视觉机器人系统以树莓派为核心控制器,使用单目摄像头采集道路信息,通过 CNN 模型与 PID算法进行数据处理与运动控制,对迷彩路障识别进行特殊处理,最终实现机械臂击靶动作。实机测试能够完整、高效地实现赛道识别与自主驾驶竞赛任务,具有较强的稳定性与可拓展性。该系统在应对陌生道路元素时需要重新进行数据采集与模型训练,后期可以尝试从神经网络模型结构与数据集类型的方向去优化系统,使其能够应对各种复杂道路环境,获得更好的适应性。
在参与该竞赛项目的学习与实践过程中,通过文献资料查询、控制问题凝炼、方案归纳总结以及自动化工程设计与应用,参赛本科学生的复杂工程问题解决能力和综合创新能力得到了有效的锻炼,对控制系统与深度学习理论有了感性的认识与体会,同时在竞赛中也获得了较好的成绩:首次参加2019 年中国高校智能机器人创意大赛获得视觉对抗组第四名,改进算法后参加 2019 年中国机器人大赛视觉挑战项目以明显优势获得冠军。