|
【S136】智能循迹越障小车
作品说明 |
作者:漆金贤 刘文可 张瑞峰
单位:武汉科技大学
指导老师:陶波 李公法
1. 作品简介
本项目作品名字为智能循迹越障小车,如下图所示为机器人的外形图。本作品以探索者平台提供的一套Brasa主控板与Bigfish扩展板作为控制器,同时有多种传感器、伺服电机等集合而成。
作品说明
作品完全展开状态
作品完全收拢状态
2. 市场调研及前景
2.1 市场调研
世界各国在智能微型车领域进行了很多研究,己经应用于各个领域,在探测和军事领域使用特别多。近年来,我国也开展了很多研究工作,以满足不同用途的需要。随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。现智能小车发展很快,从智能玩具到其它各行业都有实质成果。其基本可实现循迹、避障、检测贴片、寻光入库、避崖等基本功能,这几界的电子设计大赛智能小车又在向声控系统发展。比较出名的飞思卡尔智能小车更是走在前列。自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。
机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。智能小车可以作为机器人的典型代表,避障控制系统是基于自动导引小车系统,智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线,使用传感器感知路线和障碍并作判断和相应的执行动作。
2.2 应用前景
① 军事侦察与环境探测
现代战争对军事侦察提出了更高的要求,世界各国普遍重视对军事侦察的建设,采取各种有效措施预防敌方的突然袭击,并广泛应用先进科学技术,不断研制多用途的侦察器材和探测设备,在车上装备摄像机、安全激光测距仪、夜视装置和卫星全球定位仪等设备,通过光缆操纵,完成侦察和监视敌情、情报收集、目标搜索和自主巡逻等任务,进一步扩大侦察的范围,提高侦察的时效性和准确性。
② 探测危险与排除险情
在战场上或工程中,常常会遇到各种各样的意外。这时智能化探测小车就会发挥很好的作用。战场上,可以使用智能车辆扫除路边炸弹、寻找和销毁地雷。民用方面,可以探测化学泄漏物质,可以进行地铁灭火,以及在强烈地震发生后到废墟中寻找被埋人员等。
③ 安全检测受损评估
在工程建设领域,可对高速公路自动巡迹,进行道路质量检测和破坏分析检测;对水库堤坝、海岸护岸堤、江河大坝进行质量和安全性检测。在制造领域,可用于工业管道中机械损伤,裂纹等缺陷的探寻,对输油和输气管线的泄漏和破损点的查找和定位等。
④ 智能家居
在家庭中可以用智能小车远程控制家中的家用电器、控制室温等。
3. 作品详细介绍
3.1 系统整体设计
3.1.1 设计要求
本作品主要是为中国工程机器人大赛探索者全地形赛而设计的。该比赛要求参赛队伍设计的智能小车具有自动循迹功能,自主越障功能。比赛场地上铺有黑线,通过传感器对黑线的检测信号的反馈控制车身运动速度和方向,除直线循迹外还存在典型的十字交点路线和丁字交点路线,保证循迹路线的完整结构需要考虑并处理信号的识别情况。需要越过的障碍包含栅格、减速带、小型阶梯、石块地形、方形隧道、U型隧道、防滑带、柔软草地、大型阶梯、窄桥,最后还需要攀登高台。
① 循迹要求
在本次的中国工程机器人大赛探索者全地形赛中,要求参赛队伍设计的智能小车具有自动循迹功能,比赛场地上铺有黑线,通过灰度传感器对黑线的检测信号的反馈控制车身运动速度和方向,除直线循迹外还存在典型的十字交点路线和丁字交点路线,保证循迹路线的完整结构需要考虑并处理信号的识别情况。除循迹要求外,越障要求包含栅格、减速带、小型阶梯、石块地形、方形隧道、U型隧道、防滑带、柔软草地、大型阶梯、窄桥,最后还需要攀登高台。
② 越障要求
越障功能需要越过栅格、减速带、小型阶梯、石块地形、方形隧道、U型隧道、防滑带、柔软草地、大型阶梯、窄桥,最后还需要攀登高台。其中石块地形、减速带、柔软草地和栅格对小车的轮子选择有一定的要求,小型阶梯、大型阶梯、窄桥和攀登高台需要小车有一定的登高越障能力。方形隧道和U型隧道则限制了小车车身长度和高度,若太高或者太长则无法进入隧道完成越障程序。
3.1.2 智能小车系统总体设计简介
根据灰度传感器方案设计,小车共包括五大模块:灰度传感器模块、照明模块、循迹模块、越障模块、电源模块。各个模块的作用如下所示:
① 灰度传感器模块:在该模块中对采集到的信息进行处理,以此信息来判断当前智能小车所处赛道的变化趋势、小车车身在赛道上的倾斜情况信息。将处理得到的信息传给控制板以采取相应的控制决策。
② 照明模块:为了防止外部光照对灰度传感器识别的影响以及保证小车能在亚克力板中更加稳定过的寻迹,采用了外加LED灯设计的想法,LED装在四个灰度传感器下方,根据场地需求可通过改变接入电压的大小使其改变亮度以适应不同环境需求。
③ 循迹模块:本作品分别对三个、四个、五个传感器循迹进行了测试,根据测试结果,我们最终确定小车采用四个灰度传感器作为循迹模块的传感检测系统。相对于三个传感器循迹,四个传感器的调整范围更大,而且对于小车越过障碍后的车身与黑线的位置偏差要求更低;又因为一个Bigfish板只有四个传感器接口,所以用五个传感器会给主控板更大的负担,容易出现烧板的现象。因此四个传感器不仅充分利用了Bigfish板的传感器接口,还给与小车循迹时更大的偏差范围,提高了小车运行时的容错率。
④ 越障模块:我们通过检测障碍前的十字路口来执行越障程序。我们检测每个障碍与其对应的十字路口的距离,来调整小车循迹时间,当小车运行时检测到相应的十字路口,一定时间后前端舵机放下车轮进行越障,实践证明这种越障方式不仅节约时间,还使小车运行时是连续的,车身不用与障碍接触,减少了因为接触导致车身不正而越障失败的失误率。
⑤ 电源模块:为了使小车正常工作,采用的是一块标配7.2V电池。
3.2 机械结构设计
考虑到循迹、越障、拼装误差和后期调试的综合要求,小车结构必需简单可靠,同时不能过于笨重和复杂。结合比赛要求和探索者模块化设计的理念,我们结构创新设计的主要有两大模块,分别为:主体车身和驱动模块、越障模块。
3.2.1 设计思路
在前期准备工作中,本项目首先考虑到采用履带的方式驱动小车行驶,这样可以确保小车在栅格和草地等不同环境中的行动能力。在组装车身的过程中,我们的首先的想法是做一个带倾角的履带式小车进行越障和循迹。但经过后期的调试后,发现车身长度太长会导致隧道无法通过,车身太短会导致重心偏后导致越障的时候会出现翻车现象,同时由于轮子的尺寸限制使的灰度传感器的加装位置十分难确定,过低会导致越障时灰度传感器被磨损,过高会影响灰度传感器的识别正确率。同时由于车身仅有四个轮子,所以导致车身容易偏差,越障程序执行完毕后需要一段很复杂的修正程序后才能再进行循迹程序。考虑到方案的容错性和复杂性,后期我们抛弃了这种方案,转而使用可用舵机调整支架变形的小车结构。如下图所示:
整体机械结构
3.2.2 主体车身和驱动结构
主体车身驱动采用两个私服驱动,用舵机支架固定在双足支杆上,并将双足支杆通过40mm机械手固定在7*11孔平板上。采用对称的方式进行设计,可以有效保证车身的稳定性。并且因为设计的简单化,使得主体车身在方案上有着很强适应性和优良的加装性能。能避免后来再对车身结构做出比较大的改变。如下图所示:
车身的驱动以及主体车身结构
3.2.3 越障模块
小车越障模块主要是通过传感器检测十字路口控制,由舵机调整放下或拉起的前伸轮构成。同时前伸轮也包含着两个直流电机驱动模块,确保小车在越障的时候有足够的扭矩和马力。直流电机通过直流电机支架组成对称结构固定在3*5双折面板上,在通过机械手指和双足连杆连接到双折面板上,两层固定方式确保结构更加稳固。同时将大舵机及其支架固定在舵机双折弯上。再将双折面板和舵机双折弯进行连接固定。如下图所示,前臂的作用是在进入障碍是提供一个合适的着力点,让车身稳定进入障碍。后臂的作用是在上高台时起支撑作用,平衡车身的着力分布。
a 越障时车身形态
b 前臂的展开局部图
智能小车的越障力臂结构图
3.3 硬件设计
3.3.1 循迹设计
理论上循迹传感器模块设计传感器数量越多,循迹越准确。但过多的检测识别信号会导致车身经常调整,使小车行驶的平稳性大打折扣。考虑到黑线具有一定宽度(3.8cm±0.2)且除直线循迹外,循迹传感器模块还需要识别丁字交点和十字交点的情况,我们采用了间隔2cm左右的直线排列的四个灰度传感器装在车身前端下部,检测车身方向并反馈合适的调节信号,不会因为过频繁的反馈而导致车身频繁调整。同时结合路径规划可以有效保证识别精度和识别准确度。确保小车循迹功能的稳定性和迅捷性。
3.3.2 越障设计
理论上合适的动力和倾角即可满足本次比赛越障需求,但实际调试发现仅凭履带式驱动轮和车身前端倾角会导致循迹模块没有合适的地方放置,会干扰履带的行进或者在越障时循迹模块容易卡在障碍物地形中。所以我们在后期对小车进行改进,采用两对可展开驱动轮的支撑轮系和舵机组合的越障模块来确保小车车身在越障时有合适的倾角,同时也不会影响到循迹模块的循迹效果。
3.3.3 控制设计
考虑到轮系和越障时的支撑要求,小车共采用两个360°伺服电机和两个180°伺服电机。其中车身采用两个360舵机驱动完成行进要求,前端的展开式驱动轮越障结构采用两个直流电机和大舵机调整角度和提供驱动力。
3.4 软件设计
考虑到小车的结构以及任务要求,结合比赛要求和探索者模块化设计的理念,本作品软件创新设计的主要有三大模块,分别为:循迹设计、越障设计、综合设计。
3.4.1 循迹设计
① 直线和一般转弯交点设计
小车采用四个灰度传感器设计循迹功能,直线和一般转弯交点设计采用前端4个灰度传感器进行反馈控制。合适的传感器间隔和详细的真值表可确保循迹和普通转弯功能的稳定性,如表1所示为循迹程序逻辑表。
表1 循迹逻辑表
传感器序号(从左到右) | 1 | 2 | 3 | 4 | 调整方向 |
传感器反馈信号 | 0 | 0 | 0 | 0 | 直行 |
0 | 0 | 0 | 1 | 大左转 | |
0 | 0 | 1 | 0 | 直行 | |
0 | 0 | 1 | 1 | 小左转 | |
0 | 1 | 0 | 0 | 直行 | |
0 | 1 | 1 | 1 | 大左转 | |
1 | 0 | 0 | 0 | 大右转 | |
1 | 0 | 0 | 1 | 直行 | |
1 | 0 | 1 | 1 | 小左转 | |
1 | 1 | 0 | 0 | 小右转 | |
1 | 1 | 0 | 1 | 小右转 | |
1 | 1 | 1 | 0 | 大右转 | |
1 | 1 | 1 | 1 | 直行 | |
其它情况 | 停止 |
② 十字交点和丁字交点循迹
结合比赛场地要求,场地中共有四个十字交点和两个丁字交点,要想保持循迹和越障的连续性,则必须要对十字交点循迹和丁字交点循迹做出处理。首先我们想到的是用颜色识别传感器对十字交点处的色块进行识别,这种方案可以避免需要对丁字交点的识别处理,但实际使用过程中,我们发现颜色识别传感器对色别识别速度太慢,并且除此之外,考虑到草地障碍会对颜色识别器产生干扰,颜色识别模块需要前置判别语句或打断程序。可能还是需要用灰度传感器对十字交点进行识别,所以程序的易书写性和准确性,我们最后仅采用灰度传感器模块和路径规划对特殊交点进行处理。
十字交点循迹在实际调试过程中,因为我们采用的是处于直线安装的4个灰度传感器,所以若采用简单的循迹方案,则肯定会出现误差大,稳定性不强的情况。经过多次调试之后,我们采用的方案为:当4个灰度传感器都检测到黑线时,系统会给与小车直行的命令。丁字交点的识别其实跟十字交点是一样的,都是四个传感器同时检测到黑线。但是丁字交点是连接两个线路的节点,所以丁字交点的检测决定了小车能否直接跑完全程。所以我们采用计数的方法来识别丁字交点。我们采取规划路线的方法,从石块出发,这样到达丁字交点时,会经过四个十字交点。所以每当传感器检测到十字交点时,就记一次数,前四个十字交点,小车是直行的命令,当检测到第五个十字交点时,也就丁字路口给与小车右转的命令。这样通过计数和规划路径的方法来识别丁字交点。
十字交点和丁字交点的处理使小车在循迹上有着更高的准确性和响应性,能在短时间内快速准确的对小车行驶方向进行反馈控制。
3.4.2 越障设计
① 地形障碍
本次比赛地形障碍共有5种分别为:石块地形、草地、减速带、栅格和防滑带。其中地形障碍又可分为两类:石块地形、草地、减速带地形和栅格、防滑带障碍。地形障碍对小车进入障碍的方向角度和小车行驶的稳定性提出很高的要求,因为在障碍物上小车无法进行循迹,所以小车若稳定性不足或小车车身进入角度倾斜不正确,会导致小车驶出障碍时车身方向与正确线路偏差过大,这时循迹传感器很有可能位于比赛场地的白色区域内,小车无法循迹,并且无法设置合适的程序补救。所以地形障碍对小车进入障碍的角度和小车行驶的稳定性提出了很高的要求。同时除此特点外,栅格和防滑带对小车的越障能力有一定的要求,它们都有一定的高度,需要小车具有一定的攀爬能力,所以需要分开考虑。
在实际越障过程中,我们采用的方案是放下位于车前端的机械臂,并且同时驱动两个360舵机和两个直流电机,加长车身长度来提高行驶的稳定性。同时机械臂可以控制放下角度和时间,来进行小车攀登动作,完成进入到障碍物中的过程,并且由路径规划程序反馈所越障碍情形,控制小车是保持放下机械臂直至越出障碍还是在障碍物上收回机械臂,进行越障操作。
② 阶梯障碍
比赛场地内有小型阶梯和大型阶梯两个阶梯障碍,当小车由迹前进,调整程序进入越障阶段后,小车的驱动电机开始运动并配合有规律的放下——抬起机械臂的动作来调整小车Y轴行驶角度,来完成攀登动作最终实现越障功能。并在越障功能中加入调速程序,使小车在越障过程中不至于出现跌落或攀登不上障碍的情况。同时还需要调整越障时间,避免冲出比赛正确行驶路线的情况。
③ 隧道障碍
比赛要求中包含有U型隧道和方形隧道,在实际越障过程中,调整车身长度和宽度,通过速度控制和循迹功能,即可实现隧道越障功能。
④ 三级阶梯和高台障碍
为更加流场的完成任务,本小车创新设计了三级阶梯与高台连过的策略。在结合实际情况和场地因素考虑,小车在攀登上三级阶梯后会原地旋转180度,然后完成上高台的动作,上完高台车身旋转360度,下高台回到三级阶梯,最后完成越过三级阶梯任务。为了避免原地旋转车身出现倾斜情况,我们特地在旋转后后退,通过小车前的导轮与高台边接触,通过高台边来实现车身的摆正,下到三级阶梯同样会有一个车身校正过程。
3.4.3 创新综合设计
(1)线路选择设计
此次比赛明确要求规定,小车车身从障碍物正向驶入并正向离开障碍物即可得分。并且在限时的5分钟之内,若出现不理想情况,参赛队员可以随时向场内裁判示意暂停比赛,重新从出发区开始比赛。为应对比赛中出现的突发状况以及出现状况后更快的完成比赛任务,我们准备了五条比赛线路,分别为:
① 石块地形——大型阶梯——U型隧道——防滑带——小型阶梯
② 小型阶梯——防滑带——U型隧道——大型阶梯——石块地形
③ 减速带——草地——方形隧道——窄桥——高台——窄桥——栅格
④ 栅格——窄桥——高台——窄桥——方形隧道——草地——减速带
⑤ 石块地形——大型阶梯——高台——大型阶梯——U型隧道——防滑带——小型阶梯——减速带——草地——方形隧道——窄桥——栅格
以5号线路为主线路,一次性完成所有障碍。
(2)线路切换
在比赛时重新烧录程序会浪费大量时间,所以我们采用灰度传感器识别黑纸来实现程序调换,并用LED点阵来显示。一般程序调换时,大家会选择触碰传感器来实现程序调换,但这样会需要一个传感器接口,这样只能用三个传感器来循迹,如果增加Bigfish板增加传感器接口,那样会增加主控板负担,容易出现程序混乱的情况。所以我们直接利用灰度传感器来实现程序调换就可以实现四个传感器也只需要一块Bigfish板。
(3)转弯控制
正常情况下,小车的转弯命令是控制两边车轮的速度差来实现左转,右转或是180度和360度转弯。而且绝大部分人会选择两边轮子都在转动只是转速不同。实践证明这种转弯方式,小车会陷入来回摇摆的状态,车身不稳定。我们采用的转弯方式是一边轮转动一边不转,这样再转弯时 ,小车不会出现左右摇摆的情况,整个车身非常稳定,而且转弯后可以迅速直行而不需要大范围循迹调整到直行状态
(4)利用前导向轮摆正车身位置
我们采用的是一条线路跑完全程,所以我们在上高台后还需要再从高台上回到大型阶梯上。当小车上高台后会原地转弯,但是在实际调试中,小车转弯后的车身位置偏差很大,所以我们让小车通过前导轮与高台边接触,通过前导轮让车身摆正,这样无论小车在高台上旋转后的位置偏差有多大都可以通过这个方法摆正。从而进行后面的路线。
3.5 程序控制源代码
3.5.1 线路切换程序
T1=millis(); //读取系统时间 while(d==0) { T2=millis(); if((T2-T1)<4000) { if (!digitalRead(16)) { delay( 300 ); //连续读取传感器数值300ms,若全部为1,则计数一次 if (!digitalRead(16)) { ++c; //c为线路值 c=c%6; }} |
void sanjijietigaotai5() { 遇到三级阶梯后退 delay(200); servo_pin_7.write( 170 ); //放下前臂 delay( 800 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); //打开前导轮 servo_pin_3.write( 0 ); servo_pin_4.write( 130 ); //慢速前进 delay( 2300 ); servo_pin_3.write( 90 ); servo_pin_4.write( 90 ); servo_pin_7.write( 0 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , LOW ); //关闭前导轮 delay( 700 ); servo_pin_3.write( 180 ); servo_pin_4.write( 180 ); delay( 700 ); //旋转180° servo_pin_3.write( 90 ); servo_pin_4.write( 90 ); servo_pin_7.write( 130 ); delay( 450 ); //放下前臂到130° digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); //打开前导轮 servo_pin_3.write( 69 ); servo_pin_4.write( 180 ); delay( 550 ); //前进 servo_pin_7.write( 180 ); delay( 300 ); //放下前臂到180° servo_pin_11.write( 150 ); //放下后臂 delay( 450 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , LOW ); servo_pin_11.write( 0 ); 收起后臂,避免挂住高台边缘 servo_pin_7.write( 0 ); delay( 500 ); servo_pin_3.write( 90 ); servo_pin_4.write( 90 ); delay( 500 ); //小车登上高台
servo_pin_3.write( 0 ); servo_pin_4.write( 0 ); delay( 1450 ); //旋转360°,为下高台准备 servo_pin_3.write( 90 ); servo_pin_4.write( 90 ); servo_pin_7.write( 180 ); delay(500); servo_pin_3.write( 70 ); servo_pin_4.write( 180 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); delay(500); //放下前臂,打开导轮,前进到高台边缘停止 digitalWrite( 9 , LOW ); digitalWrite( 10 , LOW ); servo_pin_3.write( 100 ); servo_pin_4.write( 80 ); delay( 1000 ); //关闭导轮,后退,校正车身
servo_pin_3.write( 65 ); servo_pin_4.write( 180 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); delay(1170); //下到三级阶梯 servo_pin_3.write( 90 ); servo_pin_4.write( 90 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , LOW ); servo_pin_7.write( 0 ); servo_pin_11.write( 0 ); delay(500); //回归到收拢状态
servo_pin_3.write( 180 ); servo_pin_4.write( 180 ); delay( 720 ); //旋转180° servo_pin_3.write( 90 ); servo_pin_4.write( 90 ); servo_pin_7.write( 180 ); delay(500);
servo_pin_3.write( 70 ); servo_pin_4.write( 180 ); delay(500); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); servo_pin_3.write( 105 ); servo_pin_4.write( 75 ); delay(1100); //前进到阶梯边缘后同样放下前臂后退,注意,此时需要打开导轮。校正车身
servo_pin_3.write( 0 ); servo_pin_4.write( 130 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH );
delay(1800); servo_pin_3.write( 90 ); servo_pin_4.write( 90 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , LOW ); servo_pin_7.write( 0 ); servo_pin_11.write( 0 ); delay(500); //前进下三级阶梯,此时前臂是放下的,避免车身前翻 } |
void xunji1() { kaideng() //打开LED辅助照明 int value=0; for(int i=0;i<4;i++) value |= ((digitalRead(pin[i])) << (3-i)); if(((value ==5) ||(value == 6)||(value == 10))) { //当传感器都没有触发时默认为上一次的值 value = value_his; } switch (value) { case 0: servo_pin_3.write(69); //左边电机,0值是前进 servo_pin_4.write(180); //右边电机,180值是前进 delay(150); servo_pin_3.write(90); servo_pin_4.write(90); delay(50); servo_pin_3.write(0); servo_pin_4.write(0); delay(750); T=T+1; break; case 1: servo_pin_3.write(130); servo_pin_4.write(130); break; case 2: servo_pin_3.write(72); servo_pin_4.write(180); break; case 3: servo_pin_3.write(105); servo_pin_4.write(105); break; case 4: servo_pin_3.write(72); servo_pin_4.write(180); break; case 5: servo_pin_3.write(90); servo_pin_4.write(90); break; case 6: servo_pin_3.write(90); servo_pin_4.write(90); break; case 7: servo_pin_3.write(130); servo_pin_4.write(130); break; case 8: servo_pin_3.write(50); servo_pin_4.write(50); break; case 9: servo_pin_3.write(72); servo_pin_4.write(180); break; case 10: servo_pin_3.write(90); servo_pin_4.write(90); break; case 11: servo_pin_3.write(90); servo_pin_4.write(130); break; case 12: servo_pin_3.write(75); servo_pin_4.write(75); break; case 13: servo_pin_3.write(50); servo_pin_4.write(90); break; case 14: servo_pin_3.write(50); servo_pin_4.write(50); break; case 15: servo_pin_3.write(72); servo_pin_4.write(180); break; } value_his = value; } |
3.5.2 循迹程序
case的取值可以参考表1的各个情况取值。在不同情况下,转弯的速度是不一样的,例如在进行直线循迹时,左右应采取小差速前进。
3.5.3 登高台及过三级阶梯程序
本程序的创新之处在于,连着完成高难度的两个任务。前后两臂协作配合,使得上高台更加流场,成功率大大提高。加入车身校正,很大程度上增强了小车的适应能力,同时使得两个高难度任务变得简单易行。
4. 项目总结
在整个设计制作过程中所遇到的困难和问题都很多,但大家都饱含热情不抛弃不放弃,遇到问题就解决问题,在困难中探索,在困境中越障,同时不断尝试用新的方法来优化程序,使小车以更少的时间一次性走完,想必这也是此次比赛乃至中国机器人行业从业者的精神内涵。值得一提的是,虽然此次属于第二次比赛,但我们也展示出了可贵的创新性和实用性。比如合理运用比赛规则,采用路径规划的处理,得到多条路径进行比赛,增强小车的容错性和灵活性。比如采用LED的方式显示路径条数,达到可视化的目的,方便调试程序得出结果。
然而还需要改进的地方就是工作量太大,探索者平台为参赛选手提供了优秀的模块化平台,但结合实际参赛要求,在比赛中如何顺利过关成为我们的一大难题。虽然可以通过大量的实验检测使得数据贴合的更完美,但毕竟属于开环控制,所以我们离真正智能化还有很大的一段距离要走,这也正是我们未来的目标和奋斗的方向。同时为提供设备器材以及技术支持的“探索者”表示感谢,正是前行者们的不断努力才能使对机器人有着兴趣的广大爱好者们有着参赛机会和了解行业前沿知识的机会。
* 本项目未获得作者开源授权,无法提供资料下载。