zl程序教程

您现在的位置是:首页 >  其他

当前栏目

全国大学生智能汽车竞赛讯飞 -智慧餐厅技术报告 ——信号与系统课程论文

智慧技术论文系统智能 报告 信号 课程
2023-09-11 14:15:18 时间

简 介: 通过学习机器人结构相关专业基础知识,通过使用 ROS(Robot Operation system)平台,运用了SLAM、组合导航、路径规划等技术, 还与人工智能领域相关的NLP、深度学习、机器视觉等内容融合,还原了现实生 活的场景,并且模拟满足了现实生活中的迫切需求。

关键词 智慧餐厅信号与系统小论文

贾宇飞 自 93 2019011394
闫泽 自 96 2018011682
谭跳 自 93 2019010840

 

§01 言:项目背景及意义


  年来,人工智能这一科技浪潮正在深刻改变着世界,智能机器人作为人工智能的一个综合性载体已经开始渗透进日常生活的方方面面。 2020年新冠疫情席卷全球,让人们意识到无接触配送的重要性。对配送过程的速度、安全、卫生要求都较高的餐饮配送引起了我们的注意,在大规模推广无接触配送的过程中,智能移动服务机器人将扮演重要角色。

  我们的项目旨在基于 ROS开发平台,利用 AI识别算法寻找到一条最 “便捷 ”的配送路径,再以车辆模型模拟配送餐车,达到从指定起始点到达指定目标点的任务。通过地形和障碍来模拟现实场景的环境,不断优化算法获得最速配送时间。

  创新点:我们团队通过学习机器人结构相关专业基础知识,通过使用 ROS(Robot Operation system)平台,运用了 SLAM、组合导航、路径规划等技术,还与人工智能领域相关的 NLP、深度学习、机器视觉等内容融合,还原了现实生活的场景,并且模拟满足了现实生活中的迫切需求。

 

§02 案设计


1、赛事的规则和任务.

  • 根据赛事条件:嵌入式计算平台,智能车预装Ubuntu18.04 系统,预装软件包括但不限于Pytorch、TensorRT、ROS。
  • 赛题任务:围绕比赛主题——餐厅配送,进行多段子任务。

▲ 图2.1.1 塞到地图

▲ 图2.1.1 塞到地图

▲ 图2.1.2 赛道地图参数说明

▲ 图2.1.2 赛道地图参数说明

  需要完成的子任务:决赛任务分为多段子任务。

  • 子任务1:智能车从出发区离开,移至B 区。B 区存在多个雪糕筒作为障碍物,每个雪糕筒均有不一样的标识。
  • 子任务2:智能车抵达任务领取区C 区。C 区的两张挡板分别标有两种垃圾的图标,中间放置一张二维码,二维码包含了需要运送垃圾的种类信息。
  • 子任务3:扫描二维码获得需要运送垃圾的种类信息。
  • 子任务4:识别C 区两张挡板上的垃圾。
  • 子任务5:智能车离开C 区,停泊在指定区域。若所需要运送的垃圾在C1 区,则智能车最终需要停泊在D1 区;若所需要运送的垃圾在C2 区,则智能车最终需要停泊在D3 区; 若不存在需要运送的垃圾,则智能车最终需要停泊在D2 区。
  • 子任务6:通过语音播报出障碍物的数量。

  比赛使用的智能车套件如下:

▲ 图2.2.1 科大迅飞只能车模套件

▲ 图2.2.1 科大迅飞只能车模套件

▲ 图2.2.2 智能车性能参数表

▲ 图2.2.2 智能车性能参数表

  智能驾驶小车上的软件层面的实现集中在嵌入式计算平台上,其实现了包括传感器数据处理、构图、定位、导航、决策规划、目标检测、图像分类、语音处理在内的诸多核心功能。

2、实现任务的方案

  使用ubuntu 系统运行相关串口协议,管理底层硬件、摄像头、下位机STM32、运动底盘、雷达等硬件。使用Ros 作为各传感器和操作系统的统一通讯架构。

  使用相关的软件包,调用了激光雷达、IMU,完成导航任务。视觉部分包括openCV,语音的合成与播放使用了ros 的sound_play 包。使用opneCV 和深度学习模型完成标识的识别,针对赛题中人物图片的长\短头发特征进行识别,根据赛题规则规划智能车的终点。

 

