|
【S101】巡检机器人
作品说明 |
作者:张伟 陈金辉 罗照友 胡晓林
单位:北方民族大学
指导老师:张春涛
1. 市场前景
近年来,人工智能技术在各领域的创新不断突破,现代智能机器人的应用面越来越宽,由95%的工业应用扩展到了更多领域的非工业应用。机器人应用无限制,只要能想到的,就可以去创造实现;机器人的种类会越来越多,机器人智能化得到加强,机器人会更加聪明。另一方面,人们的强烈意识希望用某种机器代替自己工作,催生了各种功能机器人的诞生。
随着经济的发展人工智能逐渐出现在人们的视线,智慧化园区、智能化社区的建设为人们带了一系列的便利。人工智能将成为其新的竞争热点,巡检机器人更是其中的重中之重。传统巡检安防工作走向以人工智能技术为依托的“智能巡检”及“立体巡检”,用巡检机器人来代替其安保人员工作。
2. 产品介绍
本产品是一款可以应用于半自动巡检的机器人,它不同于传统的一般巡检机器人,本产品是利用陀螺仪等传感器制作成手套,并使用arduino开源项目,进行开发空间定位算法的编写,进行远程控制机械手(目前只能完成2-5米距离控制)。能够自行完成家庭巡逻、工业重地巡逻、简单物件维修功能。
作品说明
巡检机器人
现如今,随着互联的发展和各方面技术的完善,迎来了人工智能时代。 现阶段,人们对于机器人并不会感到陌生,以前我们都是通过一些动画或电影作品去认识机器人,但是随着现代机器人技术的高速发展,艺术作品中的机器人也许离我们并不遥远。现代机器人技术虽然还没有达到艺术作品中那样智能,但是已经从实验室走进了我们的生活当中。比如,当前一些机器人能够实现简单的巡逻功能,我们的项目基于巡逻的前提,通过采用探索者机器人套件,结合avr,开源arduino进行开发。通过采取以多种传感器为核心(有加速度、陀螺仪、触碰、白标、黑标、超声波、近红外、触碰、颜色、摇杆等),以伺服电机作为机械臂驱动装置, 通过加速度传感器、陀螺仪、触碰传感器结合无线端传输方式(wifi、nrf、蓝牙)等功能搭建出一个可以实现人机交互检修,视频数据无线传输,半自动巡检等功能,代替人工维修,巡逻,起到了人力优化作用。我们在向机器人发出特定指令时,机器人就可以按照设定好的相关程序和我们实现较为简单的交流,同时还可以根据特定的指令进行特定的工作。实现实时的数据传输能使我们更准确的了解所监控区域的情况。
3. 市场需求
① 诸如实验室、工厂等区域存在设备老化,且狭小的空间急需要维修维护。
② 工厂、实验室等摄像头监控容易出现死角的位置,机器人可以做到无死角动态巡逻。
③ 像核泄漏此类高危场所的物品采集和探查(核泄漏接触到人体会导致截肢等严重后果)。
④ 重复的安保工作(目前的机体安装有摄像头可以实现实时监控,后期我们将采用加入人脸识别来实现监察与报警)。
⑤ 供电线路老化、出现超负荷等问题不能及时的被工作人员发现(机器人可以做到使人及时发现问题,杜绝事故发生)。
4. 功能
传感器:构成机器人智能识别系统,实现人机交互。
高清摄像头:实时记录、实时追踪。
有效解决了巡逻、维修人员不足或人工效率低下问题。
以多传感器为核心,以伺服电机为驱动,通过wifi、nrf、蓝牙信号连接,可以完成人机交互、视频数据传输的功能。
5. 可行性
目前市面上的机器人种类还没有普遍,能找到的巡检机器人大约只有十种,并且功能单一,我们这次的创意是设计一款极具特色的机器人,设计机器人的巡逻功能和现有机器人最大差别是在传感器种类和数量上,都是占了优势。现在市面上可见的机器人是以巡逻功能为重点,对检修功能很少或者几乎没有,设计并搭载了一套能够能够检修的机器手,通过控制手套进行人机交互,能够完成很简单的一些搬运及握拧的功能。简单的视频传输功能体现在机器人能运用在家庭、工厂等地方,利用巡逻功能通过摄像头可以观察家、工厂附近的不明人物(简单人脸识别)。使用机械手能够清障、辅助运动。
6. 示例程序
① 程序1
void setup() { // put your setup code here, to run once: Serial.begin(9600); } int q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m, Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M;
int sy,sk,sc,so;
void loop() { sy=analogRead(A0); sk=analogRead(A2); sc=analogRead(A3); so=analogRead(A4); { if(sy>800)//90 duo 1 { Serial.println('X'); } else //75 { Serial.println('Z'); } } delay(100);
{ if(sk<300)//180 duo 2 { Serial.println('A'); } else if(sk>300&&sk<325)//165 { Serial.println('B'); } else if(sk>325&&sk<350)//150 { Serial.println('C'); }
else if(sk>350&&sk<375)//135 { Serial.println('D'); } else if(sk>375&&sk<400)//120 { Serial.println('E'); } else if(sk>400&&sk<425)//105 { Serial.println('F'); } else if(sk>425&&sk<450)//90 { Serial.println('G'); } else if(sk>450&&sk<475)//75 { Serial.println('H'); } else if(sk>475&&sk<500)//60 { Serial.println('I'); } else if(sk>500&&sk<525)//45 { Serial.println('J'); } else if(sk>525&&sk<550)//30 { Serial.println('K'); } else if(sk>550&&sk<575)//15 { Serial.println('L'); } else if(sk>575&&sk<600)//0 { Serial.println('M'); } } delay(100);
{ if(sc<300)//180 duo 3 { Serial.println('a'); } else if(sc>300&&sc<325)//165 { Serial.println('b'); } else if(sc>325&&sc<350)//150 { Serial.println('c'); } else if(sc>350&&sc<375)//135 { Serial.println('d'); } else if(sc>375&&sc<400)//120 { Serial.println('e'); } else if(sc>400&&sc<425)//105 { Serial.println('f'); } else if(sc>425&&sc<450)//90 { Serial.println('g'); } else if(sc>450&&sc<475)//75 { Serial.println('h'); } else if(sc>475&&sc<500)//60 { Serial.println('i'); } else if(sc>500&&sc<525)//45 { Serial.println('j'); } else if(sc>525&&sc<550)//30 { Serial.println('k'); } else if(sc>550&&sc<575)//15 { Serial.println('l'); } else if(sc>575&&sc<600)//0 { Serial.println('m'); } } delay(100);
{ if(so==1023) { Serial.println('x'); } else { Serial.println('z'); } }delay(100); } |
#include<Servo.h> Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; void setup() { // put your setup code here, to run once: Serial.begin(9600); myservo1.attach(3); myservo2.attach(4); myservo3.attach(7); myservo4.attach(8);
} int cc; void loop() { if (Serial.available()>1) { cc = Serial.read(); switch(cc){ { case 'X':myservo1.write(90); //duo 1 Serial.print(180);break; case 'Z':myservo1.write(0); Serial.print(165);break;
} delay(100);
{ case 'A':myservo2.write(180); //duo2 Serial.print(180 );break; case 'B':myservo2.write(165); Serial.print(165 );break; case 'C':myservo2.write(150); Serial.print(150 );break; case 'D':myservo2.write(135); Serial.print(135 );break; case 'E':myservo2.write(120); Serial.print(120 );break; case 'F':myservo2.write(105); Serial.print(105 );break; case 'G':myservo2.write(90); Serial.print(90 );break; case 'H':myservo2.write(75); Serial.print(75 );break; case'I':myservo2.write(60); Serial.print(60 );break; case'J':myservo2.write(45); Serial.print(45 );break; case'K':myservo2.write(30); Serial.print(30 );break; case'L':myservo2.write(15); Serial.print(15 );break; case'M':myservo2.write(0); Serial.print(0 ); break; } delay(50);
{ case 'a':myservo3.write(180); //duo3 Serial.print(180 );break; case 'b':myservo3.write(165); Serial.print(165 );break; case 'c':myservo3.write(150); Serial.print(150 );break; case 'd':myservo3.write(135); Serial.print(135 );break; case 'e':myservo3.write(120); Serial.print(120 );break; case 'f':myservo3.write(105); Serial.print(105 );break; case 'g':myservo3.write(90); Serial.print(90 );break; case 'h':myservo3.write(75); Serial.print(75 );break; case'i':myservo3.write(60); Serial.print(60 );break; case'j':myservo3.write(45); Serial.print(45 );break; case'k':myservo3.write(30); Serial.print(30 );break; case'l':myservo3.write(15); Serial.print(15 );break; case'm':myservo3.write(0); Serial.print(0 ); break; } delay(50);
{ case'x':myservo4.write(180); Serial.print(1);break; case'z':myservo4.write(0); Serial.print(00);break; } delay(50); } } }
Default;break; } } } |
const int analogXPin = A0; //fa song const int analogYPin = A1; void setup() { pinMode(A0,INPUT); pinMode(A1,INPUT); Serial.begin(9600); } int Y=0; int X=0; void loop() { int x = analogRead(A0); int y = analogRead(A1); if(Y!=y) { Serial.println('1'); } if(X!=x) { Serial.println('2'); } Y=y; X=x; if(x>1000) { Serial.println('3'); } if(x<100) { Serial.println('4'); } if(y<100) { Serial.println('5'); } if(y>1000) { Serial.println('6'); } }
void setup() {//jie shou Serial.begin(9600); } char a; void loop() { if(Serial.available()>0) { a =Serial.read(); if(a=='1') { digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); } if(a=='2') { digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); } if(a=='3') { digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(5,LOW); digitalWrite(6,HIGH); delay(50); } if(a=='4') { digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(5,HIGH); digitalWrite(6,LOW); delay(50); } if(a=='5') { digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(5,LOW); digitalWrite(6,HIGH); delay(50); } if(a=='6') { digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(5,HIGH); digitalWrite(6,LOW); delay(50); }
} } |
② 程序2
③ 程序3
* 本项目未获得作者开源授权,无法提供资料下载。