孙亚星 ,朱佳佳 ,孟 畅 ,张志强
(1.南京理工大学工程训练中心,江苏 南京 210094;2.南京理工大学机械工程学院,江苏 南京 210094;3.南京理工大学电子工程与光电技术学院,江苏 南京 210094)
低碳越障小车作为一种简单的低能耗轮式机器人,能够实现环境信息感知(障碍识别)、路径规划(轨迹判断)及行为决策(自动转向、上下坡和制动)等功能[1]。同时,它涉及机械设计、传感器和自动控制等理论,以重力势能作为唯一的前进驱动力,是典型的智能化、绿色化机电产品[1]。
本文以低碳越障小车为研究对象,设计了一套以ATmega1284P单片机为核心的控制系统,包括电源转换模块、传感器模块和执行机构等;采用状态机的程序设计思想,针对不同的路况,设计了一套以沿边PID直行程序为核心的控制程序。该控制系统能够实现自动转向及制动等功能。
采用模块化设计思想,将低碳越障小车设计为机械系统和控制系统两部分。机械系统采用三轮结构(其中:左边小轮为转向轮,另外两轮为行进轮/驱动轮)[2-4]。低碳越障小车结构如图1所示。小车上方悬挂1 kg重物(砝码),通过滑轮系传动,将重力势能转化为驱动力矩,作为小车行驶能量[2-4]。
图1 低碳越障小车结构图
控制系统主要通过激光测距传感器GY-530来感知环境信息(障碍)、通过姿态传感器MPU-6050感知自身姿态,再由程序判断得到小车所处的环境,进而由执行机构舵机MG90s控制机械系统,实现障碍检测、上下坡控制和自动转向等功能。
本文所设计的控制系统主要包括:充电电池(或移动充电宝)、稳压电源模块(LM7805)、ATmega1284P单片机最小系统模块、传感器组合和舵机组合等。控制系统结构图如图2所示[5-6]。
图2 控制系统结构图
单片机是整个控制系统的核心。因此,对单片机的选型,本文考虑的因素主要有以下几项。
①性能要求。需要对多种传感器进行定时信息采样;控制两个舵机的运动;对定时采样的传感器信息进行分析判断,根据控制算法给出控制命令。
②焊接要求。主控板(除驱动电路外的所有电路)必须方便现场焊接和调试,这是低碳越障小车走进课堂的必然要求。因此,单片机选型时,应结合学生的焊接技能水平,慎重选择。
③成本要求。在单片机选型时,应考虑成本的因素。当然,也不能因为考虑成本,而影响到系统的整体性能。
综合以上考虑,本文选用DIP-40封装的ATmega1284P单片机[7-8]。
在整个控制系统中,ATmega1284P 单片机、传感器组合和舵机组合均使用5 V工作电压。
本文选用7.2 V充电电池或移动充电宝作为供电电源,并通过降压模块LM7805稳定到5 V。LM7805稳压模块结构简单、稳定可靠,得到了广泛的应用,但输出电流小。经实测,本文控制系统需要选用两块LM7805模块进行稳压。
感知环境中的障碍物,需要使用距离传感器。通常使用超声波传感器。在实际测试中发现,超声波的发散角度偏大,容易造成误判断。考虑到激光的定向发光特性,本文选用激光测距传感器GY-530代替超声波传感器。实践证明,激光测距传感器的定位精度高、性能稳定可靠,在价格成本上也没有明显增加。
感知小车的姿态,需要使用到姿态传感器。在本文设计中,选用MPU-6050模块[1,9]。该模块又称三轴陀螺仪+三轴加速器,能够同时测量三个轴的角度、角速度和加速度,进而判断小车是否处于转向或上下坡阶段。
舵机是一种位置(角度)伺服的驱动器,精度高、控制使用灵活,适用于需要不断变化角度并可以保持的控制系统。因此,本文中的转向部分和刹车部分,均使用舵机来驱动,具体使用的舵机型号为MG90s。舵机采用脉冲宽度调制(pulse width modulation,PWM)波进行控制,控制方法简单[1]。
控制系统采用前后台程序设计结构,其流程如图3所示。
图3 控制系统程序流程图
程序先进行系统初始化,配置相关的寄存器,在判断出发起始位置之后(采用I/O信息来判断出发起始位置),进入循迹模式运行。
后台采用30 ms的定时中断程序采集(定时更新)传感器数据;前台则根据定时更新的传感器数据,对位置信息进行判断处理,单片机再将相应的PWM控制信号发送给舵机模块,以控制小车的运行状态,从而达到赛道障碍检测、自动转向和刹车的功能。
激光测距传感器GY-530、姿态传感器MPU-6050与微程序控制器(microprogram controller,MCU)的通信均支持I2C协议。而ATmega1284P也支持I2C。因此,本文采用I2C协议作为通信方式。
根据不同的环境路况,在循环模式中,主要完成直线道避障、半圆道避障和直线道上下坡控制等功能。
通常,直线道上的障碍墙是随机摆放的。考虑到小车自身的尺寸大小,只要求两个相邻障碍墙之间的最小距离不小于1 m,因此,障碍墙摆放方式有很多种。为此,本文考虑了直线道上障碍墙摆放的极限情况,即两个相邻障碍墙交错摆放,且两者之间的距离为1 m,如图4所示。这种障碍墙的极限摆放方式,能够适应障碍墙随机摆放的要求。因此,极限直线段赛道避障模块是整个控制程序设计的关键。
图4 直线段赛道障碍墙摆放的极限情况图
本文采用状态机编程思想来设计直线道避障模块的程序。
整个避障过程如下:假设小车从左下起点出发,首先是左PID直行;当检测到小车正前方60 cm处有障碍物时,即2号障碍墙,小车右转90°,通过MPU-6050模块判断动作是否完成;动作完成后,小车进入沿障碍墙的左PID,这个过程比较短暂;当检测到小车正前方60 cm处有障碍物时,即右直线挡板,小车左转90°;MPU-6050模块判断动作完成后,小车进入右PID直行操作。当然,若小车从右下起点出发,这个过程是类似的。以左赛道启动为例,直线道避障程序流程如图5所示。
图5 直线道避障程序流程图
整个避障过程所涉及的状态有:左/右PID直行、左/右转90°这四种状态。所涉及的转移条件分别是:小车正前方60 cm处检测到障碍、左/右转90°动作完成。由图5可知,整个程序的基本模块是沿边PID直行(左/右PID直行)程序。也就是说,沿边PID直行程序是整个控制程序设计的基础。
需要说明的是,半圆道避障可以通过执行右PID直行程序来实现。
直线道上下坡模块,主要用于控制小车从坡道上冲下的速度,并防止翻车。首先需要判断小车是否位于有坡道的直线段赛道,然后判断小车是否已经经历了上坡并正处于下坡的过程中,进而输出PWM波来控制刹车舵机。这些都是基于姿态传感器MPU-6050模块实现的。
在实际控制系统中,PID控制得到了广泛应用[10-12]。本文设计中,采用PID控制实现小车沿左/右直线边直行功能。
程序设计的具体思路是:将小车离直线道边沿的距离作为控制目标,使用PID算法,控制舵机运动的PWM波作为输出,实现小车沿赛道边沿直行。
在测试跑道一侧直线道上间隔不等(随机)地交错设置多个障碍墙,相邻障碍墙之间最小间距为1 m。另一侧直线道上设置有一段坡道,坡道由上坡道、坡顶平道和下坡道组成。两端则为半圆道。
经过实测,在机械系统配合下,本文设计的控制系统能够很好地满足设计要求。
所设计的低碳越障小车,分别在距离边沿20 cm、30 cm和40 cm三种情况下,均能正常完成沿左/右边PID直行操作;在距离坡道1 m、3 m和5 m等条件下启动小车,均能够正常上下坡,没有发生翻车的现象,充分说明了刹车模块的可靠性。在随机摆放10个障碍墙的情况下,小车可以跑35 m左右,经历了直线道避障、半圆道避障和直线道上下坡等阶段。
低碳越障小车作为典型的智能化、绿色化机电产品,越来越受到全社会的关注。本文所设计的控制系统,使用ATmega1284P单片机作为核心,采用激光测距传感器GY-530和姿态传感器MPU-6050模块来感知跑道环境,并以舵机MG90s作为执行机构。根据不同路况,应用状态机程序设计思想,设计了一套以沿边PID直行模块为基础的控制程序。经过测试,该控制系统能够实现直线道与半圆道避障以及直线道上下坡等功能。
作为低碳环保型产品,该小车的控制系统还有进一步开发的空间。比如,实现能量管理策略以提高重力势能的利用率,减轻整个控制系统的质量以提高整个小车的续航能力等。