§03 目算法功能


  们对于这种拓扑的迷宫,可以考虑贴着一侧墙壁走,最终可以到达终点。但明显这种算法效率极低,并且无法保证隔离墙壁的碰撞和子任务的完成。由于比赛中我们都有整个的地图信息,我们不妨利用地图先规划好路线,再控制小车沿着路线走。

  比赛中的智能车在获得目的地信息后,首先经过全局路径规划规划出一条大致可行的路线,我们的导航算法基于Move_base 框架,全局规划器采用Dijkstra算法。然后调用局部路径规划器根据这条路线及costmap 的信息规划出机器人在局部时做出具体行动策略,我们使用的局部规划器采用DWA 算法。在ROS 中每当move_base 处于规划状态就调用DWA 算法计算出一条最佳的速度指令,发送给方针车的运动执行机构执行。

  路径规划基于DWA 算法(dynamic window approach),其原理主要是在速度空间(v,w)中采样多组速度,并模拟这些速度在一定时间内的运动轨迹,再通过一个评价函数对这些轨迹打分,运动控制空间(小车四个轮子是麦克纳姆轮,运动控制包括横向、纵向两个加速度和y 轴的角加速度,通过发布cmd_vel 话题来进行控制)的最优解被选择出来发送给下位机。

  算法实现采用了ros 的move_base 导航包。算法的优化思路主体上是对dwa_local_planner 各项参数的调整,使用比较准确的全局地图。

 

§04 目实施过程


1、导航

  为了加速小车到达终点的速度,我们对导航的以下几个参数进行优化:

(1)地图膨胀

  由于车模本身的物理尺寸,在进行路径规划时,需要考虑墙体与车子之间的距离,在此使用地图边缘膨胀。既要保证膨胀尺寸不能过小,与墙壁发生碰撞,又不能过大导致车子无法通过狭小的通道。

(2)整体与局部规划器

  由于全局路径规划器仅是根据整体的地图与起点终点的信息规划出一条几何上的最优路径,而小车作为模拟的实体具有速度、惯性、加速度等物理属性,还需要局部的路径规划器根据车辆的具体物理属性来规划局部的运动姿态。这两者之间存在一定的偏差,如何赋权、设置多大的偏差容限都是需要调整的重要参数。

(3)加速

  在能够避免碰撞和正确行驶的前提下尽可能地快,增大加速度、角加速度、速度上限和角速度上限。

(4)平滑路径

  曲折的路径意味着更多的转弯和减速,使弯道平滑、让小车多走直线。为此引入梯度下降算法,避免直接使用网格格点规划路径。进一步提升速度。同时设置更符合地图弯道半径的避障半径。在使用Rviz 建立出地图之后,经过后期边缘处理使地图更加精确清晰,这可以减少地图的边缘毛刺,让路径变得平滑。

(5)加速转弯

  在过弯时观察到小车速度过慢,规划器采用了过于保守的速度以避免碰撞,因为增大了过弯的速度下限充分利用了小车的加速度实现顺滑的过弯。此外,使用了可视化调参工具rqt_reconfigure,减少了繁琐的改代码调参过程。

2、视觉识别

  为了使得小车获得通过扫描二维码和两个垃圾的标识来获得停靠信息,我们增加了视觉识别的功能。实施的方法如下:

(1)相机标定

  由于智能车车载相机内外部参数的影响,摄像头获取的图像会有一定畸变,需要使用ROS 提供的标定功能包camera-calibration 进行标定消除,否则拍摄的二维码会产生变形而无法识别。

▲ 图4.2.1.1 使用标定板进行标定

▲ 图4.2.1.1 使用标定板进行标定

▲ 图4.2.1.2 标定获得的相机内外参数矩阵

▲ 图4.2.1.2 标定获得的相机内外参数矩阵

(2)二维码读取

  在到达任务领取区域后智能车打开摄像头进行拍摄(60fps),对每一帧进行decode,直到扫到二维码后decode 结果barcodeData 不为空,据此进行判断扫码成功。之后关闭二维码扫描,进入垃圾识别模式。由于车载ROS 系统中的OpenCV 版本较低,无法使用QRdecode 函数,于是我们采用了pyzbar 库进行二维码识别。图1.2 中获取的barcodeData 为任务类型。

  需要注意的是,摄像头获取的图像需要事先左右翻转得到image,才是我们正常看到的图像。若不进行翻转,二维码将无法识别成功。

▲ 图4.2.2 二维码读取核心代码

▲ 图4.2.2 二维码读取核心代码

(3)垃圾识别

  在任务领取区摆正方向(用目标点姿态w 控制),使得摄像头正对任务卡片,拍摄待识别垃圾照片后关闭摄像头。处理图像信息读取分别对应的垃圾种类后,根据1.2 识别二维码结果,得到下一步设定的终点(垃圾桶位置)。

(4)颜色阈值方法

  识别垃圾的基本方法是颜色阈值方法,根据不同种类垃圾标识的不同颜色进行统计识别,据此判断垃圾种类,以下为具体识别步骤:

▲ 图4.2.4.0 车载摄像头拍摄原图

