效果:
摘要:本系统目的是能够实现轮式智能机器人的自行巡线功能,具有该功能的机器人可以应用于智能仓储和景区观光车等,对于提高相应工作中的行车智能化和行车效率具有很重要的现实意义。
本系统采用了PID巡线算法技术和机器人快车软件设计工具,设计并实现了轮式智能机器人的巡线功能。该轮式机器人的核心部件是中鸣E2RCU控制器、光电模块、红外避障模块以及火焰检测模块。主要是利用光电传感器模块来实现巡线功能,提前设置好一定宽度的黑色路线,控制器根据光电传感器采集到的数值控制两侧的马达,从而实现该功能,此外还有红外避障模块,利用红外传感器检测前方是否有障碍物,以便提前更改行进路线。
本系统研究中设计的轮式智能机器人具备明显的功能特色,能够实现高精度转弯和巡线,可以适应复杂的路线;该轮式智能机器人用到了PID算法去实现高精度巡线,本系统设计的机器人具有很高的使用价值。
目录
第1章 绪论
1.1 研究的目的和意义
机器人从诞生之初到现在已经有很长一段时间了,经过这么长时间的发展,机器人技术也慢慢的完善和成熟了。一些简单的实用的机器人也开始慢慢的步入寻常百姓家了,像扫地机器人、智能儿童机器人等这一类已经非常普遍了。工业上对机器人的应用涉及面就更广了,像机械臂既可以通过人工遥控来工作,也可以根据程序员事先编写好的程序进行工作,效率高,误差也小。随着人工智能和大数据时代的来临,现有的机器人技术已经不能满足于现状了,工程师们开始向人工智能机器人领域进军,希望实现让机器人根据自己遇到的不同的情况做出相应的行为,就像科幻电影中的那样,机器人跟正常的人类并无任何差异。
人类是一个长于创造和发明的种族,一切的新技术和新发现都是在通过人们不停地创新和革新过程中渐渐的完善起来。我的这次课题设计使用的是中鸣的E2RCU控制器使轮式智能机器人按照路面上设置好的黑色轨迹线进行移动,另外,增加的红外测距模块可以使轮式智能机器人通过红外线测距探测到前方障碍物到轮式智能机器人的距离并且能够规划新的路线绕开障碍物,另外增加的火焰检测传感器能检测到火焰并发出蜂鸣声报警。经过调研发现在人们的日常生活的各个方面、还有日常的生产劳动和工程建设等很多地方,仅仅是自动寻迹这一功能就有很大的应用空间,所以智能轮式机器人有很大的应用市场,对轮式智能机器人的研究和开发是有着非常重要的现实意义的。智能轮式机器人除了可以用于在工业生产中取代人力劳动,以实现全自动化之外,还可以应用于仓储行业,实现机器人取送货,达到无人仓储的目标,而且室内智能除尘机器人和无人驾驶的景区观光车等都会用到寻迹这一功能[1]。本课题研究的相关理论对同类的研究有参考价值,设计的机器人功能比较完善并具有很高的使用价值。
1.2 国内外研究现状
机器人的出现已经有很多年了,随着时代的飞速发展和科学技术的不断进步,国内外对机器人的研究也在不断深入,尤其是今年来人工智能的出现,更是进一步催发了机器人的研究热潮。
目前,工业机器人在世界上各个国家所应用的机器人中仍然是占比最大的,随着对机器人研究的逐步深入,工业机器人也就慢慢的划分出了不同的种类,而且其它行业中的机器人也随着研究的深入,应用方向更加多元了。要说到机器人研究,既不得不说一说日本和美国,这两个国家在机器人领域的研究和开发方面从机器人诞生开始到现在世界机器人领域一直都是出于领先地位的。对于机器人的研究,技术人员进行了全方位的探索,对于工业机器人还有其他行业的应用机器人都进行了深入的研究并取得了一定的成果。比如说日本,他们对于机器人的研发方向主要放在了特种和服务机器人上,以及对于一些相关中间件的研制都有所涉猎,并且在这些方面处于相对领先的水平;而美国对于机器人研究比较深入的则是则对于军用机器人和太空机器人。除此之外,美国的一家叫特斯拉的公司研发出的无人驾驶智能化清洁能源车已经正式投入生产[2]。
再来看看我国对于机器人的研究,从机器人一出现的时候,我国对于机器人研究的重视就没有上升到足够的高度,机器人的研究水平一直都是比较低的,对于机器人的应用也是局限于很小部分行业,应用范围较小。近年来,我国的机器人研究高飞猛进,机器人研究的初始阶段我们已经跨过去了,研究水平也慢慢的追上来了并向发达国家看齐。我国这些年对于机器人的研究极具代表性的有应用于工业生产水下探测的机器人,在应用于空间操作和核领域的机器人上我国也加大了研究力度。我国对于机器人的研究在工业上的应用也已经能够实现机器人自行进行工程设计和施工的能力了[3]。
1.3 本研究的主要内容
此次课题所研究的主要内容是:
- 绪论:分析、理解了课题研究的目的,明确了研究工作的意义;通过调研国内外同类课题的研究现状,了解了同类研究的优点和不足,从而明确了本课题研究的侧重点。
- 系统分析:对本次课题的可行性和市场需求进行了详细的分析。
- 系统硬件模块的设计:包括光电探测、红外测距、火焰检测、控制器和驱动模块五大模块,还有智能轮式机器人的整体结构图。
- 系统软件的设计与实现:对整个系统的巡线流程,各个功能实现所用的子程序进行了设计与实现。
在结束语部分,总结了本课题研究的主要工作:包括系统的分析、系统硬件模块的设计、系统软件的设计与实现、系统调试和系统的误差分析,并对这些工作进行了总结。此外,对设计成果的优点和不足也进行了一定的分析,并通过学习和调研找到了有效的应对措施。
第2章 系统分析
2.1 可行性分析
可行性分析主要包括对技术、经济和操作三个方面的可行性进行分析。
2.1.1 技术可行性
此次程序开发采用的是机器人快车开发软件,程序编辑好之后需要下载到E2RCU控制器上。这些工具在安全、性能、可用性上都有一定的保障,而且我能够熟练的运用,所以本课题研究在技术方面是可行的。
2.1.2 经济可行性
程序开发用的是机器人快车软件是开源软件。用到的中鸣套装价格也是在经济可承受的范围内,所以本课题在经济上也是可行的。
2.1.3 操作可行性
这个轮式机器人的操作非常简单,编辑好的程序只需要下载到中鸣控制器上,选择好程序之后点击运行按钮,控制器就会按照程序设计好的路线行驶,执行接下来的一系列动作,本课题设计的智能轮式机器人具有寻线功能、避障功能和火焰检测报警功能,便于操作。所以本课题在操作上也是可行的。
2.2 需求分析
通过去网上查找资料和到实地进行市场调研发现,智能巡线机器人具有很大的应用市场,有很大的需求空间,例如智能仓储和景区观光旅游等。
在智能仓储方面,不同的货物可以设定好固定的摆放位置,然后我们就可以根据货物的摆放位置给轮式智能机器人设计好行走路线,当需要取走或放置货物的时候就可以通过轮式智能机器人来实现了,这样的话就不需要太多的人员了,无人仓储就可以实现了,无人仓储的实现可以节省大量的人力物力,对于合理利用资源具有很重要的现实意义。
景区观光旅游对于轮式机器人智能巡线也是有很大的需求的,景区的大小是一定的,拥有很多条不同的观光路线,每条观光路线上都可以设置一个具有巡线功能的轮式观光车,让它按照事先设置好的观光路线载着游客去游览景区,这样的话游客坐在车上就能看遍园区的每一个景点,尤其是对于那些有选择困难症的人有更大吸引力,这样的话还能吸引更多的游客来景区旅游,带动本地区的旅游经济发展。轮式智能小车的开发与实现并不局限于这两个应用市场,对于各行各业的发展都具有非常重要的现实意义。
第3章 系统硬件的设计
根据系统分析的结果,对轮式机器人进行软硬件方面的设计。其中硬件部分共划分为以下五大模块:火焰检测模块、光电探测模块、红外检测模块、马达驱动模块、主控制器模块。
3.1 光电探测模块
光电探测模块由三个光电传感器组成,分为左中右三路。光电传感器如图1所示。
在直线行驶左右路传感器分别在黑线的两侧,中路传感器大部分时间都在线上,巡线功能的实现主要根据左右路光电传感器进行直线行驶时对路面黑线的的检测,如果左侧的光电传感器检测到的数值大于右侧光电传感器检测到的数值,也就是右侧的光电传感器检测到黑色,那么就根据左右光电传感器检测到的差值去调整马达的功率,用左侧的光电传感器检测到数值去减去右侧光电传感器检测到的数值即差值,这个差值乘以比例系数,再加上马达的基础功率及时调整后的左右马达功率值,如果差值为负数则表明左侧传感器检测到黑色,那么左侧马达就会大于右侧马达的功率,智能轮式机器人就会向左侧调整,如果差值为正则表明右侧传感器检测到黑色,智能轮式机器人就会向右侧调整。光电传感器检测到白色时数值如图2所示。
马达的基础功率值是在程序中设置好的,如果智能轮式机器人正常行驶,不左右摇摆的行驶,那么智能轮式机器人的左右马达就会以相同的基础功率向前行驶,直到智能论是机器人向一边歪着行驶也就是左右光电传感器出现差值的时候,左右马达功率才会进行调整,进而改变智能轮式机器人的行驶轨迹。在遇到路口的时候是先进行停止然后再进行转弯,停止是根据光电传感器检测到的数值进行停止,如果中间和右侧的传感器同时检测到黑色也就是遇到右转弯路口,马达功率调整为0,然后智能轮式机器人进行右转弯程序;如果中间的和左边的光电传感器检测到黑色即表明遇到左转弯路口,马达功率调整为0,然后进行左转弯程序。三个光电传感器全都检测到白色,也就是在路线图的终点,马大功率设置为0,智能轮式机器人停止运行。P1、P2、P3端口的三个光电传感器检测到黑色时的数值如图3所示。
智能轮式机器人在路口停止的时候后面加的有一个走距离程序,目的是为了让光电传感器脱离黑色部分,方便执行接下来的程序。
3.2 红外线测距模块
红外线测距模块主要由一个红外线测距传感器来执行测距功能,该功能实现的原理是红外测距传感器发出红外线,然后在接收一个返回值,据此确定前方的障碍物到达智能轮式机器人的距离,在程序中设置一个数值与红外测距传感器采集的数值进行比较,如果采集的数值大于设置的数值,那么智能轮式机器人就不执行接下来的避障程序,如果采集的数值小于设置的数值,那么就执行接下来的避障程序。根据程序中设置的规避路线进行对障碍物的规避,从而达到躲避障碍物的功能。程序中设置的这个数值并不是固定的,可以根据自己的需要进行调整,如果要在较远的距离就进行躲避,那么就要将该数值的大小设定的大一点,这样的话智能轮式机器人在较远的地方就能看来是执行规避程序,反之,如果要在较近的距离进行躲避,那么就要把数值设置的小一些,这样智能轮式机器人可以在较近的距离开始进行规避。如果智能轮式机器人到障碍物的距离达不到设置的数值时,避障程序就不会执行。红外测距模块如图4所示。
图4 红外测距模块
3.3 火焰检测模块
火焰检测模块主要功能是用来检测是否发生火灾,如果没有发生火灾,就不存在火焰,火焰检测传感器的数值就为0;如果发生火灾,火焰检测传感器就会检测到火焰,就会向控制器传回一个数值,在编写的程序中设置一个数值,如果火焰检测传感器传回的数值大于设置的数值,控制器就会发出蜂鸣声,进行报警。在程序中设置的这个数值是可以根据实际情况进行设置的。如果要求检测到较偏小的火焰就要发出蜂鸣声进行报警,那么就要把数值设置的小一点,这样的话火焰检测传感器的灵敏度就比较高,只要检测火焰就会发出蜂鸣声进行报警,如果要求检测到火焰较大时进行报警,那么就应该把该数值设置的大一点。火焰检测模块如图5所示。
图5 火焰检测模块
3.4 主控制器模块
主控制器模块是整个轮式机器人的核心,它接收来自光电传感器的数据,然后对这些数据进行分析传递给对应的变量,根据编写好的程序进行实现巡线功能,同时也接收红外测距传感器发来的数值,对这个数值进行分析,然后根据这个数值决定是否执行接下来的避障程序,另外,控制器还要接收来自火焰检测传感器的数据,根据这个数据判断火灾是否发生,从而决定是否执行报警功能。控制器就是根据这些数据来调整左右马达的功率进而调整方向保证寻线功能的正常执行;接收来自红外测距传感器的采集到的数据,判断是否前方障碍物的存在与否,决定是否执行避障程序。控制器通过向驱动马达传递信号,从而控制整个机器人的运行。主控制器模块如图6所示。
图6 主控制器模块
3.5 驱动模块
马达驱动模块主要由两个驱动马达组成,如果智能轮式机器人正常运行,没有出现偏差,那么两个驱动马达的功率就不会发生变化,当智能轮式机器人的形式路线出现偏差的时候,控制器就会执行编写好的程序,根据左右光电传感器的差值来调整左右马达的功率。如果机器人偏左,那么就增大左侧马达的功率,减小右侧马达的功率,从而是智能轮式机器人向右侧偏移;如果智能轮式机器人偏右,那么久减小左侧马达功率,增大右侧马达的功率,从而使智能轮式机器人向右侧进行偏移。两个马达主要是通过控制器来执行智能轮式机器人的行驶动作,两个驱动马达的正转反转以及行使速度的大小都是由控制器来进行控制,马达的功率为负表示马达反转,如果马达的功率为正即表示马达是正转的。驱动模块是整个系统中非常重要的一部分,整个系统的实现是离不开这个驱动模块的。驱动模块如图7所示。
图7 驱动模块
马达倒转时的功率值为负,如图8所示。
马达正转时的功率为正,如图9所示。
3.6 智能轮式机器人整体结构
在智能轮式机器人的左右两侧是安装的是驱动模块,中间最上面的是E2RCU控制器,控制器的位置没有特别的要求,在智能轮式机器人的最前方是是三个光电传感器,光电传感器的安装一定要在智能轮式机器人的前方的最中间位置,因为只有在中线上智能轮式机器人才能准确的进行巡线,红外测距传感器安装在智能轮式机器人的右前方位置,用于检测前方的障碍物,火焰检测传感器安装在智能轮式机器人的最后方,这个火焰检测传感器位置的安装没有什么特殊要求。
第4章 系统软件的设计
软件设计主要包括主程序整个巡线流程的设计,各个功能子程序的设计,子程序主要包括:走距离子程序、巡线子程序、左转子程序、右转子程序、红外避障子程序以及火焰检测报警程序。
4.1 主程序设计及其寻迹路线图
智能轮式机器人的程序设计主要是根据寻迹路线顺序进行设计的,先直线行驶,然后检测到右转路口,智能轮式机器人停止,然后右转,直线行驶,检测到左转路口,停止,左转,直线行驶等,整个寻迹路线图的设计如图10所示。
智能轮式机器人所有功能编程的实现是通过C语言来实现的。通过主程序来对系统环境进行初始化,在主程序运行之后,轮式机器人的三个光电传感器会自行启动开始采集数据,智能轮式机器人的巡线用的是比例寻线算法,根据左右光电传感器的差值与比例系数判断是否需要将机器人的寻线是否有所偏差,从而判断是否需要进行调整。根据在什么路口需要转向设定机器人的直行寻线停止程序,若需要在T形或十字形路口转弯,则是需要三个光电传感器都在黑线上,直行寻线程序结束;若是需要在直角路口转弯,则是只需左侧或是右侧传感器在黑线上即可。另外我设置的还有一个避障功能,当红外测距传感器检测到障碍物时会根据预先设置好的调整路线绕过障碍物自行避开。此外如果火焰检测传感器检测到火焰,控制器会发出蜂鸣声。
4.2 轮式机器人寻迹算法
轮式机器人是在事先打印好的有黑线的白色图纸上前进,通过三个光电探测器检测图纸上的黑色路线信息,把检测到的信号反馈到E2RCU控制器中,控制器进行分析处理之后驱动马达运转,调整两个马达的功率,使轮式机器人正确的巡线行驶,从而实现智能轮式机器人的自动寻迹功能。主要采用PID算法保证轮式机器人进行稳定的寻迹行驶。
PID巡线控制包括比例控制、积分控制和微分控制这三个要素[4]。
4.2.1 比例巡线
对于巡线机器人来说,我们通过减掉黑色和白色时光电传感器的读值的平均值来实现,将误差乘以一个叫kp的比例系数,就得到了轮式机器人的转向修正值。这个转向修正值是应用到左右马达功率的变化上的。这个叫kp的比例系数首先是通过一定的计算得出大概值,然后通过反复的试验进行调整,最终得到准确的Kp值[5]。
4.2.2 PI巡线
控制器对马达进行控制时,很多时候都不见得能够立即获得马达的“迅速”响应,因为马达改变功率也是需要时间来实现的。就是说轮式机器人的的动作要比控制器发出的的命令滞后,这对于控制器的精准控制会产生一定的影响[6]。
另外积分控制部分的一个作用是修正比例巡线没来得及修正的误差值,把这些误差值加起来。再乘以一个系数Ki,把这个变化应用到马达功率上。还有一个很重要的作用就是它可以消除小的误差。因为积分是对历次误差的累加,几个连续的小误差可以使积分大到足以发生作用,这样就可以通过累加消除小的误差。
积分还存在一个需要解决的问题,就是积分趋向于无穷的问题,通过下面的方法可以在一定程度上消除误差:将积分置零,每次光电传感器P1和P3误差为0,或者误差的符号发生了改变的时候,就将变量积分变量integral设置为0;当计算一个新的integral时,对累积的integral乘以一个小于1的因数来抑制积分:integral = (2/3)*integral + error这样,每次循环会把积分值降低1/3[7]。
数据线的接法如下:
(1)左侧驱动马达接入控制器的M1输出端口,右侧的驱动马达接入M2输出端口。
(2)左侧光电传感器接入控制器的P1端输入端口,中间的光电传感器接入控制器的P2端口,右侧的光电传感器接入控制器的P4输入端口[8]。
(3)火焰检测传感器接到P5端口上。左右马达和火焰检测传感器的接法如图11所示。
(4)三路光电传感器从左到右依次接到P1、P2、P3端口上。
(5)红外测距传感器接到P4端口上。光电传感器和红外测距传感器的接法如
图12所示。
4.3 程序的主要算法
(1)让轮式智能机器人不巡线向前走一段距离,主要是为了让智能轮式机器人向前稍微走一小段距离,让传感器脱离黑线,检测到白色,使智能轮式机器人能够执行接下来的程序。
long vl = 0;//定义长整型变量vl,用于存储左马达所走的距离
long vr = 0;//定义长整型变量vr,用于存储右马达所走的距离
vl和vr主要是为了记录左右马达所走的距离值,在程序里有给定的距离值,让这两个距离值与设定的距离值进行比较,如果vl或vr中存储的距离值大于或者等于程序里设定的距离值,那么就给左右马达一个零功率,使它的速度降为零,让智能轮式机器人停止前进。
int spl = 0;//定义整型变量spl,用于存储左马达的功率
int spr = 0;//定义整型变量spr,用于存储右马达的功率
spl和spr用于记录左右马达功率的改变值,因为左右马达可能存在误差,所以在走距离这一段程序里设置的有左右马达走的距离不一样时会对左右马达的功率进行调整,进而让左右马达走的距离是相等的。代码详见附录一。
(2)轮式智能机器人巡线行驶功能的实现,主要是运用PID巡线算法来实现智能轮式机器人的巡线功能,里边涉及了对路口的判断和寻迹路线的调整等详细功能。
PP1 = GetLightSensor(_P1_);//获取P1光电传感器的值,并赋值给PP1
PP2 = GetLightSensor(_P2_);//获取P2光电传感器的值,并赋值给PP2
PP3 = GetLightSensor(_P3_);//获取P3光电传感器的值,并赋值给PP3
PP1、PP2和PP3是用来记录获取的光电传感器的数值,PP1、PP2和PP3中存储的数值是时刻在变化当中的,因为在巡线过程中,光电传感器需要不停的采集路面信息,从而保证智能轮式机器人能沿着黑线正常行驶,PP2的值一般是不会发生太大变化的,在行驶的过程中P2光电传感器是大部分时间都在黑线上的,只有在转弯的时候才会发生较大的变化。
if ( PP1<=1000&&PP2<=1000 )//设置遇到左转路口时的马达停止条件
{
SetMotor(_M1_, 0);//M1端口的马达功率设置为0
SetMotor(_M2_, 0);//M2端口的马达功率设置为0
break;//跳出循环
}
以上面的这一小段程序为例,在遇到左侧路口的时候,左侧和中间的光电传感器一定是在黑线上的,光电传感器的就会比较小。光电传感器在检测到白色和黑色时的大致数值已经在前边介绍过了,这里就不会再赘述了。遇到左转路口时如图13所示。
同理,在遇到右转路口的时候,应当是右侧和中间的传感器检测到黑色。在上述遇到两种情况的时候就跳出循环,让马达停止运转。遇到右转路口时如图14所示。代码详见附录二。
(3)轮式智能机器人在路口左转弯功能的实现,左转弯功能的实现主要是左右马达功率的改变,使左侧马达功率为负即反转,右侧马达为正即右转,当中间的光电传感器检测到黑色,智能轮式机器人停止转弯,转弯结束。
SetMotor(_M1_, -40);//M1端口的马达功率设置为-40,即反方向转动,功率为40
SetMotor(_M2_, 40);//M2端口的马达功率设置为40,即正方向转动,功率为40
在前面我们已经介绍过,功率值为负的时候表示马达是反转的,功率值为正的时候马达是正转的,在这里左侧马达的功率设置为负数,右侧马达的功率设置为正数就是为了实现智能轮式机器人左转的功能。代码详见附录三。
(4)轮式智能机器人在路口右转弯功能的实现,右转弯功能的实现与左转弯大致相同,也是左右马达功率的改变,不同的是使右侧马达功率为负即反转,左侧马达功率值为正即正转,当中间的光电传感器检测到黑色,智能轮式机器人停止转弯,转弯结束。代码详见附录四。
(5)轮式智能机器人进行避障操作功能的实现。
PP4 = GetLightSensor(_P4_); //用于获取红外测距传感器测得距离值
if ( PP4>=yuzhi )//设置判断条件,判断是否执行障碍物规避程序
PP4存储的距离值是智能轮式机器人距离障碍物的距离,在程序里设置一个判断条件,把这个PP4存储的值跟程序中设置的比较值进行比较进而决定该如何执行接下来的动作,PP4大于设定的比较值,说明达到设置的规避障碍物的条件,那么接下来就执行规避障碍物的动作。代码详见附录五。
(6)轮式智能机器人进行火焰报警操作功能的实现,与红外避障功能相似,设置判断条件对检测到的数值与设置的数值进行判断,不同的是,后续执行操作的不同,火焰检测报警功能执行的是蜂鸣器发出蜂鸣声。代码详见附录六。
(7)轮式智能机器人的主程序代码包括智能轮式机器人的所有功能的实现,包括按轨迹巡线、红外避障功能、火焰检测报警功能都在主程序中实现了。主程序里面主要是对各个功能模块的调用,代码详见附录七。主程序和各功能模块图如图15所示。
第5章 系统测试
系统调试主要是对系统各个功能模块的测试,调试环境如下:
(1)路线图长是2米,宽是0.8米,整张图的背景是白色,在上面设计有黑色的线条作为巡线轨迹。
(2)智能轮式机器人尺寸:20*20*8(CM)。
5.1 光电探测模块的调试
寻迹路线图用的是在较大的白纸上设计黑色的线条然后打印出来,这样黑白两色的对比度会比较好,光电传感器分辨情况也非常好。在调试过程中需要调节三个光电探测器的灵敏度以适应实验环境,其调试方法为:先把轮式机器人拿起置于跑道黑线上方,而后左右晃动,分别探测光电传感器在黑色和白色位置时的数据并观察这些数据,如果光电传感器差值较大的话,就需要减去或加上一定的数值用以平衡光电传感器的误差,让它们能够正常工作[8]。
通过调试之后光电探测模块可以很好的运行,根据光电传感器在巡迹路线图上对黑白两色数据的采集值对程序中的各个判断条件的阈值进行了调整。做完这些调试工作之后,智能轮式小车已经能够很好的进行巡线了。光电探测模块调试图如图16所示。
5.2 红外测距模块的调试
图17 红外测距模块调试图
调试红外测距模块时,第一步就是要将红外测距传感器与控制器相连,第二步是将红外测距避障程序下载到控制器上,最后接通电源。按下启动键后,程序开始运行,然后在红外测距模块前端放置一块挡板,慢慢移动该模块,使其接近障碍物,等挡板到达我们设置的红外传感器的探测距离时,控制器就会根据我们设定好的规避路线进行规避。红外测距模块只会向控制器传回一个距离数值,控制器就会拿这个值跟程序设定好的值进行比较,当红外测距模块检测到的数值大于设定的距离值时,轮式机器人就会按照设定好的黑色路线条进行行驶,从而规避障碍物[9]。
通过实际测试障碍物到智能轮式机器人的距离值,并根据该数值设置了红外避障程序的阈值。据此红外测距模块能够正常的运行,轮式机器人的红外避障模块得意正常运行。如图17所示为红外避障模块调试图。
5.3 误差分析及解决方案
针对系统测试中发现的误差分析了误差产生的原因,并针对原因,制定了消除误差的解决方案。
5.3.1 影响光电传感器探测路线的主要环境因素
此次毕业设计中自动寻线部分所使用的光电传感器,所以受环境因素的影响较大。主要会受到以下几方面的影响:
(1)因为光电传感器是通过光的发射和接收来实现信号的发射和接收的,所以光线就会在轮式机器人寻迹过程中的对光信号的发射和接受产生一定的影响,如果光电传感器的位置距离地面过高的话,传感器采集的面积就会放大,如果过低的话就会很难采集到光线,就会向控制器传递黑色信号,造成较大的误差所以传感器的高度一定要适中[10]。
(2)轮式机器人的轮胎受到的摩擦力的大小也会对机器人的寻迹产生较大的影响,如果路面和轮胎过脏的话,摩擦力会减小,容易出现打滑现象[11]。
(3)另外,巡线小车的结构也会对寻迹造成一定的影响,主要与光电传感器在车身的位置有较大的关系[12]。
(4)寻迹路线图上的黑色路线条跟白色的分界线一定泾渭分明,如果黑色到白色是过渡的分界线比较模糊,那么就会对智能轮式机器人的巡线造成较大的影响。
5.3.2 减小环境因素对轮式机器人巡线产生的影响
因为本次的课题主要是为了实现轮式智能机器人的自动寻线功能,务必要要确保此次的测试不受外部因素环境因素的影响,对于光电探测模块来说,外部环境对其数值采集的精度的影响比价大的主要是光线因素,为了确保本次课题的正确进行,一定要降低光线因素对其造成的影响[13]。
(1)在实验场地中,可以通过调整光电传感器在轮式机器人上面的高度,从而降低高度对传感器数值的采集所造成的影响[14]。
(2)设计一种黑白比较分明的寻迹路线图,保证光电传感器检测出的数值不会出现误差。
(3)为了降低轮胎摩擦力对寻迹的影响,需要准备洁净的轮胎以及干净的实验场地,实验场地一定要保持平整,不平整的话有可能会对光电采集的数值造成影响[15]。
结束语
这次课题设计通过系统分析明确了本次课题的设计和研究是可行的并且是具有一定应用市场的;硬件模块设计中涉及的五大模块(光电探测模块、红外测距模块、火焰检测模块、控制器模块、驱动模块)都能完美的实现自己的功能;轮式智能机器人的程序设计上,各个功能的实现都单独设计了子程序,在不同的情况下进行调用,而且对轮式智能机器人的整个巡线流程也进行了设计;通过系统调试对各个功能模块进行了测试,巡线方面对三路光电传感器进行了测试,在数据上大致还是较为准确的,无碍大局,另外对红外避障功能也能正常实现;还有通过误差分析,发现光线还有光电传感器距离黑线的高度对都对巡线功能的实现有很大的影响,如果所用的地图反光就会是光电传感器采集的数据不准确,对巡线功能造成影响,我的解决方案是用不反光的白纸作为地图背景,这样就可以降低光线的影响。另外光电传感器的高度要适中,这样就可以在一定程度上减少误差。
本课题设计的轮式机器人具有同类研究中具有相当大的优势,该轮式机器人能够进行红外避障,能够进行火焰报警,并且能够适应复杂的路线环境,而且还能绕曲线进行行驶;但是还存在着一定的不足:有的时候速度过快的话会出现脱线现象,脱线之后不能自行回到黑线上。
通过研究和学习发现可以通过在程序的算法上进行设计可以实现这个脱线之后能够自行回到线上的功能,这个我会进一步跟进和研究的,争取把这个功能实现。
本系统的程序设计主要由主程序、3路光电寻线程序、红外避障程序和火焰检测程序组成。
程序环境构建说明和程序使用说明
一、软件的安装与运行环境配置
机器人快车软件 5.5版本
运行时,直接通过机器人快车软件打开智能轮式机器人里的智能轮式机器人.rcu文件
二、各种用户的用户名和密码
无
资料包下载:系统源码、答辩PPT、演示视频、论文
下载链接地址如下: