袁天乐 赖亭润 李威 李金 李啸杰
摘 要:设计了基于ARM内核的移动避障机器人,对机器人系统分别进行了硬件设计和软件设计。基于ARM内核的机器人硬件系统包括主控制器STM32F103ZET6,电源模块、调速模块和电机驱动模块、无线通信模块、避障模块等,并完成了机器人硬件系统电路原理图的设计。软件系统以Keil ?Vision4为开发平台,采用C语言为编程语言,设计了系统主程序、调速子程序、无线通信子程序、避障子程序等。实现了机器人的启动停止、前进后退、左转右转、加速减速、加速左右转、减速左右转、调速移动避障等功能。
关键词:ARM;STM32;移动机器人;避障
1 引言
智能机器人的快速发展,可以代替人们完成比较有危险系数或简单费时低效的工作。移动机器人必须具有较高的智能性,能够实施捕捉面临环境的有效信息,并进行独立判断,进行实时反馈,让我们可以更加客观便捷地采取判断。移动机器人在一定程度上可以解放劳动力,提高安全生产系数。可以通过移动机器人完成启停、进退、左右转向、加速减速、移动避障等动作,同时移动机器人具有环境感知能力,自行判断进行下一步动作,完成实时环境数据采集。近年来,我国科技的发展紧跟世界科技迅猛发展的脚步,由于移动机器人系统是集嵌入式系统设计、电气结构设计、人工智能、自动控制、无线通信、模式识别、图像处理等多种技术于一体的典型智能机器人系统,综合性极强[1]。许多高校都在开展机器人大赛训练学生的自主创新能力,机器人大赛甚至已成为国际上各高校相继举办的重点科技竞技活动。
本文重点研究了基于ARM内核移动避障机器人系统设计,包括以STM32F103ZET6为主控制器的硬件系统和软件系统,结构简单,成本低廉,实用性强。
2 移动机器人系统的总体设计
基于ARM的移动避障机器人系统设计分为硬件设计和软件设计两个部分,硬件设计主要有六部分:主控制器、电源模块、无线通信模块、电机驱动模块、调速模块以及避障模块。移动避障机器人系统硬件设计图如图1所示。
移动避障机器人性能的优劣会对其工作的效果产生质的影响,因此移动避障机器人需同时兼具稳定性以及灵活性。要能准确的实现前进、后退、左右转、停车、移动避障等动作。
基于ARM的移动避障机器人系统整体的功能设计主要包含前进后退功能、左右转功能、速度检测及调节功能、移动避障功能等。
当移动避障机器人运动前方出现障碍物不能通过时,移动避障机器人进行避障操作。
3移动机器人系统的硬件设计
3.1主控制器
移动避障机器人系统的主控制器选用意法半导体(ST)公司发布微控制器STM32F103ZET6,功耗低、集成度高、时钟频率达到72MHz,微控制器采用高性能的ARM? Cortex?-M3 32位的RISC内核,工作频率为72MHz,I/O口丰富,包含2个12位的ADC、3个通用16位定时器和1个PWM定时器[2]。对STM32F103ZET6的最小系统电路进行设计,最小系统电路应包括电源电路、复位电路、晶振电路以及JTAG接口电路四部分。
3.2 电源模块设计
移动避障机器人系统采用双电源供电,分别给控制电路和电机驱动电路供电。主控制器需要供电电源为3.3V,电机驱动芯片L298N需要供电电源为+5V,电机需要的供电电源为+12 V,所以选用+12V可充电的镍氢电池作为移动避障机器人系统的主电源,+5V和+3.3V可在电路中添加电源转换芯片得到。移动避障机器人系统选用镍氢电池作为供电电源,将+12V转换到+5V采用转换芯片7805。7805是三端稳压集成电路,有三条引脚输出分别是输入端、接地端和输出端。7805三端稳压IC内部电路具有过压保护、过流保护、过热保护功能,这使它的性能很稳定。能够实现1A以上的输出电流。器件具有良好的溫度系数,因此产品的应用范围很广泛。可以运用本地调节来消除噪声影响,解决了与单点调节相关的分散问题,输出电压误差精度分为±3%和±5%。电源转换电路如图2所示。
主控制器STM32F103VET6工作电压为2.0~3.6V,通常接+3.3V,供I/O端口等接口使用。内置的电压调节器提供CM3处理器所需的1.8V电源,即把外电源提供的3.3V转化为1.8V。+3.3V电源是由+5V电源通过电压转换芯片LM2596进行转换得到的,在LM2596两侧都加了电容减少了电源受到扰动的影响。电源转换电路如图3所示。LM2596系列是德州仪器(TI)生产的3A电流输出降压开关型集成稳压芯片,它内含固定频率振荡器(150KHZ)和基准稳压器(1.23v),并具有完善的保护电路、电流限制、热关断电路等[3]。利用该器件只需极少的外围器件便可构成高效稳压电路。提供的有:3.3V、5V、12V及可调(-ADJ)等多个电压档次产品。
3.3避障模块设计
移动避障机器人系统避障模块采用超声波避障传感器HC-SR04。HC-SR04 超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。基本工作原理:
TRIG 端触发测距,给出至少10us的高电平信号; 模块自动发送8个 40khz 的方波,自动检测是否有信号返回;若有信号返回,通过 ECHO 端输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,然后就可以计算出距离。
脉冲工作方式如图4所示。
3.4 电机驱动模块设计
移动避障机器人系统采用42式步进电机作为动力来源,采用L298N电机驱动板驱动两个42式步进电机。L298N如图5所示。
L298N电机驱动板尺寸为57mm*50mm*33mm;重量为33g,采用L298N双H桥电机驱动芯片,驱动部分端子供电范围是Vs:+5V~+35V。电机驱动板体积小,质量轻,功耗小,稳定性高,且具有光耦隔离功能,驱动板正面有正反转指示灯和电源指示灯[5]。驱动板上PWMA 和PWMB 输入不同的占空比就可以分别调制两个电机的速度,如果不需要调速,悬空即可。
L298N电机驱动模块原理图设计如图6所示。
3.5 测速调速模块设计
在电机控制系统中,通过半导体功率器件将所需的电流和能量传送到电机线圈绕组中,进而控制电机的转速和转矩,PWM信号则是用来控制半导体功率器件开启和关断时间的。
PWM的原理图如图7所示,在三极管的基极输入PWM脉冲,在ON的时间内,输入是高电平,三极管处于导通状态,电机转动。在OFF时间内,输入是低电平,三极管处于关断状态,电机停止转动。电路中存在续流二极管,在OFF期间,仍能提供给电机能量,维持电机的运转状态[6]。
3.6 速度检测模块
移动避障机器人系统速度检测模块采用增量式光电编码器,具有高精度、高分辨率、低惯量、低噪声等特点。其结构简单、抗干扰能力强、稳定性高。采用主控制器芯片STM32F103ZET6内部的定时器进行转速测量[7]。光电码盘安装在轴上随电机一起转动,通过比较接收器获得的两组正弦波信号A相和B相哪一项在前判断电机的旋转方向,通过对单位时间内的光电编码器输出脉冲的个数进行计算得到当前电机的转速[8]。增量式光电编码器原理如图8所示。
移动避障机器人系统采用测频测周法测量电机的实时转速[9]。同时测量时间和此时间内脉冲的个数来计算转速值,电机低速转动和高速转动两种情况均适用。
4 移动机器人系统的软件设计
移动避障机器人系统的软件设计以硬件功能和结构为基础,根据各功能模块的划分,系统软件程序包括:主程序、无线遥控子程序、避障子程序、测速调速子程序、电机驱动子程序等。系统采用C语言进行机器人程序设计,采用Keil μVision4为开发环境。Keil MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9等微处理器提供了一个完整的开发环境。
4.1 主程序设计
基于ARM的移动避障机器人系统的主程序中,首先进行各模块初始化,包括超声波传感器测距、电机驱动等,然后是看门狗和中断的初始化,运行障碍物检测程序;当检测到前方没有障碍物,移动避障机器人按计划继续行进,当传感器检测到前方有障碍物时,则进入避障服务子程序,移动避障机器人进行避障[7]。移动避障机器人系统主程序流程图如图9所示
移动避障机器人系统避障模块采用超声波避障传感器。利用超声波避障传感器接收发出信号,在一定距离内,可通过传感器发出的超声波检测移动避障机器人前方是否有障碍物。在规定距离内如果出现障碍物,超声波传感器电平会发生跳变,将检测结果传递给微控制器,微控制器将会作出相应的决策[10]。
移动避障机器人采用L298N来完成两个电机的驱动,同时采用STM32的PWM端口对速度进行控制。通过对主控制器STM32F103ZET6的GPIO端口进行电平变换实现控制电机的正反转,当主控制器引脚输出控制信号10时电机正转;输出控制信号01时电机反转。进而控制移动避障机器人进行前进、后退、左转、右转的基本动作。STM32自带PWM脉冲输出端,通过输入不同占空比的PWM脉冲,可以控制电机的转数,进而控制移动避障机器人的行驶速度[11]。脉冲输出端是通过对PWM接口编程实现的。
L298N模块输入输出关系如表1所示。
5 实验方案设计
移动避障机器人车体采用轮式结构,容易建模控制,平滑性能较好,但是车体的轮子可能会与地面产生打滑的现象,导致移动避障机器人运行的稳定性不够。在移动避障机器人测试中,采用两个主动轮作为驱动轮和两个主动轮作为辅助轮,以解决万向轮摩擦力小带来的不稳定性。移动避障机器人车体底板规格为20cm*15cm,高15cm,驱动轮车轮直径是5cm,移动避障机器人车体分为三层:第一层放置主控制器STM32F103ZET6以及接线板,便于调控引脚控制信号;第二层放置电机驱动模块以及电源模块,电源模块重量较大,放在第二层降低了重心,并且可以借助上下层的限制减小电源模块运动,使移动避障机器人运动更加平稳。第三层是移动避障机器人车体的电机和车轮,将电机置于车体底层,使车体更加美观。移动避障机器人的模型如图10所示。
移动避障机器人避障模块要及时的检测到障碍物并且进行躲避动作。避障模块的测试内容是:移动避障机器人初始状态时停止状态,测试开始,在移动避障机器人的车体前方放置不同大小的障碍物,测试避障模块检测到障碍物的时间以及能否做出相应的躲避行为。测试结果如表2所示。
由表2中移动避障机器人避障模块测试结果可以看出:60次实验中移动避障机器人车体前方超声波避障传感器有57次成功检测到障碍物,并且将信息及时反馈给主控制器,主控制器驱动电机进行相应的躲避行为,但是在测试过程中发现当障碍物高度低于避障传感器水平位置或者障碍物距离传感器过近時,会导致避障失败。
6 结束语
通过对机器人智能化发展现状的分析,结合嵌入式系统多任务的设计思想,实现了以单片机STM32F103ZET6为核心的移动避障机器人系统。ARM机器人是机器人研究领域的重要分支,为了进行ARM机器人的系统研究,首先根据机器人系统的功能设计确定了适合机器人启动停止,前进后退,左右转,移动避障,测速调速的Cortex-M内核的STM32芯片。在硬件设计方面更多的注重结合软件编程的模块化思想,设计了机器人移动避障和步进电机驱动的模块。最终设计出的ARM机器人的分层与模块化结构。同时具有低成本、低功耗、智能化高以及通用性的特点。
参考文献:
[1]张舞杰, 南亦民. 基于STM32F103VB的应用编程技术的实现[J]. 计算机应用, 2012, 29(10):2820-2822.
[2]JosephYiu. ARM Cortex-M3权威指南[J]. 2014.
[3]谢龙汉. Altium Designer原理图与PCB设计及仿真[M]. 电子工业出版社, 2012.
[4]李翔, 李璨, 仝飞. 基于STM32与CC1100的采煤机无线遥控系统的研究[J]. 微型机与应用, 2015(6):95-98.
[5]周筑. 基于STM32的智能小车研究[D]. 西南交通大学, 2014.
[6]李文超. 基于STM32的自动行驶模型车的设计[D]. 河北工业大学, 2013.
[7]蒙博宇. STM32自学笔记[M]. 北京航空航天大学出版社, 2014.
[8]傅汉霖, 操凤萍. RoboCup3D机器人定位研究综述[J]. 电脑知识与技术, 2016, 12(10):172-174.
[9]夏天维, 侯翔. 基于自适应Kalman滤波的机器人运动目标跟踪算法[J]. 计算机测量与控制, 2015, 23(1):173-175.
[10]段勇, 徐心和. 基于多智能体强化学习的多机器人协作策略研究[J]. 系统工程理论与实践, 2014(5):1305-1310.
[11]Zhu D, Veloso M. Event-based automated refereeing for robot soccer[J]. Autonomous Robots, 2016:1-23.
作者简介:
袁天乐(1997.07-),男,汉族,湖南长沙人,本科大四学生,本科生,主要在大学研究数值计算和计算机软件的编程,学习计算科学与信息专业相关的课程
项目名称:基于ARM的机器人系统研究
项目编号:C201704446