|
【S128】新概念型排爆救援履带车
作品说明 |
作者:王唱 李喜超 范帆
单位:沈阳航空航天大学
本作品是依据沈阳航空航天大学首届智能机器人创新设计大赛的主题和规则制作的一款救援与排爆等用途的概念型机器人。本系统由信号检测、信号控制部分构成,以设计题目的要求为目的,采用BASRA单片机为控制核心,实现用手机蓝牙操控行进,利用超声波传感器检测道路上的障碍,控制履带排爆救援车的自动停车来避障,并具有生命探测以及火焰检测功能。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。采用的技术主要有:① 通过编程来控制履带车的行进;② 传感器的有效应用。
关键词: BASRA单片机、履带小车、传感器
1. 选题背景和研究意义
探测类机器人是具有感知和运动能力的智能机构,该技术涉及到人工智能、自动控制、信息处理等多门专业技术,跨计算机、自动化、通信、机械、电子等多门学科,体现了信息技术与人工智能技术的发展水平。随着计算机和人工智能技术的发展,探测类型的机器人不仅在工业制造方面,而且在军事排爆、民用、救援等方面都得到了广泛应用。探测类机器人研究已成为一个热点话题。
探测类型机器人在现代人类社会的生产中的作用越来越大,已经渗透到了很多重要的领域。近年来,自然灾害以及煤矿易燃易爆仓库煤矿安全生产问题引起了社会的广泛关注,灾害一旦发生,救护过程中最危险也是最为重要的阶段,就是灾害先从勘察阶段,这时候往往发生事故的区域情况不明,贸然派救护队员下去极易发生二次事故,他们面临的危险主要包括,二次爆炸,塌方等等。在事故发生后,急需一种能够替代救护队员第一时间进入灾区完成现场探测的设备,将现场的气体条件等环境参数检测出来并将数据传回指挥中心,以减少救护队员因到未知地区进行探测而造成的二次事故。此外,随着外太空资源的不断开发,人类对外太空的资源争夺显得越发激烈。对外星球资源的开发利用首先面临的问题就是如何到达外星球如何探测其资源,这就需要拥有先进的航天技术和智能化的探测类型机器人。近些年,战争、恐怖袭击等突发事件,地震、海啸等自然灾害及潜在的核、化、生和爆炸物等严重威胁着人类的生命与财产安全。各种灾难发生次数增多的同时,其严重性、多样性和复杂度也逐渐增加。灾难发生后的72h为黄金抢救时间,但受灾难现场的非结构化环境的影响,救援人员难以快速、高效、安全地进行工作,且救援任务逐渐超出了救援人员的能力范围,因此,救援排爆机器人已经成为一个重要的发展方向。
目前国内对其研究主要在具有单一排爆功能的民用领域展开,单一地对具有一种功能的机器人进行研究,不考虑其通用性和系列化,将会带来大量的重复性研究,耗费不必要的人力和经费,开发过程漫长。相对于严格的军用标准,其军事用途更是受到质疑。未来战场,军用机器人将扮演着越来越重要的角色。排爆机器人,尤其是小型化。轻量化和多功能的排爆机器人,在军事应用领域具有更为广泛和深层的意义。以一种智能化小型移动平台作为载体,分别搭载可更换的机械手和武器平台,实现包括排爆、持枪作战等在内的多种功能,在战场上将具有较强的生存能力,更加适合于未来战争的要求。对其进行理论和实践的研究,对于国防现代化意义深远。排爆救援机器人是目前较具研究价值的机器人产品,在反恐领域可用来执行诸如反恐排爆的任务,战场上排爆机器人则用以执行诸如排除爆炸物、战场信息收集的任务;稍加改造,即可加装单兵武器用于武装巡逻、战斗值勤等高危险任务。目前国内己经着力于排爆机器人的研发,但距离军事用途还有相当的距离。基于军用机器人产品系列化、通用性的需要,本文对基子小型移动平台基础上,兼具排爆和救援功能的机器人进行总体设计的研究。
本项目研究的探测类型机器人主要完成对发生灾害的不明区域的被困人员的搜救以及不明雷区的排爆,这项研究可以使用机器人来替代人类进入危险区域的,从而减少人员伤亡,降低救援成本,因为此类型机器人在社会活动中必然会得到越来越多的应用,减少救援难题,因此探测救援类型机器人的研究具有相当的社会价值。
2. 项目介绍
2.1 项目内容
本项目设计方案是一个排爆救援类型的机器人,采用履带车来应对不同的复杂地形,装有一个绞盘两个机械手臂来实施排爆救援,装载概念雷达来侦测无线电信号;在智能控制方面,使用手机通过蓝牙传输信号指令,进而取代了传统的遥控器操纵,同时装有火焰传感器、近红外传感器、超声波测距传感器、LED指示灯,通过对主板进行编程开发来实现设计构想的智能控制。
2.2 项目创新点
① 实现了安卓手机通过蓝牙模块对小车进行操控
② 当环境发生变化时,会开启应急反应
③ 探测红外信号,搜索人员
2.3 本项目将要解决的问题
① 在复杂的灾区环境进行被困人员的搜寻
② 复杂地形环境的道路开辟
③ 抓取物品如:爆炸物、障碍物
④ 火场的灭火侦测
⑤ 侦测无线电信号以及遥控信号,对IDE遥控炸弹的信号屏蔽
⑥ 探测障碍物距离
⑦ 代替人类进行危险作业
3. 作品设计
3.1 作品整体设计
作品说明
3.2 作品功能模块设计
3.2.1 机构设计说明
底盘的行进设计采用履带,由四个独立的直流电机共同带动履带行进,以提高动力性能,履带有在复杂地貌机动性强,可以形成360度原地转体,翻越障碍物能力强等特点,这正是本次设计采用履带而非轮子的原因,排爆救援机器人所进过的环境都比较恶劣,地形复杂,因此采用履带式。
底盘的上安装概念型雷达,对于现代炸弹中,有一种IDE炸弹是通过遥控来控制引爆的,安装一个小型雷达侦测周围无线电信号,对炸弹的遥控信号可以屏蔽从而阻止炸弹被引爆,与此同时还可以进行雷达改造,增加适应型功能。此概念雷达底座采用一个圆周舵机保证可以360度旋转,雷达面板采用一个标准舵机,以此保证雷达信号无死角。在车的前端装有一个绞盘,绞盘上采用一个圆周舵机,在遇到复杂地形时,绞盘可以为履带车创造行进路线,起到开辟道路的作用,同时前方如遇火焰绞盘也会启动,利用绞盘的旋转带动气流,避免小车承受过高的温度导致失灵。
机械手臂设计由于收到了零件的限制,所以只得做一个只能在平面运动的手臂,每只手臂均采用三个标准舵机,两个舵机用来控制手臂的前后摆动,一个舵机用来控制爪子的开合。灵活的手臂用于抓取物品重物,两个手臂可以各自独立工作,也可以共同抓举一个较大物体。
3.2.2 控制设计说明
控制主板采用探索者BASRA开发板和ARM7单片机,ARM7单片机主要用于概念雷达跟机械手臂的控制,而BASRA开发板对BIGFISH主板进行编程开发,实现本机器人的智能化控制。
机器人的行进并非采用传统的遥控器来控制,而是采用了蓝牙模块连接在主板上,通过合理的编程,事先写好执行指令,再通过安卓智能手机,利用蓝牙串口APP对机器人的行进进行控制。
机器人前方装有火焰传感器,火焰传感器即为一个光强传感器,通过感知光强度来执行设定的反应。当感受到前方有火焰时,火焰传感器将信号传给主板,向机器人发送旋转绞盘的指令,并且在LED上显示“火”字。
机器人的前方还装有一个近红外传感器(如果用于搜救,传感器装在底盘处,图示安装位置为了演示方便),红外传感器用来探测生物信号,探头以探测人体辐射为目的,利用这个原理,将红外传感器装在救援车上用来搜寻被困人员。机器人行进过程中当检测到人体辐射时,LED屏幕会显示“人”字,并且通过编程主板会切断对直流电机供电,让履带车停止前进,以此来表示发现被困人员,提醒救援人员。随后可以发出前进指令继续向附近搜寻。
在机器人最前面安装超声波测距传感器,用来探测障碍物,相当于机器人的“眼睛”感知障碍物跟机器人之间的距离,当障碍物与机器人之间的距离在设定距离时,机器人会自动停止行进。
在机器人尾端装有一个LED灯,此LED灯用来表示机器人的工作状态,当机器人停止前进时,LED灯显示为红色;当机器人行进时,LED灯显示为绿色。以此来监视机器人处于什么状态。
4. 示例程序
#include "LedControl.h" #include <Servo.h> #define ECHOPIN 14 #define TRIGPIN 15 Servo servo4; int left1=9; int left2=10; int right1=5; int right2=6; int buttonState = 0; int redstate=0; const int fire=A3; const int red=A2; String inputString = ""; boolean stringComplete = false; LedControl lc=LedControl(12,11,13,1); void setup() { servo4.attach(4); Serial.begin(9600); inputString.reserve(200); lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0); pinMode(fire, INPUT); pinMode(red, INPUT); pinMode(ECHOPIN, INPUT); pinMode(TRIGPIN, OUTPUT); pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); redd(); } void loop() { if (stringComplete) { cot(); inputString = ""; stringComplete = false; } firerun(); //distence(); redrun(); } void redrun(){ redstate=digitalRead(red); if(redstate==HIGH){ stopd(); Serial.println("PEOPLE"); lc.setRow(0,7,B00010000); lc.setRow(0,1,B00010000); lc.setRow(0,2,B00010000); lc.setRow(0,3,B00011000); lc.setRow(0,4,B00101000); lc.setRow(0,5,B00101100); lc.setRow(0,6,B01000110); lc.setRow(0,7,B10000011); } } void distence(){ digitalWrite(TRIGPIN, LOW); delayMicroseconds(2); digitalWrite(TRIGPIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGPIN, LOW); float distance = pulseIn(ECHOPIN, HIGH); distance= distance/58; if(distance<=10){ stopd(); } //delay(500); } void firerun(){ buttonState = digitalRead(fire); if (buttonState == HIGH) { lc.setRow(0,0,B00010000); lc.setRow(0,1,B01010010); lc.setRow(0,2,B01010010); lc.setRow(0,3,B11011100); lc.setRow(0,4,B00011000); lc.setRow(0,5,B00101100); lc.setRow(0,6,B01100110); lc.setRow(0,7,B11000011); Serial.println("fire"); servo4.write(120); redd(); green(); off(); } else { lc.clearDisplay(0); servo4.write(90); } } void cot(){ Serial.println(inputString); if(inputString=="left\n"){ digitalWrite(left1,LOW); digitalWrite(left1,LOW); digitalWrite(right2,LOW); digitalWrite(right1,HIGH); redd(); delay(500); green(); } else if(inputString=="right\n"){ digitalWrite(right2,LOW); digitalWrite(right1,LOW); digitalWrite(left2,LOW); digitalWrite(left1,HIGH); redd(); delay(500); green(); } else if(inputString=="up\n"){ digitalWrite(left2,LOW); digitalWrite(left1,HIGH); digitalWrite(right2,LOW); digitalWrite(right1,HIGH); green(); }else if(inputString=="down\n"){ digitalWrite(left1,LOW); digitalWrite(left2,HIGH); digitalWrite(right1,LOW); digitalWrite(right2,HIGH); redd(); }else if(inputString=="off\n"){ digitalWrite(left1,LOW); digitalWrite(left2,LOW); digitalWrite(right1,LOW); digitalWrite(right2,LOW); redd(); } } void green(){ digitalWrite(A4,HIGH); digitalWrite(A5,LOW); } void redd(){ digitalWrite(A5,HIGH); digitalWrite(A4,LOW); } void off(){ digitalWrite(A4,LOW); digitalWrite(A4,LOW); } void stopd(){ digitalWrite(left1,LOW); digitalWrite(left2,LOW); digitalWrite(right1,LOW); digitalWrite(right2,LOW); redd(); } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); inputString += inChar; if (inChar == '\n') { stringComplete = true; } } } |
5. 项目总结
在本项目设计过程中,大家一起共同商讨机器人需要实现什么样的功能,怎样设计程序来对其进行控制,在不断的讨论中完善本次作品,团队成员互帮互助,共同为实现方案努力,最终以较高的效率完成了一个新概念型排爆救援履带车机器人,也将学到的知识在实践操作好好的运用了一番,既增强了动手能力又加强了对理论知识的理解。在实际的组装过程中,不断去验证机械方面的理论,怎样可以按照预定方案实现机构的运作,各关节之间的关系以及如何组装才可以使得效率更高,并且在装配过程中不断的查阅资料,以提高装配的质量。在编程过程中,从开始构思所要实现的功能到最后程序写出来并实测合格。一开始的对整体还是对控制编程模糊的,随着一点一滴学习和了解最后对整个程序的编写让人涌现着无与伦比的成就感。在实践中通过自己查找资料,改正程序中的bug和对程序的优化让我对arduino的编程有了显著的提高,通过不断的调试、改进、反反复复,最终使程序按照预想那样运行,这也是这次机器人制作过程中最大的收获。总之在这次制作过程中大家都受益匪浅,为今后的学习工作提供了很大的帮助。
由于时间的紧迫,方案虽然已经实现,但还有很多可以改进的地方,由于受到制作材料的限制,无法满足预定构想,比如,机械手臂可以在底部加上圆周舵机来实现手臂旋转,增大其自由度,使手臂更加灵活自如,更加适应需要。除此之外还可以进行深度改进,比如在履带车下面装几个由电机控制可以提高前底盘高度的机构,更高地应对复杂地形;也可以在车上根据新的定制需求增加更多的机械机构来实现更多的功能。在传感器使用方面,还可以加入更多的传感器,将机器人变得更加智能化,比如可以加入摄像头跟WIFI模块,将实时画面传回控制室;也可以加入温度传感器配合火焰传感器更加准确的感知火焰等等。在编程方面也可以再更加完善,使程序更加简洁。
* 本项目未获得作者开源授权,无法提供资料下载。