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