彭子屹
肺塵病或塵肺病[1](Pneumoconiosis),又稱黑肺癥(Black Lung)是一種肺部纖維化疾病。當(dāng)長期吸入含有游離的二氧化硅粉塵后,粉塵進(jìn)入肺部,不能及時(shí)被清除,被肺內(nèi)的巨噬細(xì)胞所吞噬,但二氧化硅不能被巨噬細(xì)胞所自行分解,導(dǎo)致巨噬細(xì)胞死亡,釋放所吞噬的粉塵,然后惡性循環(huán),造成更多細(xì)胞受損。作為一種不可逆的疾病,現(xiàn)階段臨床上所有的治療都是在基于緩解癥狀,減輕患者痛苦的基礎(chǔ)上進(jìn)行的對癥治療。一共有五大治療方法,其中最有效、也是最大限度地減輕患者呼吸困難的治療方法就是肺灌洗。其他四種維持治療,包括肺纖維化的治療、合并癥治療、基因治療、肺移植。其中,基因治療是導(dǎo)入靶細(xì)胞,并在一定時(shí)期抑制纖維細(xì)胞因子產(chǎn)生,相關(guān)的實(shí)驗(yàn)研究還在進(jìn)行中;肺移植所需成本極為高昂,器官供體有限,排異可能性大,是挽救晚期病人生命的最后手段。然而,塵肺病患者多是由于經(jīng)濟(jì)窘迫才不得不在粉塵環(huán)境中從事生產(chǎn)活動(dòng),因此通過肺移植治療塵肺病存在悖論,實(shí)際上缺乏可行性。對于確診患者來說,最根本的治療還是立即遠(yuǎn)離高粉塵的工作環(huán)境和空氣污染嚴(yán)重的生活環(huán)境。
為了避免塵肺病的危害,本文裝置設(shè)計(jì)主要從病因出發(fā),減少工人與粉塵的接觸機(jī)會(huì),所以設(shè)計(jì)了一種Dijkstra 算法[2]的防塵肺病智能機(jī)器人,使用SolidWorks 進(jìn)行裝置三維建模,使用Arduino作為控制芯片設(shè)計(jì)了控制系統(tǒng)整體電路,并搭建控制系統(tǒng)硬件平臺,開發(fā)上位機(jī)控制系統(tǒng)軟件,同時(shí)使用增量誤差算法和Dijkstra 算法來優(yōu)化系統(tǒng)的運(yùn)行。最后驗(yàn)證了裝置在減少家裝過程中粉塵的可行性,對有效降低塵肺病患者增長率提供了具有價(jià)值的思路與方法。
本文設(shè)計(jì)防塵肺病智能機(jī)器人三維建模如圖1所示,可實(shí)現(xiàn)代替工人工作的基本功能需求,完成粉刷、涂抹的功能,且結(jié)構(gòu)應(yīng)具有很好的穩(wěn)定性。
圖1 防塵肺病智能機(jī)器人三維建模
本文設(shè)計(jì)的防塵肺病智能機(jī)器人如圖1所示,主要包括移動(dòng)機(jī)構(gòu)、垂直運(yùn)動(dòng)機(jī)構(gòu)和水平移動(dòng)機(jī)構(gòu)三大部分。移動(dòng)機(jī)構(gòu)是由行星直流減速電機(jī)驅(qū)動(dòng)后輪運(yùn)動(dòng),采用雙輪差速的原理可控制機(jī)器人的前進(jìn)、后退、轉(zhuǎn)向、速度等,同時(shí)移動(dòng)機(jī)構(gòu)由鋁型材組成立方體,構(gòu)成機(jī)器人整個(gè)底部,內(nèi)部空間可存放電路控制器以及粉刷工具等,具有很好的適用性。機(jī)器人的作業(yè)裝置使用電機(jī)帶動(dòng)的刷子來執(zhí)行墻面的清理,刷子通過皮帶固定在平臺的上側(cè),通過皮帶與皮帶輪的嚙合來控制刷子的水平和垂直方向運(yùn)動(dòng),同時(shí)避免工作時(shí)的抖動(dòng)現(xiàn)象。為了吸收機(jī)器作業(yè)時(shí)造成的粉塵,使用圖中所示的抽氣泵來實(shí)現(xiàn)刷子附近的負(fù)壓環(huán)境,從而實(shí)現(xiàn)粉塵的自動(dòng)吸入。
本文設(shè)計(jì)的基于Dijkstra 算法的防塵肺病智能機(jī)器人系統(tǒng)如圖2所示,圖中主要包括上位機(jī)軟件、下位機(jī)軟件和下位機(jī)算法部分。Arduino UNO的片上開發(fā)部分使用C 語言,開發(fā)數(shù)據(jù)采集,數(shù)據(jù)處理,數(shù)據(jù)封包及控制HC-5藍(lán)牙模塊的數(shù)據(jù)傳輸部分。Arduino UNO 首先接受上位機(jī)發(fā)送的數(shù)據(jù),然后使用增量無法算法和Dijkstra 算法進(jìn)行數(shù)據(jù)的處理。得到移動(dòng)數(shù)據(jù),控制器對數(shù)據(jù)進(jìn)行數(shù)據(jù)的封裝,從而實(shí)現(xiàn)實(shí)時(shí)的驅(qū)動(dòng)平臺電機(jī)和作業(yè)刷電機(jī)的運(yùn)動(dòng)。數(shù)據(jù)接收端會(huì)實(shí)時(shí)的檢測接受到的數(shù)據(jù),同時(shí)實(shí)時(shí)的發(fā)送給系統(tǒng),系統(tǒng)如果接受到數(shù)據(jù)會(huì)執(zhí)行相應(yīng)的動(dòng)作。
圖2 防塵肺病智能機(jī)器人系統(tǒng)圖
Arduino UNO 是一款可高度可diy 的AVR 單片機(jī)系列。處理器核心是ATmega328,同時(shí)具有14路數(shù)字輸入/輸出口(其中6路可作為PWM 輸出),6路模擬輸入,一個(gè)16MHz 晶體振蕩器,一個(gè)USB 口,一個(gè)電源插座,一個(gè)ICSP header 和一個(gè)復(fù)位按鈕。Arduino UNO 的優(yōu)點(diǎn)在于其小巧而高效,符合多點(diǎn)監(jiān)控系統(tǒng)所要求的,小、精、準(zhǔn)的要求。同時(shí),Arduino 的開發(fā)環(huán)境也較為友好,同時(shí)由于該硬件開源的特性,適配的傳感器和執(zhí)行機(jī)構(gòu)非常豐富,擴(kuò)展性極強(qiáng),便于多種不同類型的傳感器和執(zhí)行機(jī)構(gòu)有機(jī)結(jié)合,在單片機(jī)內(nèi)屬于較合適的選型[3]。
藍(lán)牙模塊連接在Arduino UNO 開發(fā)板上,作為速度,方向等數(shù)據(jù)等傳輸?shù)绞謾C(jī)等設(shè)備的橋梁,實(shí)現(xiàn)了手機(jī)App 與下位機(jī)處理器的數(shù)據(jù)通信[4],當(dāng)主從模式兩個(gè)藍(lán)牙模塊配對成功后,可以簡單地更改為無線的藍(lán)牙。
防塵肺病智能機(jī)器人的移動(dòng)模塊的實(shí)現(xiàn)是采用雙輪差速驅(qū)動(dòng)[5],具體為類汽車四輪模型,兩后輪差速驅(qū)動(dòng)。驅(qū)動(dòng)電機(jī)為100W 行星減速電機(jī),通過24V 雙通道直流有刷電機(jī)驅(qū)動(dòng)器與Arduino 單片機(jī)相連,直流電機(jī)驅(qū)動(dòng)器引腳圖如圖3所示,圖中右側(cè)引腳為驅(qū)動(dòng)器功率接口,M1與M2的A、B 口分別對應(yīng)行星減速電機(jī)的引腳線,P+與P-口對應(yīng)兩個(gè)電機(jī)的電源正負(fù)極輸入,外接24V 電源。左側(cè)1、6口為VCC,2、7口為PWM 占空比調(diào)速,3、4、8、9為控制邏輯高低電平信號口,5、x 口為隔離電源GND。
圖3 行星減速電機(jī)驅(qū)動(dòng)器引腳圖
防塵肺病智能機(jī)器人的工作執(zhí)行模塊動(dòng)力輸出部分為步進(jìn)電機(jī)提供,當(dāng)工作時(shí),步進(jìn)電機(jī)可控制機(jī)器人的垂直、水平運(yùn)動(dòng)機(jī)構(gòu)進(jìn)行相應(yīng)的運(yùn)動(dòng),實(shí)現(xiàn)防塵肺病智能機(jī)器人工作刷子的水平和垂直兩自由度工作,可設(shè)置不同的工作路徑模式。裝置的執(zhí)行模塊控制端主要是步進(jìn)電機(jī)控制作用的體現(xiàn),下面詳細(xì)介紹步進(jìn)電機(jī)。
圖4 步進(jìn)電機(jī)驅(qū)動(dòng)器實(shí)物圖
步進(jìn)電機(jī)是一種感應(yīng)電機(jī),將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件[6]。步進(jìn)電機(jī)需要搭配配套的步進(jìn)電機(jī)驅(qū)動(dòng)器才能使用,如圖4所示為步進(jìn)電機(jī)驅(qū)動(dòng)器實(shí)物圖,是由PWM 脈沖波來控制轉(zhuǎn)速,一般情況下步距角為1.8°,通過驅(qū)動(dòng)器的SW5、SW6、SW7、SW8來進(jìn)行細(xì)分進(jìn)一步調(diào)節(jié)電機(jī)轉(zhuǎn)速,已達(dá)到精確的運(yùn)轉(zhuǎn)速度。驅(qū)動(dòng)器的SW1、SW2、SW3、SW4是用來調(diào)節(jié)步進(jìn)電機(jī)的電流,由于電壓時(shí)一定的,通過調(diào)節(jié)電流可實(shí)現(xiàn)電機(jī)轉(zhuǎn)矩力的大小。驅(qū)動(dòng)器的PUL、DIR、EN 分別對應(yīng)著控制電機(jī)的脈沖、轉(zhuǎn)動(dòng)方向和使能,通過編程代碼可控制電機(jī)的運(yùn)動(dòng)。VCC 和GND 為連接對應(yīng)的24V 電壓。A-、A+和B-、B+分別對應(yīng)步進(jìn)電機(jī)的連線,從而控制步進(jìn)電機(jī)滿足設(shè)計(jì)要求的運(yùn)動(dòng)。
圖5 智能防塵肺病機(jī)器人軟件設(shè)計(jì)流程圖
智能防塵肺病機(jī)器人軟件設(shè)計(jì)流程如圖5所示,圖中詳細(xì)的描述了系統(tǒng)的工作流程,軟件設(shè)計(jì)包含上位機(jī)軟件、下位機(jī)控制程序和算法的編寫。上位機(jī)軟件檢測用戶的輸入,并通過藍(lán)牙把數(shù)據(jù)傳給下位機(jī),下位機(jī)對數(shù)據(jù)進(jìn)行解析,得到需要工作的模式。數(shù)據(jù)接收端使用Arduino UNO 對數(shù)據(jù)進(jìn)行讀取,然后使用相依的算法進(jìn)行計(jì)算。
上位機(jī)手機(jī)App 操作界面如圖6所示,界面邏輯設(shè)計(jì),一款好的APP 應(yīng)該有良好的界面設(shè)計(jì),兼顧重要參數(shù)的顯示,和方便的手動(dòng)操作控制。在App 軟件程序中,主要完成運(yùn)動(dòng)速度和運(yùn)動(dòng)狀態(tài)數(shù)據(jù)的接收和顯示以及提供了一個(gè)手動(dòng)操作的界面,用于使用者完成手動(dòng)操作的要求。上位機(jī)軟件基于安卓系統(tǒng)開發(fā)[7],用戶打開軟件App,首先App 進(jìn)行初始化,之后藍(lán)牙連接,在藍(lán)牙連接成功后,可通過手機(jī)App 遠(yuǎn)程操作控制機(jī)器人,有效避免工人與粉塵的接觸。
圖6 手機(jī)App操作界面圖
Dijkstra 算法主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止,找到一條從出發(fā)點(diǎn)到終點(diǎn)的最短路徑是一種廣度優(yōu)先的搜索方法。Dijkstra 算法原理:假設(shè)從S →E 存在一條最短路徑SE,且該路徑經(jīng)過點(diǎn)A,那么可以確定SA 子路徑一定是S →A 的最短路徑。證明:反證法。如果子路徑SA 不是最短的,那么就必然存在一條更短的SA,從而SE 路徑也就不是最短,與原假設(shè)矛盾。
如果我們規(guī)定G 為算法所應(yīng)用的圖,s 是源點(diǎn),l(u,v)是從點(diǎn)u 到v 的邊的長度,V 是圖中所有的點(diǎn)的集合,那么Dijkstra 算法的過程則如圖7所示:
圖7 Dijkstra算法偽代碼示意圖
將算法找到的距離記為d(v),從s 到v 的實(shí)際最短距離記為δ(v),若想要證明算法找到的確實(shí)是最短路徑,證明對任意 v ∈V,在當(dāng)前輪遞推結(jié)束時(shí)都有。這等同于證明d(v)=δ(v)。運(yùn)用數(shù)學(xué)歸納法,在假設(shè)當(dāng)上一輪結(jié)束時(shí)如有d(v)=δ(v),則本輪結(jié)束時(shí)d(v)=δ(v)同樣成立。
算法程序?qū)崿F(xiàn)步驟如下:
step1:首先建立兩個(gè)集合S={}:表示已經(jīng)找到最短路徑的結(jié)點(diǎn);U={}:表示尚未找到最短路徑的結(jié)點(diǎn)。
step2:建立一個(gè)數(shù)組dist[i],用于存放起點(diǎn)0到該結(jié)點(diǎn)i 的最短路徑
step3:具體執(zhí)行部分:
A:初始點(diǎn)設(shè)定
B:選取最小dist[i]
C:更新dist[i]
算法程序?qū)崿F(xiàn)如圖8所示:
圖8 Dijkstra最短路徑算法代碼
圖9防塵肺病實(shí)物效果圖
系統(tǒng)的測試主要包括平臺運(yùn)轉(zhuǎn)的穩(wěn)定性和可靠性測試以及數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性[8]。在測試中首先通過上位機(jī)控制平臺進(jìn)行移動(dòng)作業(yè),同時(shí)控制作業(yè)刷進(jìn)行墻面的清理。然后通過粉塵測試儀來測試環(huán)境中的粉塵數(shù)量。通過每個(gè)環(huán)節(jié)的檢測來評估系統(tǒng)的作業(yè)效果和對粉塵的吸收情況,經(jīng)過約100次的測試,系統(tǒng)有可靠的性能,平臺運(yùn)行穩(wěn)定,吸收灰塵效果較好。
實(shí)際試驗(yàn)結(jié)果表明:
1)下位機(jī)可以準(zhǔn)確的接受上位機(jī)傳輸?shù)臄?shù)據(jù),并進(jìn)行定向移動(dòng)。
2)在路徑的規(guī)劃過程中,可以通過Dijkstra算法實(shí)現(xiàn)最短路徑的計(jì)算。
3)系統(tǒng)有可靠的捕捉性能和傳輸性能,但是需要指出的是,系統(tǒng)在針對房頂?shù)淖鳂I(yè)面積時(shí)存在一定的問題,后期可以通過控制作業(yè)刷轉(zhuǎn)向來解決。
4)系統(tǒng)設(shè)計(jì)結(jié)構(gòu)簡單,原理清晰。呈現(xiàn)小型化,智能化,有利于產(chǎn)業(yè)化。
本文設(shè)計(jì)了基于Dijkstra 算法的防塵肺病智能機(jī)器人系統(tǒng),主要完成了以下工作:
1)通過分析當(dāng)前塵肺病的起因和危害,提出相應(yīng)的解決方案,對防塵肺病機(jī)器人進(jìn)行了機(jī)械結(jié)構(gòu)設(shè)計(jì)、繪制三維模型,通過合理的使用皮帶結(jié)構(gòu)實(shí)現(xiàn)平臺的移動(dòng)和作業(yè)刷的靈活移動(dòng)。
2)使用Arduino UNO 作為控制中樞,搭建了控制系統(tǒng),研制了試驗(yàn)樣機(jī)以及開發(fā)了手機(jī)App。
3)對防塵肺病機(jī)器人進(jìn)行了功能測試和分析,基本滿足設(shè)計(jì)要求。
未來將對防塵肺病智能機(jī)器人的實(shí)物裝置進(jìn)行優(yōu)化升級,在現(xiàn)有的控制基礎(chǔ)增加裝置的自主移動(dòng)功能,可減輕工作人員攜帶的困難。