作者:喻泽华 李建军 代恒志 吴永霞 贺光城
单位:哈尔滨商业大学轻工学院
指导老师:纠海峰
1. 作品简介
全地形智能消毒小车,顾名思义适用于所有地形,能应用到日常生活中能够适应复杂地形的多变性,其次是它还能通过红外识别定点消毒,不仅如此,它还能应用到消防,洒水等领域上,达到事节省人力,半功倍的效果,这在我们的生活发展中具有很大的前景。针对此次比赛,我们组共同研究探索了几套方案,最终决定采用六轮驱动红外感应装置,其中两轮在车尾部可以上下不同角度进行移动的这样一种轮系套装,一方面能更好的提供抓地力和驱动力,保证更好的直线行驶,另一方面在坡道和台阶车辆倾斜时,车尾一组轮胎能提供更强的动力取的更好的成绩。机械结构以前面两组轮子为基础,车尾一组为辅助,可用于翻越障碍,其机械结构上通过定车轮和动车轮的结合使小车具有翻越障碍同时提供更强动力的能力,硬件电路上使用Arduino核心板,电池组以及稳压模块组成了单片机系统;软件上结合黑标寻迹和颜色识别实现了小车自主路径选择的功能。在此基础上,我们又添加了红外消毒装置,通过使用传感器经过调试后的小车具有寻迹稳定性高,识别准确,响应迅速的特点,保证它在复合地形赛道中能够取得更好的成绩。
车身车头一组轮子采用履带,在爬楼梯的过程中,使得小车有足够的摩擦力来攀爬上阶梯和格栅而不至于打滑,同时车尾一组动车轮在地面可增加动力。采用灰度传感器来检测车辆行驶路线,使其能够在障碍之间跑直线按照规定路线行驶。车前两轮并在出隧道的时候对小车的转向作相应的调整以减少其偏向。
全地形智能消毒小车的应用优势,在于“全地形”、“移动”与“红外消毒”三个部分。一方面,在全地形的应用背景下,小车具备良好的路地形适应能力,可在复杂地形环境下执行标准的任务动作;另一方面,机器人在移动过程中,应保持路线精准,可实现较高的工作效率与工作质量;最后,在此基础之上增加了全方位智能消毒装置,以实现小车在不同的地形更高效地完成消毒工作。对此上基本要求,全地形智能消毒机器人的结构与系统设计,可总结出以下5点功能需求:
① 适应复杂地形的需求,即小车具有以爬坡、越障等运动功能;
② 物体识别的需求,对小车所侦查的环境信息进行精准采集与识别;
③ 自动寻迹的需求,因为我们采用的是自主运行,所以小车可根据传感系统的控制下,进行自动寻迹。从而达到所设计的功能要求;
④ 定点消毒,通过红外传感器来利用颜色控制小车消毒的功能;
⑤ 边寻迹边消毒,本消毒小车可以通过指令开启消毒功能,还可以通过开启水泵开关使消毒功能处于工作状态。
2. 结构方案说明
2.1 作品机构简图
2.2 装配图
2.3 设计思路
2.3.1 消毒小车机械机构的设计
由于比赛的赛道共有4种障碍物,分别是窄桥、台阶、减速带和两个u型隧道,消毒小车需要顺利通过这些障碍物并且按照所设计路线行走,就需要它具有良好的通过性和稳定性,经实践发现履带比轮子稳定性更高,但履带小车行走相对来说比较慢,最后我们设计成把前轮换成履带轮,更容易通过障碍物,又能快速前进,由于消毒小车头部较重,所以小车采用2个电机带动2个大前履带轮为其提供充足的动力,后面是两组共4个小车轮,共有6个电机,这样就使小车能更具行驶的平稳性和上楼梯的能力。通过将灰度传感器平配在小车底端上面,使小车可以沿着赛道的黑线行驶,也可以使小车在运动过程中即便产生了较大程度的偏移,也能通过传感器的检测程序执行从而更方便快捷的做出纠偏行为。同时在小车上安装颜色传感器来探测气球颜色并识别,系统进行分析,进而通过舵机上安装针来扎破相应颜色的气球,通过颜色指令来控制消毒开关,实现定点消毒,从而完成工作。
2.3.2 消毒小车转向系统的设计
由于制作的小车无单独控制转向的电机,所以可以通过两侧轮子的速度差实现不同程度的转弯。大前轮和后面轮子直径大小不同,电机的工作转数也有所差别,我们通过多次实验得到了一个较好的前后转数比,可以实现不同程度的转弯。如果想要实现小车向左转向,那么就将左右两侧的轮子通过调节电机的输出功率,使其拥有不同速率,左轮转数调小,而右轮转数增大,以此达到向左转向的目的。同理如果要实现小车向右转向,那么就可以将小车左边电机的输出功率调大一点,将右侧电机的输出功率调小一点,从而实现小车右转。当然小车转弯角度的大小也是可以通过两侧的速度差值大小来调节,如果想要让小车往右侧进行大幅度的转弯,就可以将小车右侧的电机功率调得比左侧功率更小一些,就可以实现小车大幅度的右转。
2.4 创新点
如今社会多数小车以四轮轮系为主要运动。在复杂地形,如陡坡中可能会翻车,动力不足等问题,我们又增加2个轮子在小车,且轮子可以上下不同角度进行移动,在面对不同地形是能更好的去调整适应,动力更足,以保证小车更安全地越过障碍,为小车越障时提供支撑力,并且加入后轮后增大了小车的存放空间,可以将消毒所需的水箱、水泵等置于小车尾部来平衡掉头部消毒机构的的一些重量,这样就避免了头部较重导致下坡时翻车的问题。同时加入的灰度传感器,颜色传感器及其他传感器也可以保证小车可以完成更多的指令,按照规定的路线进行自动行驶。相比于传统的四轮轮系的小车,六轮驱动不仅行径、爬坡和上台阶动力有所增加,而且在保持车身平衡,规避行驶风险,驱动力,完成特定需求等方面都有了足够大的优化和进步,相比于四轮轮系的小车有很大的创新。
3. 控制方案说明
3.1 控制系统设计思路
本文所针对的全地形小车是自主运行完成所需要的任务,因此小车是自主形式来通过障碍物,并且通过对摄像头看到物体进行识别,然后采取不同的方案,使小车直行自己的任务。但是本科能力有限,我们将小车的自动寻迹通过灰度传感器来识别黑线来使小车行驶和越障,然后真正的图像识别,我们选取颜色识别来进行这方面的工作,并且通过颜色识别来判定舵机的运动从而完成小车的工作。本文通过arduino平台对小车进行逻辑代码的书写下面我们将arduino以及程序流程图。
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。硬件部分是可以用来做电路连接的Arduino电路板软件部分是Arduino IDE,你的计算机中的程序开发环境。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对 avr-gcc库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
3.2 程序流程图
3.3 程序代码
三路寻迹主要程序
#include <Servo.h>
#include <FlexiTimer2.h>
//寻迹
int sensor[3] = {0, 0, 0};//存储A0A2A3
float max = 3.85;//误差最大值基数为60的
float s = 255;
float Kp = 60, Ki = 15, Kd = 60; //PID控制算法
float error = 0, P = 0, I = 0, D = 0, PID_value = 0;//P比例I积分D微分
float previous_error = 0, previous_I = 0;//微分和积分常量
int initial_motor_speed = 255;//电机速度基数
//舵机
int servoPin =12;//
int pos = 0;// 角度存储变量0
int poss = 150;// 角度存储变量180
//跳变
int c = 0;//记三个灰度传感器变黑次数
int x=0;
int before=0;//上一状态值
int button=0;//现在的值
int beginState=1;
void setup()//初始化
{
pinMode(5,OUTPUT);//电机
pinMode(6,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(A0,INPUT);//传感
pinMode(A2,INPUT);
pinMode(A3,INPUT);
Serial.begin(9600);
delay(100);
}
void read_sensor_values()//模拟灰度识别
{
sensor[0] = analogRead(A0);//读取模拟量的值
sensor[1] = analogRead(A2);
sensor[2] = analogRead(A3);
if (sensor[0] < 240)//参数根据实际要量修改
{
sensor[0] = 1;//转化为数字量
}
else
{
sensor[0] = 0;
}
if (sensor[1] < 240)
{
sensor[1] = 1;
}
else
{
sensor[1] = 0;
}
if (sensor[2] < 240)
{
sensor[2] = 1;
}
else
{
sensor[2] = 0;
}
if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 1))//右转
{
error = -2;//需要大角度修正
}
else if ((sensor[0] == 0) && (sensor[1] == 1) && (sensor[2] == 1))
{
error = -1;//需要小角度修正
}
else if ((sensor[0] == 0) && (sensor[1] == 1) && (sensor[2] == 0))
{
error = 0;//直行
}
else if ((sensor[0] == 1) && (sensor[1] == 1) && (sensor[2] == 0))//左转
{
error = 1;//需要小角度修正
}
else if ((sensor[0] == 1) && (sensor[1] == 0) && (sensor[2] == 0))
{
error = 2;//需要大角度修正
}
else if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 0))//跑上一状态
{
if (error < 0)
{
error = -max;
}
else
{
error = max;
}
}
else if ((sensor[0] == 1) && (sensor[1] == 1) && (sensor[2] == 1))
{
if ((error > 0) && (previous_error > 0))
}
4. 创新设计说明
4.1 创新点
在如今社会多数以四轮轮系为主要运动行进轮系为主的基础上,我们在车身中间增加了两个小轮,用于辅助车身的稳点性,使其能够适应各种复杂地形。并且小车的主要车身部分与前轮车架采用滚动轴承联接,增加了小车的灵活性与机动性,无论是爬坡、转弯等复杂路段,都比其普通四轮小车更加的平稳快速。本小车的前轮半径约为后轮的2倍,能够减少动力流失,加宽轮胎能增大与地面接触面积,从而提供更大抓地力,防止汽车加速时打滑,造成动力流失;其次与地面接触面积增大,会提高车辆在弯道时操控性,例如急刹时,胎面更多的纹沟槽就像吸力强劲吸盘,牢牢地扣住地面,在湿滑路面也从容应对;最后是视觉效果更具运动感,在视觉上,宽轮胎更受欢迎,轮胎扁平比小,橡胶胎显得更薄而轮毂更大。
其次,再在小车灵活运作的基础上增加一个三维运动的洒水机构,位于小车头部,使用舵机实现其上下左右的摆动,满足消毒全面的要求。将消毒水箱置于小车尾部,以平衡头部重量,此外,还添加了红外识别功能,使其能在特定指令下喷洒消毒水。喷洒消毒水不仅可以通过红外识别指令,还能在其整个寻迹过程中一边行走一边消毒;不仅可以用于消毒,还能应用于洒水施肥、灭火等方面。
4.2 创新点在实际中的应用
全地形消毒小车作为疫情肆虐背景下的产物,其主要目的为疫情防控消毒。作为一款非公路车辆,我们的全地形消毒小车具有车身小、动力大、机动性高、灵活度大等优点,能够在城市道路、商户区域、市民住宅、胡同小巷等多种领域里更好的进行全方位消毒以及定点消毒,比如某些角落的消毒工作,有些地方空间狭小,且工作环境很差,不利于工作人员进入,这时我们的消毒小车就能够在保证其消毒效率的前提下,最大程度的节约了人力的投入,大大降低了其消毒的成本。
此外,当应用在灭火消防、洒水施肥等方面时,我们的小车除了可以做一些简单的喷洒动作,还可以利用自身优势通过传感器让其循迹喷洒和定点喷洒,在保证救援人员生命安全的前提下,能出色的完成工作任务,应用在其他相关领域亦是如此。
5. 设计过程、制作过程的记录说明
从接到比赛通知开始时,我们小组五人便开始着手准备,分工明确。我们先通过查阅资料、观看直播视频、请教老师等渠道,选定并设计出我们的小车方案,从轮系的选择到控制系统的选择,再到各种满足比赛要求的传感器选择以及小车整体结构的设计,我们都经过了一次又一次的模拟与对比,最终得出了令我们满意的设计方案。
我们首先用给定的“探索者”零件箱选出我们需要的各种零件,然后采用由下到上的制作方案,先组装出前置轮系,在其基础上搭建出车身的底部结构,选择合适的电机安装,保证其可以带动对应的轮子;然后对选出的传感器进行编程,保证电机的转速大于比赛所需速度,让其在规定比赛时间内完成比赛;接下来就是组装小车的后置轮系,所组装的后置轮系要足够坚固,螺母与螺栓之间要紧密联接,后轮车架与车身主要结构用滚动轴承联接,保证小车在撞到到障碍物时能够正常平稳行驶;之后组装出三维运动洒水装置,然后便是在小车能运行的情况下,将洒水装置固定在车身上;最后是车身其他部位零件的组装以及检验小车各部分能正常运行。
经过上诉操作以后,我们的消毒小车已基本组装完成,接下来就是铺设比赛赛道,模拟比赛过程。通过一次又一次的实践与问题分析,逐步发现存在的问题,对程序进行一次次的调试,然后是运行,虽然屡战屡败,但是在同组成员废寝忘食、坚持不懈的努力下,终于是苦尽甘来。待消毒小车各项指标完成,各方面运行流畅且合理,我们的消毒小车才已经初步制作完成。
6. 自我评价、指导教师评价
6.1 自我评价
在对小车进行设计时,我们小组五人团队协作,在保证学习的同时,利用课余时间大家一起翻阅纸质资料、观看直播视频、上网搜索等,虽然过程中出现过很多的问题,遇到了很多困难,但是在我们大家的努力下,初步设计出我们想要的小车方案;在对小车进行制作时,大家分工明确,各司其职的同时也时刻铭记团队协作,有的负责轮系的安装,有的负责程序的调试,有的负责车身结构的安装,然后大家一起进行小车最后的检验,一起发现存在的问题并解决,最终成功组装出我们想要的小车。
最后,通过本次经历,我们学会了很多,也收获了很多,我相信通过大家的共同努力,我们的小车一定能在本次比赛中不让我们失望,如果本次比赛失利,我们也不会灰心,会虚心发现自身的不足,不断学习,提高自己的能力,争取在下一次的比赛中大放异彩,为我们的精彩人生增砖添瓦。
6.2 指导教师评价
每位同学对待比赛的态度都十分积极,各自都有其自身的优点,在设计方案过程中,他们都与我进行了密切的沟通,也多次提出了各种奇思妙想,并且思考方向都很正确合理,这种敏而好学、不耻下问的态度令我很是欣慰。在组装小车的过程中,几位同学共同努力、分工明确,不断进行各种测试与检验,这个过程中他们遇到了很多困难,但他们从未灰心丧气过,反而是迎难而上,出色的解决了各种难题,我相信他们的努力一定能换来相应的结果。