▲ 图4.2.4.0 车载摄像头拍摄原图

  (1)分割

  将拍摄的图片分为左右两半区,分别识别颜色获取垃圾种类信息。由于我们车的摄像头视角比较低,所以我们发现对图片只需截取左上角四分之一、右上角四分之一即可,由此还可以减少地板颜色对识别产生的影响。

▲ 图4.2.4.1 分割功能代码

▲ 图4.2.4.1 分割功能代码

▲ 图4.2.4.2 原图分割结果

▲ 图4.2.4.2 原图分割结果

  (2)阈值二值化

  RGB 方法:根据照片,使用画图工具分别采集三种垃圾对应的红、绿、蓝颜色RGB 基准值,设定容差上下限。将不在该范围内的像素过滤掉之后,剩余的像素即为匹配的颜色。

▲ 图4.2.4.3 RGB阈值识别核心代码

▲ 图4.2.4.3 RGB阈值识别核心代码

  HSV 方法:与RGB 方法原理基本一致,只是换成了HSV 颜色空间,如此可以降低颜色识别对光照的敏感程度,可以更好地适应比赛场地的光照变化。而且在OpenCV 中有现成的inRange 函数进行HSV 阈值过滤,比较方便快捷。

▲ 图4.2.4.4 HSV阈值识别核心代码

▲ 图4.2.4.4 HSV阈值识别核心代码

▲ 图4.2.4.5 识别结果

▲ 图4.2.4.5 识别结果

  (3)统计

  统计剩余像素个数,只要数目大于某一阈值blc,那么认为识别到了这种颜色。

  上述方法原因是:“其他垃圾”的灰色标识与背景颜色过于相近,无法直接识别,我们考虑采用排除法:当识别色块大小不足,无法判定为红、绿、蓝三色块之一时,认定识别结果为灰色。

(5)匹配方法

  上述颜色阈值识别方法的正确性依赖于颜色阈值参数、blc 参数设定,这会随着场地环境改变产生较大影响。后续考虑改进时,我们换用了以下的匹配方法:

  (1)首先采集不同颜色标识的基准图片;

  (2)在获得待识别图片后,将其左右分割;

  (3)与这些基准图片分别进行比对,使用ssim 函数获得两张图片相似度;

  (4)选择相似度最大的基准图片标签作为识别结果。

  这样就进一步减小了光照等环境因素对识别结果的影响,需要调节的阈值参数也很少,效果更优,后续考虑基于这个方法进行改进,保证正确率。

▲ 图4.2.5.1 相似度计算核心代码

▲ 图4.2.5.1 相似度计算核心代码

▲ 图4.2.5.2 相似度计算与识别结果

▲ 图4.2.5.2 相似度计算与识别结果

 

§05 目数据分析


  行结果如下图所示:

▲ 图5.1 运行结果

▲ 图5.1 运行结果

 

§06 目作品总结


一、主要成果

  首先在线上赛中,通过如第五部分所示的几步优化,虚拟车能够实现自主规划路径、动态避障,以及能够在55s 内到达设定的终点。

  之后在线下赛中,我们在智能车上对算法进行调试,最终完成了全部的子任务,在清华大学校赛中获得决赛一等奖。

二、改进方向

  采用TEB(time eletic band)算法代替DWA 算法:当前给出的小车工作空间相对简单,用优化的方式得到运动参数速度较快,路径较为平滑,同时也不会出现因参数过多得不到最优解情况。

  底层运动控制:在仿真中不便调整小车的底层运动参数,但在实车上可以考虑加入控制算法保证稳定控制。

  目前使用的图标定位方式是简单的按比例分割截取,但是由于每次拍照无法确定小车的位姿和相机的角度,这种简单的方式往往精度较差,且对小车的定位和与目标物的距离角度要求较为苛刻,因此为了解决这个问题,可以考虑在图像的预处理阶段使用图像边缘提取算法,使用二阶边缘提取算子(如Canny 算子)识别出图像的边缘,进而实现有效信息的定位和截取,理论上可以达到提高识别精度,减少运算量的效果。

三、前景预期

  充当救援用机器人:本智能车配备有较完整的传感器,通过激光雷达可对场景建图、摄像头可返回更具体信息。这非常适于在火场等场景使用,为人工救援提供现场信息。

 

考文献


[1] 陈奕梅, 康雪晶, 徐鹏. 复杂环境下多移动机器人控制算法研究[J/OL]. 电光与控制:1-6[2021-320].
http://kns.cnki.net/kcms/detail/41.1227.TN.20210305.1721.002.html

[2] 《A* , Dijkstra , BFS 算法性能比较及A* 算法的应用》https://blog.csdn.net/qq_34446253/article/details/51427423

[3] 卞永明,季鹏成,周怡和,杨濛.基于改进型DWA 的移动机器人避障路径规划[J].中国工程机械学报,2021,19(01):44-49.


● 相关图表链接: