【S119】全地形越野小车
作品说明 |
本项目主要设计了一种可用于翻越障碍的小车,机械结构上通过轮子和履带的结合使小车具有翻越障碍的能力;硬件电路上使用Arduino核心板,电池组以及稳压模块组成了单片机系统;软件上结合黑标寻迹和颜色识别实现了小车自主路径选择的功能。经过调试后的小车具有寻迹稳定性高、识别准确、响应迅速的特点。
关键词:黑标寻迹,Arduino,灰度传感器
1. 引言
如今,智能避障机械能够在多个领域替代人类,应用领域十分广泛,在自动驾驶领域、军工领域、家用机器人等领域都有着广泛的应用[1]。越来越多场所,例如地形复杂的路面的货物搬运,救援现场中机器人逐渐地取代了人工的参与,对能够自主规划路径并有越障能力机器人或小车的需求也日益增加。本项目将针对路径的寻迹和障碍物的翻越进行重点研究,设计了一种符合上述要求的小车,为越障机器人的设计提供了一种易于实现的方案。
2. 系统整体设计
本系统使用探索者的零件进行机械系统的搭建,使用直流电机作为驱动机构,选择Bigfish核心板作为系统的控制器,使用黑标传感器进行路径的识别、触碰传感器进行运行模式选择、触须传感器进行障碍检测,机械结构上通过轮子搭配履带,实现越障的功能。
3. 机械结构设计
3.1 机械系统设计
① 在设计机械结构是考虑到通过障碍的复杂性,履带有着较好的越障能力[2],并且能平均电机转速,调节速度时比较方便。
② 通过障碍时要求电机输出较大的力矩,而正常运行时输出力矩较小,所以加入触须传感器,检测障碍,当触须触碰到障碍时,让电机输出大力矩。
③ 由于在选择通过路径及其他要求,需要对小车行进模式进行切换,加入了触碰开关以当按键使用。进行模式的切换与选择。
④ 寻迹时采用6个黑标采集黑线信息,黑标成直线排列。
⑤ Led屏用以显示传感器的状态和运行模式的切换选择。
3.2 机械系统整体效果图
作者:姜先晟 赵旭磊 刘正海 吴玉明
单位:辽宁科技大学
指导老师:李玲玲
作品说明
俯视图
后视图
侧视图
4. 硬件设计
4.1 主控器的选择
主控制器选用Arduino 核心控制板,Arduino是一款开放源代码的硬件项目平台,该平台是一块USB接口Simple I/O接口板(包括12听到数字GPIO,4通道PWM输出,6-8通道10bitADC输入通道),并且使用类似Java,C语言的IDE(集成开发环境)。
4.2 传感器的选择
传感器分为黑标传感器,触须传感器和触碰传感器。黑标传感器在识别到黑色时,会向主控制器发送“1”,否则发送“0”,通过多个黑标的配合可以实现小车对于黑线路径的寻迹。触须传感器和触碰传感器都是通过引脚电平的检测来确定传感器状态。
4.3 电机的选择
使用大功率直流电机作为本系统的驱动机构,直流电机在满转的时可以满足翻越障碍的要求,当使用PWM进行电机调速的时候,其响应快速的特点也有利于提高黑标寻迹的快速性。
4.4 电池组的选择
电池组使用探索者的标准电池组为整个系统供电,其放电电流大的特点可以避免电机在调速过程中产生的反向电流对主控制器的供电电路造成影响。
4.5 Led屏
用以显示传感器的状态和运行模式的切换选择。
5. 软件设计
5.1 程序流程图
void xunji() { if(!digitalRead(14)){Led_diplay(16);Go_Obstacle();delay(700);} else Led_diplay(17);//触须 switch(Read_direction()) { case 0x01:delay(5);if(Read_direction()==0x01) Turn_left(Turn_time1,Turn_pwm);repeat_l++;repeat_r=0;break; case 0x02:delay(5);if(Read_direction()==0x02) Turn_left(Turn_time1,Turn_pwm);repeat_l++;repeat_r=0;break; case 0x04:delay(5);if(Read_direction()==0x04) Turn_left(Turn_time1,Turn_pwm);repeat_l++;repeat_r=0;break; case 0x06:delay(5);if(Read_direction()==0x06) Turn_left(Turn_time1,Turn_pwm);repeat_l++;repeat_r=0;break; case 0x0f:delay(4);if(Read_direction()==0x0f) Turn_left_90();Led_diplay(14);break; case 0x07:delay(4);if(Read_direction()==0x07) Turn_left_90();Led_diplay(14);break; case 0x20:delay(5);if(Read_direction()==0x20) Turn_right(Turn_time1,Turn_pwm);repeat_r++;repeat_l=0;break; case 0x10:delay(5);if(Read_direction()==0x10) Turn_right(Turn_time1,Turn_pwm);repeat_r++;repeat_l=0;break; case 0x08:delay(5);if(Read_direction()==0x08) Turn_right(Turn_time1,Turn_pwm);repeat_r++;repeat_l=0;break; case 0x18:delay(5);if(Read_direction()==0x18) Turn_right(Turn_time1,Turn_pwm);repeat_r++;repeat_l=0;break; case 0x38:delay(4);if(Read_direction()==0x38) Turn_right_90();Led_diplay(14);break; case 0x3c:delay(4);if(Read_direction()==0x3c) Turn_right_90();Led_diplay(14);break; default:Go_line();break; } |
char Read_direction() { direction=0; for(char i=1;i<=6;i++) { switch(i) { case 1:if(!digitalRead(3)){direction+=1;Led_diplay(0);} else Led_diplay(1);break; case 2:if(!digitalRead(7)){direction+=2;Led_diplay(2);} else Led_diplay(3);break; case 3:if(!digitalRead(8)){direction+=4;Led_diplay(4);} else Led_diplay(5);break; case 4:if(!digitalRead(2)){direction+=8;Led_diplay(6);} else Led_diplay(7);break; case 5:if(!digitalRead(17)){direction+=16;Led_diplay(8);} else Led_diplay(9);break; case 6:if(!digitalRead(16)){direction+=32;Led_diplay(10);} else Led_diplay(11);break; } } return direction; } |
byte a[6]={B11000000,B01100000,B10000000,B01000000,B00100000, B00010000}; byte b[2]={B00000000,B11111111}; void Led_diplay(char c) { switch(c) { case 0:lc.setRow(0,0,a[0]);break;//设置一行8个LED的开关状态 case 1:lc.setRow(0,0,b[0]);break; case 2:lc.setRow(0,1,a[1]);break; case 3:lc.setRow(0,1,b[0]);break; case 4:lc.setRow(0,2,a[0]);break; case 5:lc.setRow(0,2,b[0]);break; case 6:lc.setRow(0,3,a[1]);break; case 7:lc.setRow(0,3,b[0]);break; case 8:lc.setRow(0,4,a[0]);break; case 9:lc.setRow(0,4,b[0]);break; case 10:lc.setRow(0,5,a[1]);break; case 11:lc.setRow(0,5,b[0]);break; case 12:lc.setRow(0,6,a[2]);break;//模式选择 case 13:lc.setRow(0,6,a[3]);break; case 14:lc.setRow(0,6,a[4]);break; case 15:lc.setRow(0,6,a[5]);break;//模式选择 case 16:lc.setRow(0,7,b[0]);break; case 17:lc.setRow(0,7,b[1]);break; default:break; } } |
③ Led屏显程序
6. 系统开发与调试
① 为避免触发区、90度转角及十字路口的影响,先让小车关闭寻迹功能直行通过,越过影响。
② 小车遇到障碍时,触须传感器检测到障碍,关闭寻迹直接攀爬越过障碍。越障碍时通过调节大概的延时时间即可,但在通过障碍的过程中,需保证小车能够保持直行。
③ Led屏用以显示传感器的状态和运行模式的切换选择。通过控制LED屏不同的亮灯形式,即可表征每一个传感器的工作状态。
④ 寻迹时,针对黑标检测到的整体值,分别对不同的状态做出左转右转等不同的寻迹动作。
7. 市场调研及市场前景说明
7.1 工程车概念
工程车是一个建筑工程的主干力量,由于它们的出现才使建筑工程的进度倍增,大大减少了人力。观工程车作业,不由得使人震撼机器与科技的威力,它们用于工程的运载、挖掘、抢修、甚至作战等。
7.2 智能工程车优点
① 工作效率高
小车可以实现24小时不间断工作,大大提高了工作效率。而且能够实现全地形上下以及来回运输的工作。
② 可靠性高
由于传感器可以对小车的行驶路径以及速度进行操控,定位停车精准,相比传统方式对于安全、速度、行驶路径的未知,小车的中央管理系统,可以全程对小车进行监控,小车能够随意改变行进路线,碰到障碍物能够自动识别与停止,大大提高了其可靠性。
③ 安全性高
与人工操作相比,小车将安全性大大提高了,从而避免因人员造成的工伤事故的发生。
7.3 前景说明
智能工程车辆系统的进步和发展需要计算机技术、信息技术、电子技术、通信技术、控制技术、传感技术、机械制造等众多技术领域发展的推动,其发展又能够推动所涉及学科和技术的进步与发展,这是一个能够将汽车产业与信息产业紧密结合起来的新型领域。
智能工程车辆的研发为世界各国的高新技术产业提供了又一广阔的发展空间。欧洲、日本、美国等发达国家虽走在了前面,但目前与我国的实际差距还不是很大,因此把握住这一机,有计划、有步骤地制定相应的发展策略,提供各种优惠政策来积极指引和引导其健康发展,从而在提高我国工业水平、增强工业质量的同时,缩小该领域与发达国家之间的差距。
8. 结论
本项目着重研究了小车的自主寻迹和越障问题,设计了一种可行性较高的寻迹算法,实现了对路径准确的寻迹,进过多次试验调试,小车具有较好的稳定性,对障碍的翻越也能够顺利地完成,总体效果良好。越障障控制方法大体相同,差异在于越障信息采集方式、越障信息规避和具体的越障控制策略。
参考文献
[1]孟庆春,齐勇,张淑军,杜春侠,殷波,高云.智能机器人及其发展[J].中国海洋大学学报(自然科学版),2004(05):831-838.
[2]杜习波,王振.履带式煤矿机器人越障能力分析与越障过程仿真[J].河南理工大学学报(自然科学版)。2016,,35(5):677-684.
* 本项目未获得作者开源授权,无法提供资料下载。
|