吴子豪,颜斌,陈龙
(杭州电子科技大学 电子信息学院,浙江杭州,310018)
随着人工智能和自动控制技术的不断完善和进步,自动驾驶技术[1]取得了显著进展。通过自动驾驶和智能路径规划[2],可以实时调整行驶路线和速度,提高道路利用效率,减少交通拥堵。智能小车是人工智能和机器学习[3]等技术的重要应用领域。通过研究智能小车,可以探索利用计算机视觉[4]、深度学习[5]和强化学习[6]等技术使车辆能够实时分析环境因素、作出决策并自主行驶的方法。这进一步推动了人工智能和机器学习技术在其他领域的应用和发展。本文通过设计基于图像识别的三轮智能车自动控制系统,实现迅速且稳定地行驶直道、弯道、坡道、十字、环岛、路障、断路等赛道元素。
该系统的硬件结构经过设计,由六大部分组成:驱动控制模块、摄像头模块、测速模块、测距模块、电磁信号采集模块以及姿态检测模块。其中,主驱控制模块集成了单片机最小系统,而其他功能模块则通过FPC 线、杜邦线或排针排母进行连接。主驱控制模块包括核心控制器TC264、电源模块以及可以实现实时根据路况和小车运行姿态调节参数的按键、拨码开关、OLED 等辅助模块。摄像头模块使用的是逐飞科技的130°无畸变的总钻风摄像头。测速模块使用的是1024 线带方向迷你编码器。测距模块使用的是红外测距。电磁信号采集模块由6.8nF 电容和10mH 电感经过运放放大电路和滤波电路构成。姿态检测模块使用ICM-20602 陀螺仪。关于小车的外观,请参考图1。整体系统方案的框图如图2 所示。
图1 小车外观
图2 系统整体方案框图
图3 TC264 核心板
电源模块旨在满足系统各个组成部分的用电需求,因此,在进行设计时,不仅应当关注电压范围、电流容量,更重要的是,应当优化转换效率、抑制噪音、避免干扰,并确保整个电源系统结构简洁,能够有效的维持系统的正常工作。通过设计一些稳压电路,来转换为各个模块所需的电压。为了满足需求,包含了四种供电电压:
(1)使用锂电池供电,正常使用时电压在7.4~8.4V。可直接用于电机供电。
(2)使用稳压芯片TPS5430 输出电压5V,原理图如图4 所示。
图4 TPS5430 输出电压5V
(3)使用稳压芯片RT9013 输出电压3.3V,以满足OLED、陀螺仪、单片机、摄像头等供电需求,原理图如图5 所示。
图5 RT9013 输出电压3.3V
(4)使用稳压芯片LM2663 来输出-5V 电压,以满足运放工作的正负5V 供电需求,原理图如图6 所示。
图6 LM2663 输出电压-5V
选择BTN8962 作为电机驱动电路,它是一颗具备极强集成性的芯片,能够大幅度减小电路板的面积,使板子更加简洁。原理图如图7 所示。
图7 电机驱动电路
使用大津算法来处理图像[7],它可以有效地将图像划分为黑白两个不同的部分,并且可以通过设定一系列的阈值来实现这一目标。大津法是针对灰度值进行阈值分割二值化,如果是彩色图像的话需要先转化成灰度图再进行计算。通过使用灰度值阈值Threshold,可以计算出不同像素之间的方差,从而使得相关性降低,黑白变得更加清晰。为了达到最佳效果,需要确保Threshold 值范围内所有像素之间的方差都达到最大值。效果如图8 所示。
1.新旧联系,强化概念的过渡。在传授新知时,必须注意抓住新、旧知识的联系,引导学生进行类比、对照,并区别新旧异同,从而理解新知。如用有理数乘法法则时,让学生与小学数学的乘法法则对比。学生发现它们的不同仅在于确定积的符号,这时讲解的重点就放在符号法则上。又如讲解分式的基本性质时,又通过分数的基本性质进行引入讲解等等,让学生在学习时有一种熟悉感。
图8 二值化算法
采用基础扫线方法,通过从中间行93 向左或向右寻找黑白跳变点来确定左右边线。一旦确定了左右边线,就可以计算出实际中线,其计算公式为(左边线+右边线)/2。在图9 中展示了上位机仿真图像的具体情况。
图9 上位机仿真
由于智能小车机械机构的限制,摄像头安装需要一定角度,导致获取到的图像会产生一定的畸变,相比于正常的真实的赛道,呈现出远处图像变小、近处图像变大的特征。本文通过加权平均的方法得到一个比较符合赛道真实状态的赛道偏差,具体方法如下:将整张图像的中线分成不同的区间,并且在每个区间平均偏差计算之后再赋予权重系数,最后将所有区间求出的权重偏差进行加和。具体计算公式如下:
公式(2)中e1、e2…ek为各区域偏差,middle[i]为中线数组,n 为所取中线数组的个数,f1、f2…fk为各区域偏差的权值。
智能小车需要根据路径的方向偏差信息来进行路径调整。本文采用转向环和速度环并行控制差速来实现路径方向调整,使小车能够在不影响前进的过程中进行方向调整。小车的速度环采用的是位置式PID[8]。但是,由于PID 中的I项具有积分作用,可能会导致小车的转向响应过慢。因此,小车的转向环采用了模糊PD 控制。对于偏差的处理采用流程图如图10 所示。
图10 控制流程图
3.4.1 速度环位置式PID
经过不断测试和仿真,单P 和PD 的仿真结果都无法达到所需的设定值,并且与期望值相差较大。最终决定使用位置式PID 作为智能小车的速度环。速度环位置式PID 的公式为:
其中:k—采样序号,k=0,1,2…;Uk—第k 次采样时刻的输出值;e—第k 次采样时刻输入的偏差值;ek-1—第k-1 次采样时刻输入的偏差值;∑ei—到第k 次为止的误差积累项;Kp—比例项系数;Ki—积分项系数;Kd—微分项系数。
单P 仿真结果:无法达到设定速度,并且毛刺较多速度不稳定,仿真结果如图11 所示。
图11 单P 仿真
PD 仿真结果:无法达到设定速度,毛刺较少速度相对稳定,仿真结果如图12 所示。
图12 PD 仿真
PID 仿真结果:可达到设定速度,并且毛刺较少,响应速度快,速度能在短时间内达到稳定状态,仿真结果如图13 所示。
图13 PID 仿真
3.4.2 转向环模糊PD[9]
在尝试过最简单的PD、串级PD 作为智能小车的转向环之后,发现对于一些特殊元素比如环岛、大S 弯等转弯角度过大的元素“赛道”鲁棒性非常差,小车很容易失控冲出赛道。在不断测试下,最后决定采用了三个模糊表,分别是根据误差模糊P、根据误差变化率模糊D、根据速度模糊补偿项的P 和D。极大地增强了小车的鲁棒性,并且速度上也有很大的提升,并且小车的转弯姿态非常好。隶属度函数使用的是三角型隶属度函数[10],模糊表如表1、表2、表3 所示,去模糊化采用重心法[11]。转向环控制流程图如图14 所示。
表1 模糊p控制器
表2 模糊d控制器
表3 模糊补足项pd控制器
图14 转向环控制流程图
根据误差模糊P 模糊表如表1 所示。
根据误差模糊D 模糊表如表2 所示。
根据速度模糊补偿项PD 模糊表如表3 所示。
通过红外测距模块和摄像头来判断障碍物,通过图像识别出障碍物的距离和红外测距模块测出的距离加权平均来得到一个合适的偏差值,然后使用这个偏差值来进行转向,直至红外测距模块测得值大于小车直行不会碰到障碍物的状态下,实现避障[12]功能。
经过不断测试,小车的鲁棒性得到了极大的增强,随机赛道完赛率在85%以上,并且在第18 届全国大学生智能车竞赛中获得了全国第四的成绩。
本文设计并实现了基于图像识别的三轮智能车控制系统。在电路方面,设计了核心板、电机驱动、电源转换等不同模块。在程序方面,下位机采用C 语言进行编程,上位机采用C#语言进行编程,通过开发工具进行程序调试。通过图像处理、位置式PID 速度环和模糊PD 转向环并行的方式使小车实现该功能。经过反复测试与优化,最终构建了一套更加通用、稳健的算法和参数。该算法和参数能够根据实际路况变化,自动调整车速,在直线上实现加速,在弯道上达到减速,从而确保在最短的时间内完成整个比赛。