基于树莓派控制的全地形小车研制
2023-09-06王伟柯陈帅兴钟协城黄梓鑫李德荣
王伟柯 陈帅兴 钟协城 黄梓鑫 李德荣
摘要:本文研制的全地形小车结合了四轮越障车越障能力强劲的特点,以铝件作为结构框架,并以树莓派4b板为核心微控制器,触须传感器和灰度传感器为辅助控制系统,直流减速电机为整体驱动系统,还采用卡尔曼滤波算法和增量PID控制算法控制小车整体的稳定运行,精确地控制小车的行进线路和行进姿态。该全地形小车能够适应多种场地,并在启动后能够自主实现沿着黑色引导线行走、攀爬窄桥、跨越两段式阶梯、过隧道、识别指定颜色的气球并爆破,最后在终点线处停下。该车全程行驶过程中,均无人干预和操控。
关键词:全地形小车;树莓派;灰度传感器;触须传感器
中图分类号:TH-39 文献标志码:A doi:10.3969/j.issn.1006-0316.2023.08.009
文章编号:1006-0316 (2023) 08-0063-07
Design and Development of All-Terrain Vehicle Based on Raspberry Pi Control
WANG Weike,CHEN Shuaixing,ZHONG Xiecheng,HUANG Zixin,LI Derong
( 1.School of Mechanical Engineering, Guangdong Ocean University, Zhanjiang 524088, China;2.College of Ocean Engineering and Energy, Guangdong Ocean University, Zhanjiang 524088, China )
Abstract:The all-terrain car developed in this paper features the strong crossing ability of four-wheel obstacle crossing vehicles, with aluminum parts as the structural framework and the raspberry pie 4b board as the core microcontroller. Tentacles sensor and grayscale sensor is used as the auxiliary control system, and DC deceleration motor is used as the overall drive system. Kalman filter algorithm and incremental PID control algorithm is used to control the overall stability of the car, which accurately controls the travel line and movement attitude of the vehicle. The all-terrain vehicle can adapt to a variety of venues. After the start, it can independently walk along the black guide line trail, climb narrow bridge, cross two section ladder, go through tunnel, identify balloons of specified color and explode them, and finally stopp at the finish line. During the whole driving process of the vehicle, there is no intervention and control from anyone.
Key words:all-terrain vehicle;raspberry pi;grayscale sensor;tentacles sensor
隨着无人控制系统、人工智能化技术的成熟,机械与电子技术实现向机电一体化的融合发展[1-2],如自动驾驶汽车、科学勘察车、月球车等[3]。基于该发展理念,各创新比赛也设置有智能越障小车、排爆机器人等赛道[4]。全地形小车作为智能车的代表,具有在不规则路面行走及攀越滑坡和阶梯的能力,本文研制的全地形小车就是通过机械设计与电子信息结合,进行再编程设定环境,使其成为一种针对复杂道路状况和环境的车辆,并具有机器人的特性。
1 机械结构设计
1.1 设计思路
该全地形小车模仿四驱车的形状设计,是一种小型化且便于拆装的四轮二段式结构。小车根据各种路障的特点进行相关结构设计,包括电机安放位置的调整、轮子的选用、导向轮的设计,使其能够通过窄桥、隧道、阶梯、爆破等任务。最终搭建出一种拥有驱动电机、特殊轮子、导向轮机构的全地形小车结构框架。
1.2 设计方案及调试
1.2.1 行走与越障结构
在小车行走方面,采用了三种轮子方案,如图1所示,其中方案一轮子由铝轮片和塑料履带组成,方案二为1:10模型轮胎套上塑料履带,方案三为1:10模型轮胎上加海绵圈。经过20次的全程行走测试,得到数据如表1所示。
经多次模拟行走与测量发现,方案三虽然速度较慢,但其与障碍物之间的摩擦力大,能够平稳地上下窄桥与阶梯。因为海绵圈具有极好的柔韧性,当小车有冲击力时,海绵被阶梯压缩,能够增大与阶梯表面的接触面积,增强摩擦力,完美解决了小车上不了阶梯的问题。且因为海绵圈材料的特性,其行走时相互摩擦力较大,不会出现车子左右摆动的情况;而在隧道行走时,其与亚克力板的相互摩擦力又较小,使其能更好地转动方向,不会出现轮胎卡住现象,还能够进一步提高小车落地的缓冲性能,因此方案三合理可行。
对于小车过隧道的结构设计,尝试了四种导向轮机构方案,分别对进行20次过隧道测试,得出了其通过次数、成功通过的平均用时及在出口处的偏转角度,如表2、图2所示。
由表2可以看出,方案三为最佳方案,前导向轮圆弧状的支架,让全地形小车在管道入口处碰到边缘时能够顺利滑进隧道,提高了容错率;后导向轮使后车轮在转向时都不会有碰到管道内壁的现象,大大提高转向性能,使全地形小车能够精准地在隧道内拐弯行走。
1.2.2 排爆装置
小车的排爆部分如图3所示[5]。设计一个卡槽结构,让摄像头卡在卡槽内。为了使小车能够进行精准爆破,将舵机安装在摄像头正上方。通过测量气球与小车的距离,采用10 cm铝杆作为舵机杆件,识别气球后进行180°的旋转扎破气球[6]。
1.2.3 整体车型结构
为了实现小车的轻量化,小车的中间骨架只用了一块桁架连接。用了两块舵机架以延长车身,且易于加装滑轨。滑轨特殊的孔位刚好能够适配18 mm孔位的减速电机。骨架前端位置加装一块铝平板,用于固定导向轮机构、触须传感器、电池夹持架。电池夹持架能够夹紧两个电池,且易于拆卸,方便电池充电和更换备用电池。利用四根螺栓与两块连杆将树莓派固定在中间骨架上,使得重心分布均匀,保证了小车的速度和灵活性[7]。小车二维工程图如图4所示。
2 硬件模块
2.1 树莓派开发板
树莓派是一种基于Linux操作系统的微型电脑电路板[8],其优点为:①卡片非常小,但具有电脑大部分的功能;②以SD/MicroSD卡为内存兼硬盘;③卡片主板有多个USB接口和一个以太网接口,可以连接键盘、鼠标、网线、显示器等外围部件;④支持Python、C、Scratch等多种编程语言。
2.2 电机驱动模块与电源转换模块
为了更好地将电机驱动模块与电源转换模块结合,且树莓派需要用到USB供电,而电池是DC接口,因此设计了一个由TB6612芯片控制、可由DC接口转换成5 V的USB接口装置的一款电机驱动器。该电机驱动器能够使两块锂电池分别给树莓派和电机供电,其原理图如图5所示。
2.3 电机与灰度传感器
灰度传感器能够利用不同颜色的检测面对光反应不同、其阻值也不同的原理来进行颜色深浅检测。其寻线信号准确稳定,使得寻线更加精准,且输出信号可以是模拟量或者数字量,非常方便使用。当灰度传感器处在黑色区域上方时,输出的数字为“1”,当灰度传感器处在白色或其他颜色较浅的区域上方时,输出的数字为“0”[9]。通过IO口AIN1、AIN2、BIN1、BIN2来控制电机的正反转。具体逻辑表3所示。
四个灰度传感器配合电机的正反转和左右差速,使小车不论是在隧道内还是隧道外都能灵活完成左右转、直走等功能,实现循迹。
2.3.1 隧道外
当小车处在黑线右边较少时,通过控制左右电机速度,实现差速偏移,使得小车往左小幅度偏移,回到正轨;当小车处在黑线右边较多时,左右电机差速较大,使得小车能够往左大幅度偏移,回到正轨。同理,小车处在黑线左边较少或较多时,也能够通过改变左右轮差速使得小车回到正轨。当小车本身就处于正轨时,左右电机差速为0,小车直行[10]。具体逻辑如表4所示。
2.3.2 隧道内
小车在过弯道时角度旋转会很大,一般小车在隧道内依然会通过调节两边车轮的转速差进行转弯,但这种调节方式使得小车在隧道内旋转角度很小。因此采用两边车轮方向差,进行原地旋转过弯。使用触须传感器来检测小车是否进入隧道,如图6所示。触须传感器是一种仿生类的数字量传感器。在触须传感器的触须碰到障碍时,会弯曲触碰到开关,从而让电流形成一个回路而发送数据信号,原理如图7所示。小车加装这个模块后,在过隧道时会让触须碰到隧道顶部使触须弯曲形成一个闭合回路,有效区分了小车处于直线行驶还是隧道过弯,从而设置弯道与直线的调节力度[11]。
经过多次测试发现,由于隧道内空间狭窄,行驶过程中四个灰度传感器只有一个会识别到黑线。此时的运行逻辑如表5所示。
2.4 摄像头与舵机模块
树莓派USB摄像头通过透镜生成投射到图像传感器表面上的场景的光学图像,然后转换成电信号,再由转换器转换成数字图像信号,最后被发送到正在处理中的数字信号处理芯片。通过USB接口与计算机重新处理时,图像可以通过显示器看到。USB攝像头读取图像的速度较快,且可以获取到场景图像。还可以利用opencv库对图像进行处理。在实际测试中,发现小车不用停止就能快速识别得到色卡与气球颜色,从而提高时间的利用率[12]。
舵机是由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。颜色识别完成后,通过发送信号,指定输出轴旋转角度,完成扎气球动作。
3 软件模块
3.1 关键代码
3.1.1 颜色识别
while True:
_,frame=cap.read()
for i in range(3):
img = frame.copy()
img = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
mask=cv2.inRange(img,lowers[i],uppers[i])
if(np.mean(mask)>color_num):
res.value = i
break
else:
res.value = -1
3.1.2 隧道外循迹
if(on == 1):
GPIO.output(AIN2,GPIO.LOW)
GPIO.output(AIN1,GPIO.HIGH)
GPIO.output(BIN2,GPIO.LOW)
GPIO.output(BIN1,GPIO.HIGH)
on = 0
if(h3==1 and h4!=1):
motor(leftlow)
elif(h3!=1 and h4==1):
motor(rightlow)
elif(h1==1 and h2!=1):
motor(lefthigh)
elif(h1!=1 and h2==1):
motor(righthigh)
else:
motor(string)
3.2 总流程设计
当总开关打开,灰度传感器等模块开始工作,USB摄像头单独工作。触须模块的触发与否决定了两套不同的循迹方案的使用。如果触发,则表明在隧道内,此时使用隧道内的循迹方案;如没被触发,则使用隧道外的循迹方案。不同的循迹方案,决定着左右电机不同的转动方向和差速,灵活地实现循迹。程序的不断循环,使得小车能够不断调整,始终在黑线正上方行驶。行驶过程中摄像头一直处于开启状态,当识别到目标颜色时,能够及时驱动舵机完成排爆任务,如没获取到目标颜色,舵机则处于待机状态,等待接收指令。因此整个过程中小车无需停下来完成某一任务,总时间大大减少。舵机完成动作后,程序继续运行4 s,之后自动关闭。流程图如图8所示。
4 结语
经过多次测试与调试,经历了四代小车的更替,完成了设计-制造-调试的循环过程,成功制作出一种以树莓派开发板为核心控制板,能够独立寻迹行走,顺利完成窄桥、隧道、爆破任务的全地形小车,并首次尝试了触须传感器,实现在隧道内外拥有两种不同的循迹模式。该全地形小车有着独特的轮子构造、独立的驱动力和有强大的行动力,完全能够应付复杂的地形。小车设计以四轮驱动为主要动力来源,四个轮作为一个整体进行驱动,提升整个小车的驱动力、行动力、稳定性。最后进行多次测试,得出全地形小车依次完成各种障碍的成功率达到95%,且均能在30 s内完成。因此,该全地形小车设计方案无误,各项指标稳定,达到了预期目的。
参考文献:
[1]牟文昌加,陈建宏. 基于ATMEGA328控制器的全地形小车的设计与实现[J]. 自动化技术与应用,2020,39(10):14-18.
[2]黄金虎,卢刚,王俊. 基于dsPIC30f4012的越障小车控制系统设计[J]. 微特电机,2012,40(6):50-52.
[3]任玲玲,李浪,闫庚龙,等. 基于Arduino的蓝牙智能避障小车设计[J]. 电子制作,2022,30(19):27-30,97.
[4]郑才国,肖梁. 全地形小车设计与实现[J]. 现代机械,2019(3):44-47.
[5]郑灵洁,胡晓军,陈静仪,等. 基于探索者平台的全地形机器人设计与实现[J]. 湖州师范学院学报,2021,43(2):70-73.
[6]刘孝贤,余江,郑徐凯,等. 基于STM32的全地形越障排爆机
器人设计[J]. 机械,2022,49(9):76-80.
[7]陈奎,张峻源,杨明月,等. 基于Arduino单片机的全地形小车设计[J]. 海峡科技与产业,2019(4):39-41.
[8]姜宗元,刘茜,李天,等. 基于树莓派的汽车安全智能防护系统的设计[J]. 电子世界,2017(18):127-128,133.
[9]苗庆龙,罗江涛,姜浩楠,等. 基于Arduino单片机的智能越障循迹车[J]. 机电一体化,2018,24(7):44-48.
[10]李志强,康钦清,肖玉亮,等. 基于Arduino的智能小车设计与实现[J]. 无线互联科技,2022,19(16):43-46.
[11]谷安,谢清华. 机器人触须传感器的設计[J]. 传感器与微系统,2006,25(6):83-84,88.
[12]陈小龙. 基于灰度传感器的智能小车避障寻优系统设计与实现[J]. 中国信息化,2018(2):66-67.