APP下载

基于Dijkstra算法的防尘肺病智能机器人设计

2020-04-27彭子屹

科技传播 2020年2期
关键词:尘肺病驱动器上位

彭子屹

肺尘病或尘肺病[1](Pneumoconiosis),又称黑肺症(Black Lung)是一种肺部纤维化疾病。当长期吸入含有游离的二氧化硅粉尘后,粉尘进入肺部,不能及时被清除,被肺内的巨噬细胞所吞噬,但二氧化硅不能被巨噬细胞所自行分解,导致巨噬细胞死亡,释放所吞噬的粉尘,然后恶性循环,造成更多细胞受损。作为一种不可逆的疾病,现阶段临床上所有的治疗都是在基于缓解症状,减轻患者痛苦的基础上进行的对症治疗。一共有五大治疗方法,其中最有效、也是最大限度地减轻患者呼吸困难的治疗方法就是肺灌洗。其他四种维持治疗,包括肺纤维化的治疗、合并症治疗、基因治疗、肺移植。其中,基因治疗是导入靶细胞,并在一定时期抑制纤维细胞因子产生,相关的实验研究还在进行中;肺移植所需成本极为高昂,器官供体有限,排异可能性大,是挽救晚期病人生命的最后手段。然而,尘肺病患者多是由于经济窘迫才不得不在粉尘环境中从事生产活动,因此通过肺移植治疗尘肺病存在悖论,实际上缺乏可行性。对于确诊患者来说,最根本的治疗还是立即远离高粉尘的工作环境和空气污染严重的生活环境。

为了避免尘肺病的危害,本文装置设计主要从病因出发,减少工人与粉尘的接触机会,所以设计了一种Dijkstra 算法[2]的防尘肺病智能机器人,使用SolidWorks 进行装置三维建模,使用Arduino作为控制芯片设计了控制系统整体电路,并搭建控制系统硬件平台,开发上位机控制系统软件,同时使用增量误差算法和Dijkstra 算法来优化系统的运行。最后验证了装置在减少家装过程中粉尘的可行性,对有效降低尘肺病患者增长率提供了具有价值的思路与方法。

1 整体结构设计

本文设计防尘肺病智能机器人三维建模如图1所示,可实现代替工人工作的基本功能需求,完成粉刷、涂抹的功能,且结构应具有很好的稳定性。

图1 防尘肺病智能机器人三维建模

本文设计的防尘肺病智能机器人如图1所示,主要包括移动机构、垂直运动机构和水平移动机构三大部分。移动机构是由行星直流减速电机驱动后轮运动,采用双轮差速的原理可控制机器人的前进、后退、转向、速度等,同时移动机构由铝型材组成立方体,构成机器人整个底部,内部空间可存放电路控制器以及粉刷工具等,具有很好的适用性。机器人的作业装置使用电机带动的刷子来执行墙面的清理,刷子通过皮带固定在平台的上侧,通过皮带与皮带轮的啮合来控制刷子的水平和垂直方向运动,同时避免工作时的抖动现象。为了吸收机器作业时造成的粉尘,使用图中所示的抽气泵来实现刷子附近的负压环境,从而实现粉尘的自动吸入。

2 整体系统设计

本文设计的基于Dijkstra 算法的防尘肺病智能机器人系统如图2所示,图中主要包括上位机软件、下位机软件和下位机算法部分。Arduino UNO的片上开发部分使用C 语言,开发数据采集,数据处理,数据封包及控制HC-5蓝牙模块的数据传输部分。Arduino UNO 首先接受上位机发送的数据,然后使用增量无法算法和Dijkstra 算法进行数据的处理。得到移动数据,控制器对数据进行数据的封装,从而实现实时的驱动平台电机和作业刷电机的运动。数据接收端会实时的检测接受到的数据,同时实时的发送给系统,系统如果接受到数据会执行相应的动作。

图2 防尘肺病智能机器人系统图

3 系统硬件设计

3.1 Arduino UNO 单片机

Arduino UNO 是一款可高度可diy 的AVR 单片机系列。处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM 输出),6路模拟输入,一个16MHz 晶体振荡器,一个USB 口,一个电源插座,一个ICSP header 和一个复位按钮。Arduino UNO 的优点在于其小巧而高效,符合多点监控系统所要求的,小、精、准的要求。同时,Arduino 的开发环境也较为友好,同时由于该硬件开源的特性,适配的传感器和执行机构非常丰富,扩展性极强,便于多种不同类型的传感器和执行机构有机结合,在单片机内属于较合适的选型[3]。

3.2 蓝牙模块

蓝牙模块连接在Arduino UNO 开发板上,作为速度,方向等数据等传输到手机等设备的桥梁,实现了手机App 与下位机处理器的数据通信[4],当主从模式两个蓝牙模块配对成功后,可以简单地更改为无线的蓝牙。

3.3 移动模块

防尘肺病智能机器人的移动模块的实现是采用双轮差速驱动[5],具体为类汽车四轮模型,两后轮差速驱动。驱动电机为100W 行星减速电机,通过24V 双通道直流有刷电机驱动器与Arduino 单片机相连,直流电机驱动器引脚图如图3所示,图中右侧引脚为驱动器功率接口,M1与M2的A、B 口分别对应行星减速电机的引脚线,P+与P-口对应两个电机的电源正负极输入,外接24V 电源。左侧1、6口为VCC,2、7口为PWM 占空比调速,3、4、8、9为控制逻辑高低电平信号口,5、x 口为隔离电源GND。

图3 行星减速电机驱动器引脚图

3.4 工作执行模块

防尘肺病智能机器人的工作执行模块动力输出部分为步进电机提供,当工作时,步进电机可控制机器人的垂直、水平运动机构进行相应的运动,实现防尘肺病智能机器人工作刷子的水平和垂直两自由度工作,可设置不同的工作路径模式。装置的执行模块控制端主要是步进电机控制作用的体现,下面详细介绍步进电机。

