基于STM32与DFS算法的电脑鼠的研究与设计
2022-06-27祝朝坤韩彦净谷会斌
祝朝坤 韩彦净 谷会斌
关键词:DFS;电脑鼠;PID;红外传感器;人工智能;上位机;蓝牙
1研究背景及意义
近年来,自动化机器人在智慧工业、智慧工地、智能家居等多个领域均得到了广泛的应用,而针对机器人的自动规划路径的研究,也变得更有必要。本设计以STM32F103RCT6单片机为主控制器,红外传感器为主要传感器,结合深度优先搜索算法(depth-first-search,DFS)算法,对电脑鼠机器人在其当前所处环境(迷宫)中,探索最优运行路径展开研究。
本设计的研究主要从以下几个方面进行。
(1)路径规划:一个好的算法可以使电脑鼠在迷宫中走最少的路线而找出迷宫的终点,所以,研究迷宫算法的过程中,需要对电脑鼠的路径进行规划,而在现实生活中,比如工业机器人在不同的工作站运送物料,就需要对路径进行规划,减少运动的轨迹,可以有效地延长机器人的使用寿命。
(2)智能避障:电脑鼠采用的红外传感器,通过发射红外由墙壁反射再有红外接收管接收,再由主控制器进行ADC采集,计算出墙壁的距离。
(3)运动控制:电脑鼠在迷宫中运行时,需要时刻保持电脑鼠位置处于赛道的中间位置,这就需要对电机的转速进行更加精确的控制。而在电脑鼠进行转弯的过程中对转速的要求则更加严格。
(4)运动轨迹可视化:电脑鼠在运行过程中,通过蓝牙调试板与PC上位机进行通信,电脑鼠实时上报当前的状态,包括电池电压、运动轨迹、当前位置等信息。通过对运行轨迹的分析,可以优化出更好的算法,并且可以通过上位机对电脑鼠内部参数进行修改。
2系统电路设计
2.1红外发射电路
SFH4550工作时的电流为100mA,所以串联50Ω电阻进行限流,通过NMOS进行驱动,该型号的MOS最大电流可达到5A,栅源极阈值电压为2.7V,因此可以通过微控制器直接进行控制。该电路具有结构简单、高效、利于控制等优点,红外发射电路原理图如图1。
2.2红外接收电路
TPS601A在工作时,接收到对应波长的红外光束,形成到导通回路形成电流,通过电阻进行分压,并通过微控制器进行AD转换将电压的模拟量转换为数字量,根据电压的高低,来获取当前电脑鼠与墙壁的距离。红外接收电路原理图如图2。
2.3电机驱动电路
电机驱动电路采用的是TB6612,该电机驱动芯片外围电路设计简单,仅需要两个电容即可。内部具有大电流的MOSFET-H桥结构,并且是双通道驱动,一个芯片可以驱动两个电机,支持正转、反转、制动、停止4种控制模式,同时内部具有低压保护电路与过热停机保护电路。电机驱动电路原理图如图3。
2.5电池电压采集电路
电脑鼠在运行过程中,为防止电池电压过低造成电池的过放电损坏电池,经过查询资料得知8.4V的锂电池组当电压小于7.4V时就属于亏电,所以采用了低电压待机的方案,当电压小于7.4V时启动电脑鼠进入待机状态。分压电阻将电池电压调整到微控制器可以采集的范围。原理图如图4:
3微控制器程序设计
3.1运动控制程序设计
(1)直线行驶:在电脑鼠运行过程中,需要时刻保证电脑鼠在赛道中间的位置,因此需要对左右轮的转速进行实时的调整,同时需要保证左右轮行驶的距离相同。这就是速度、位置的双重控制,本设计中采用的是位置式PID算法实现,先通过读取单位时间内的编码器计数,计算出当前电脑鼠行驶的速度,与设置的速度进行对比计算出误差,将误差代入PID计算公式中,通过调节Kp(比例系数)、Ki(积分系数)、Kd(微分系数)的参数使电机的响应速度达到一个响应快速且稳定的状态。在电机的控制中PID离散公式如下,其中e(k)为本次误差,e(k-1)为上次的误差,e(k-2)为上上次的误差,Out为电机的PWM的占空比。
Out=Kp[e(k)]+KiΣe(k)+Kd[e(k)-2e(k-1)+e(k-2)](1)
在电脑鼠运行过程中,电脑鼠不断读取红外传感器的数据,通过比例算法实时调整左右电机的转速,实现电脑鼠的位置始终保持在赛道的中间位置。
(2)直角转弯:连续转弯的控制比较复杂,需要对电脑鼠的左右轮行驶的距离和速度进行精确的控制,连续转弯时的运行轨迹如下图5,经过简单计算可以得出内外圈的长度比为1:3.5,因此就需要内圈与外圈的转速比需要达到1:3.5才能在相同时的时间下经过90度转弯。
(3)原地掉头:只需要控制電脑鼠左右轮向互斥方向转动180度即可。
3.2系统程序设计
本程序的系统流程图如图6,电脑鼠在上电的时候先对红外传感器,电机驱动等外设模块进行初始化,判断电池电压是否正常,如果电池电压过低进入待机状态不启动电脑鼠,如果电池电压正常即进入模式判断,探索模式、固定路线、调试模式三种模式。
(1)探索模式:电脑鼠在探索模式下,不断获取红外传感器信息,在没有发现路口的情况下保持直行的状态,当发现路口时首先会获取当前电脑鼠在迷宫中的坐标信息,在进行与目标点的绝对位置计算,当前进一格后到终点的绝对位置小于转弯后前进一格到终点的绝对位置,那么程序判断直行到达终点的代价会小于转弯到终点的代价,执行继续前进的指令。反之当前进一格后到终点的绝对位置大于转弯后前进一格到终点的绝对位置,那么程序判断直行到达终点的代价会大于转弯到终点的代价,执行转弯指令。直到到达终点,停止运动,进行DFS迷宫最短路径解算,如图7。
(2)固定路线模式:在电脑鼠的比赛中是允许电脑鼠进行多次测试的,当在探索下当电脑鼠到达了终点,并且经过了DFS算法解算出最短路径,此时的最短路径信息会被保存在微控制器内部的Flash,做到掉电不丢失,中途更换电池也不会影响电脑鼠中储存的最短路径信息,程序流程如图8。
(3)调试模式:该模式主要用于电脑鼠的调试阶段的程序参数的修改,在调试模式下电脑鼠是处在一个待机的状态下的,不断接收上位机发送的信息,解析出需要修改的信息,进行指定数据的修改,在修改完成之后,返回一条修改好的数据返回给上位机软件,告诉上位机软件修改后的数据,通过该模式可以大大提高电脑鼠的调试效率,免去了修改代码、重新下载程序等的重复的步骤。调试模式程序流程图如下图9。
(4)DFS是一种用于遍历或搜索树或图的算法,沿着树的深度遍历树的节点,尽可能深的搜索树的分支。而在电脑鼠到达终点时,电脑鼠在探索过程中的迷宫信息都将保留下来,将电脑鼠走过的轨迹创建为一个新的迷宫,将迷宫的数据导入到DFS算法中,DFS的本质就是穷举法,DFS开始遍历迷宫的各分支找出一个最短的分支。并将分支的位置信息保存在Flash中,用于电脑鼠返回的导航数据以及再次冲刺时的数据导航。DFS算法程序流程图如下图10。
3.3上位机程序设计
上位机的系统流程图如图11,上位机在与电脑鼠进行连接时需要选择电脑鼠与电脑蓝牙的端口以及波特率信息,当电脑鼠与电脑建立起连接后,电脑鼠会不断上传电压、运行模式等状态信息。在连接成功后并且电脑鼠处于调试模式时,上位机可以使用修改参数的功能,对电脑鼠的数据进行修改。如果电脑鼠处于探索模式下,程序主窗口会实时显示电脑鼠在迷宫的位置信息。
(1)主界面:主页面的主要作用就是顯示运行信息、通知信息、电脑鼠的实时位置,以及电脑鼠的串口连接设置、功能按钮,如图12。
(2)修改参数:修改参数是为在调试电脑鼠的时候方便修改电脑鼠内部的数据,如图13。
4结语
电脑鼠是移动机器人领域的重要分支,传统的电脑鼠运行速度、稳定性都比较差,并且大多数采用数字红外传感器技术来判断电脑鼠周围的环境,迷宫的解算算法也比较落后。本设计针对传统电脑鼠的明显的弊端,深入研究电脑鼠的红外布局、运动控制、红外测距、硬件设计等,并最终完成了电脑鼠的设计。主要研究成果如下:
(1)改进了红外传感器的布局,并采用了高聚集的红外发射管和红外接收管,使电脑鼠采集的数据更加灵敏、准确、快速;
(2)改进了传统电脑鼠的控制方案,采用编码电机实现了电脑鼠的速度、位置双闭环控制器,对行驶中的电脑鼠速度、位置进行精准的控制,设计出电脑鼠的连续转弯机制,该转弯方式可以显著提高电脑鼠的在转弯时所用的时间;
(3)改进了传统电脑鼠的调参过程,传统电脑鼠的调参需要修改代码重新下载程序,非常麻烦。特别是当到达一个新的比赛环境,这样的方式就显得不是很高效,而采用了上位机的方式来调节参数就不会有这种麻烦,修改参数只有将需要修改的数值填上,即可实现一键对电脑鼠的数据进行修改;
(4)改进了电脑鼠的迷宫解算算法,实现了DFS算法与电脑鼠的结合,大大提高了电脑鼠解算迷宫的准确性。