基于STM32 的寻宝旅游机器人小车设计
2022-08-06程苡凡刘文飞白焕鑫
程苡凡,刘文飞,白焕鑫
(台州学院 航空工程学院,浙江 台州 318000)
在智能化技术不断发展的年代,智能化是现代技术发展的趋势,智能寻宝旅游小车可以代替人力穿越险境、去指定的宝物所在地点勘测、寻宝,同时也可以应用在其他领域,具有极高的研究价值。2020 年浙江省第五届大学生机器人竞赛要求,设计并制作一辆在规定时间内,穿越险境、去随机指定的宝物所在景点寻宝,同时游历尽量多的景点,通过识别景点图像到达指定景点,同时兼具爬坡、避障、跨越门槛、识别及定位、快速和稳定完成规划路线的能力的寻宝旅游机器人小车。
1 总体方案设计
浙江省大学生机器人竞赛要求设计的智能机器人小车需具有自动定位、寻迹、避障、跨越门槛、上坡和下坡、路径规划、读取识别图像及形状以及作出指定动作等功能,根据此要求,对机器人小车各功能模块进行自主设计。材料主要采用2 mm 的铝板,主体结构大致分为4层:底板、主控板、驱动板和树莓派。电源为24 V 的航模电池,通过19 V 稳压模块给电机供电以及5 V 降压模块给树莓派供电。主控芯片为STM32F103ZET6,图像识别采用树莓派+OpenCV+200 万像素摄像头。动力方面采用24V900 转直流电机(100 kg·cm)+2 路大功率,轮胎为直径、摩擦力较大的驼峰胎。寻迹方面则依靠12 路数字灰度传感器。为了保持机器人小车与场地之间的距离加了合页和辅助轮,并用6 个光电传感器来确定车身位置和弯道位置。再用3 个舵机充当头和手臂,方便完成指定动作。总体方案如图1 所示。
图1 总体方案图
2 硬件设计
2.1 主控模块设计
主控芯片上选择了STM32F103ZET6,引出了TIM3 的4 个通道输出PWM 波形用来控制电机驱动。带有两路的编码器正交解码输入接口,采集编码器发送回来的数据。引出串口,连接树莓派,在调试过程中发送数据给电脑串口,方便调试及数据监控。外接了TIM5 的3 个通道用来控制舵机,以及6 个光电开关的引脚满足路口的线路检测和外部需求。
2.2 电源模块设计
该机器人小车以24 V 航模电池为电源,利用稳压器将24 V 电压稳定在19 V 后,分别并联电机驱动、PCB 控制板用作供电,其中的PCB 板通过LM2596S 模块将输入的电压降至5 V 后再给电路板上的其他模块供电。
2.3 电机驱动模块设计
在电机驱动方面,机器人小车采用四个直流电机实现移动的功能,其中,电机的型号为24V900 转直流电机(100 kg·cm)+2 路大功率,重量172 g,额定参数24 V,最大扭矩100 kg·cm,通过调节PWM 占空比来实现对于转速的控制,进而通过给定两侧轮间差速来实现转弯、掉头功能。同时,电机驱动又采用了大功率的隔离电机驱动模块,以至电机可以频繁正反转而不损坏驱动,且使用简便,仅仅需要将电机正负线连接到驱动,驱动IN1-IN4 再分别连接STM32F103ZET6 的PWM 输出IO 口就可以实现PWM 信号控制。
2.4 寻迹模块设计
机器人小车的寻迹主要是根据地图中分布的白线移动的,在一些特定的位置根据逻辑判断实现定位停车。
本机器人小车寻迹主要分为两部分,第一部分是白线位于小车中间的寻迹,主要利用到了12 路灰度寻迹模块。该寻迹模块灵敏度较高,一般光源无法影响,只要有颜色差即可,比普通红外传感器抗干扰能力要强得多。灰度传感器上的12 盏高亮白色聚光LED 灯通电后发射光照射到地面上,经过不同地面的反射后,其中的光敏电阻会根据返回光强来改变电阻大小。因为地图的颜色不同,调节灰度传感器的灵敏度后可实现在白线上返回高电平,绿色区域返回低电平,STM32会根据返回的高低不同电平来改变电机的转速从而实现寻迹功能。第二部分是两条红线位于小车两侧,小车位于两条红线之间的寻迹,利用左右两侧的光电传感器实时检测小车相对于红线的位置,光电传感器的原理类似于灰度传感器,一旦检测到小车位于红线边缘,STM32 也会根据返回的高低电平来改变两侧轮间差数,从而实现路径纠正,实现走中间寻迹功能,使其能够解决小车在通过独木桥、跷跷板以及斜坡、上下坡等的路径纠正问题。
2.5 树莓派模块设计
树莓派4B 是一款以Cortex-A72 为架构的微型嵌入式计算机,具有强大的运算性能。此外,它的体积十分小巧,尺寸仅为88 mm×58 mm×19.5 mm 大小,非常适合小型便携式智能终端设备。并且处理数据效率高,不易出错,满足我们对图像识别的要求,因此我们选择用它安装python-opencv 并搭载200 万像素摄像头实现各个景点图像的读取,图像形状的识别。
2.6 舵机模块设计
由于机械手臂和头部的所需动作简洁且快速,因此我们选择MG90S 模拟舵机,舵机型号为尺寸22.8 mm×12.2 mm×28.5 mm,重量13.6 g,转动角度180°,死区设定5 μm,工作电压4.8~6 V。它兼备大扭力、内阻小、反应快、角度准确等特点。工作过程中,PCB 控制板通过降压后的5 V 供电,与STM32 串口通信,小车到指定位置后单片机发送讯号给舵机,从而达到控制机械手臂和头部执行指定动作的效果。
3 机械结构设计
机器人小车机械结构分为底板设计、辅助轮支架设计以及人形支架设计三部分。
底板设计整体采用了矩形结构设计,在底板的中间两端各伸出一个流线型接口,符合空气动力学。在减小气流阻力的同时,又为光电传感器提供了安插口。底板正前端弯折出一对直角台阶,降低整体车型的重心以及辅助轮支架到车身的高度;连接辅助轮支架的合页安置在底板上,控制支架角度并始终与地面接触,增强循迹稳定性、可靠性。底板四周镂空若干孔位,为整车的排线留有余地,增加容错、减小底板重量。
辅助轮支架设计在辅助轮支架上装载的传感器有两个光电开关,12 路灰度传感器和两个辅助轮,采用合页与小车底板相连,通过旋转副实现两个辅助轮的上下摆动,按提前设置的高度贴合地面,以确保灰度传感器的正常工作,保证小车正常循迹,同时辅助轮灵活的上下摆动解决了小车过减速板的难题;装载在灰度传感器两侧的光电用于过独木桥、跷跷板和黑色斜坡的寻迹,寻迹支架的设计给这两个传感器的安装提供了一个高效发挥作用的位置。
人形支架装在主控板两端,多个光电开关安装在车身四周,适用于赛道需求。
4 软件设计
4.1 电机控制单元
电机控制单元采用了STM32 的TIM3 定时器PWM 输出功能实现控制4 个直流电机,单片机内部进行PID 算法的运算,得到输出所需要的速度,PWM 的波形采用了10 kHz 的频率,通过调节占空比来控制输出的PWM 波,从而控制电机的速度,这种调节占空比的方式虽然可以满足基本的电机控制,但是由于存在电压和实际路况等不稳定因素的影响,电机的速度会莫名地发生变化。因为存在稳定控制电机速度的难题,我们采用了增量式PID 控制算法,增量式PID 控制算法相比较于位置式PID 算法,增量式算法不需要进行累加计算,控制量的增量仅仅和最近几次的偏差值有关,计算误差对控制量的计算影响比较小。而位置式算法要用到过去的偏差值的累加值,易产生较大的累加误差。因此,每当执行机构需要控制量的时候,可以使用增量式PID 控制算法进行控制。控制器不是提供位置量的绝对数值,而是增量。为了改善系统的动态和静态指标,可以调节调节器的比例系数Kp、积分时间Ti、微分时间Td 和采样周期Ts 的具体数值来完成控制器参数整定,使其特性和过程特性相匹配,取得最佳的控制效果。PID 计算公式如下所示。
对PID 参数进行整定后,可以得到不同的速度控制曲线。不限幅速度控制曲线(图2)的控制精度虽然已经足够高,但偶尔会出现超调现象,PID 的超调量主要在第一个波形中起作用,即由低速突然加速到高速的过程中会出现很大的超调,不能达到预想的加速效果,超调反映的是控制系统在达到稳态前控制作用最糟糕的结果。我们希望超调越小越好;超调越小,稳态时间越长。在调试的过程中,加速的时候如果加速度过快,就会发生前轮上翘,同样在刹车时会出现后轮上翘。要使在保证速度的前提下,又能解决问题,我们多次尝试并发现了在保持KP 不变的情况下增大KD 值去抑制过调量同时对每次增量进行限幅,这样既能达到一定的平缓速度,又能保证每次增加的速度稳定。但如果把KP 调小去解决加减速过快的问题,就会发现响应速度又受到严重的影响。限幅代码如下:
图2 不限幅速度控制曲线
限幅后的速度控制曲线(图3)十分平稳,又能够响应速度,完全足够达到理想的控制效果。
图3 限幅后速度控制曲线
4.2 图像及形状识别单元
对于图像信息的采集和处理,识别单元采用了树莓派4B+OpenCV+200 万像素摄像头,首先,将比赛的图片特征数据提取出来,建立模型,命名为对应景点的编号,保存到树莓派内的一个文件夹,即进行图像的预处理。然后单片机发送“拍照”信号给树莓派,启动摄像头开始拍照,接着使用SIFT 算法检测图像的关键点和描述符,并与比赛图片对比、匹配特征点,计算统计相匹配的特征点个数,输出匹配数目最多的图片所对应的景点编号,转化为字符串后发送给单片机,单片机内通过串口中断,如果接收到内容,判断是否为图像内容,若是,则让任务显示装置逐位显示。为了防止小车未到景点而已经识别到图像,只有在到达景点平台时,树莓派内程序才会自运行控制摄像头开启。
4.3 寻迹单元
4.3.1 白线寻迹
白线寻迹使用的是12 路灰度寻迹模块,由于定时器的中断函数的存在,传感器每隔5 mm 检测当前小车相对于白线的位置,并以高低电平信号反馈回STM32,同时在寻迹的程序中使用了PID 闭环控制,为了防止小车在偏离直线后,还能够迅速、准确地返回原来的路径。12 路灰度寻迹部分程序,寻迹位置式PID控制的部分程序如下所示。
4.3.2 两侧红线纠正路线
两侧红线纠正路线是通过检测安装在小车四周的光电传感器,当检测到小车边缘靠近红线时,STM32 给定小车的左右轮子一定的差速,使其实现路径纠正。
5 机器人小车实物图(图4)
图4 机器人小车实物图
6 结束语
本文设计并制作了一辆智能寻宝旅游机器人小车,包含实现寻迹模块、电机驱动、树莓派的图像与形状识别、姿态传感器、舵机控制等功能的软硬件设计、小车的电机控制以及寻迹功能都加入了PID 闭环控制,在能够实现更精确的移动控制的同时,稳定、快速地完成在规定时间内穿越险境、去随机指定的宝物所在景点寻宝,并游历尽量多的景点的任务。