图4 步进电机驱动器实物图

步进电机是一种感应电机,将电脉冲信号转变为角位移或线位移的开环控制元件[6]。步进电机需要搭配配套的步进电机驱动器才能使用,如图4所示为步进电机驱动器实物图,是由PWM 脉冲波来控制转速,一般情况下步距角为1.8°,通过驱动器的SW5、SW6、SW7、SW8来进行细分进一步调节电机转速,已达到精确的运转速度。驱动器的SW1、SW2、SW3、SW4是用来调节步进电机的电流,由于电压时一定的,通过调节电流可实现电机转矩力的大小。驱动器的PUL、DIR、EN 分别对应着控制电机的脉冲、转动方向和使能,通过编程代码可控制电机的运动。VCC 和GND 为连接对应的24V 电压。A-、A+和B-、B+分别对应步进电机的连线,从而控制步进电机满足设计要求的运动。

4 系统软件设计

图5 智能防尘肺病机器人软件设计流程图

智能防尘肺病机器人软件设计流程如图5所示,图中详细的描述了系统的工作流程,软件设计包含上位机软件、下位机控制程序和算法的编写。上位机软件检测用户的输入,并通过蓝牙把数据传给下位机,下位机对数据进行解析,得到需要工作的模式。数据接收端使用Arduino UNO 对数据进行读取,然后使用相依的算法进行计算。

4.1 上位机软件开发

上位机手机App 操作界面如图6所示,界面逻辑设计,一款好的APP 应该有良好的界面设计,兼顾重要参数的显示,和方便的手动操作控制。在App 软件程序中,主要完成运动速度和运动状态数据的接收和显示以及提供了一个手动操作的界面,用于使用者完成手动操作的要求。上位机软件基于安卓系统开发[7],用户打开软件App,首先App 进行初始化,之后蓝牙连接,在蓝牙连接成功后,可通过手机App 远程操作控制机器人,有效避免工人与粉尘的接触。

图6 手机App操作界面图

4.2 Dijkstra 最短路径算法

Dijkstra 算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,找到一条从出发点到终点的最短路径是一种广度优先的搜索方法。Dijkstra 算法原理:假设从S →E 存在一条最短路径SE,且该路径经过点A,那么可以确定SA 子路径一定是S →A 的最短路径。证明:反证法。如果子路径SA 不是最短的,那么就必然存在一条更短的SA,从而SE 路径也就不是最短,与原假设矛盾。

如果我们规定G 为算法所应用的图,s 是源点,l(u,v)是从点u 到v 的边的长度,V 是图中所有的点的集合,那么Dijkstra 算法的过程则如图7所示:

图7 Dijkstra算法伪代码示意图

将算法找到的距离记为d(v),从s 到v 的实际最短距离记为δ(v),若想要证明算法找到的确实是最短路径,证明对任意 v ∈V,在当前轮递推结束时都有。这等同于证明d(v)=δ(v)。运用数学归纳法,在假设当上一轮结束时如有d(v)=δ(v),则本轮结束时d(v)=δ(v)同样成立。

算法程序实现步骤如下:

step1:首先建立两个集合S={}:表示已经找到最短路径的结点;U={}:表示尚未找到最短路径的结点。

step2:建立一个数组dist[i],用于存放起点0到该结点i 的最短路径

step3:具体执行部分:

A:初始点设定

B:选取最小dist[i]

C:更新dist[i]

算法程序实现如图8所示:

图8 Dijkstra最短路径算法代码

5 系统测试和结果分析

5.1 功能测试

图9防尘肺病实物效果图

系统的测试主要包括平台运转的稳定性和可靠性测试以及数据传输的稳定性和可靠性[8]。在测试中首先通过上位机控制平台进行移动作业,同时控制作业刷进行墙面的清理。然后通过粉尘测试仪来测试环境中的粉尘数量。通过每个环节的检测来评估系统的作业效果和对粉尘的吸收情况,经过约100次的测试,系统有可靠的性能,平台运行稳定,吸收灰尘效果较好。

5.2 测试结果分析

实际试验结果表明:

1)下位机可以准确的接受上位机传输的数据,并进行定向移动。

2)在路径的规划过程中,可以通过Dijkstra算法实现最短路径的计算。

3)系统有可靠的捕捉性能和传输性能,但是需要指出的是,系统在针对房顶的作业面积时存在一定的问题,后期可以通过控制作业刷转向来解决。

4)系统设计结构简单,原理清晰。呈现小型化,智能化,有利于产业化。

6 总结与展望

本文设计了基于Dijkstra 算法的防尘肺病智能机器人系统,主要完成了以下工作:

1)通过分析当前尘肺病的起因和危害,提出相应的解决方案,对防尘肺病机器人进行了机械结构设计、绘制三维模型,通过合理的使用皮带结构实现平台的移动和作业刷的灵活移动。

2)使用Arduino UNO 作为控制中枢,搭建了控制系统,研制了试验样机以及开发了手机App。

3)对防尘肺病机器人进行了功能测试和分析,基本满足设计要求。

未来将对防尘肺病智能机器人的实物装置进行优化升级,在现有的控制基础增加装置的自主移动功能,可减轻工作人员携带的困难。

猜你喜欢

尘肺病驱动器上位
国家尘肺病诊疗中心组建
一例尘肺病患者的呼吸康复治疗体会
痛泻要方加味汤治疗尘肺病验案2则
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
压电陶瓷驱动器的迟滞特性
以新思路促推现代农业上位
SiC基和Si基永磁同步电动机驱动器的比较
CBS教学模式在五年制临床医学专业尘肺病教学中的应用