鄭建立,盧祥林,夏宇彬
(上海理工大學 醫(yī)療器械與食品學院,上海 200093)
手術異物遺留(Retained Surgical Items,RSIS)是指任何手術操作后遺留在患者體內(nèi)的物體,這些遺留異物不僅會對患者健康造成嚴重的影響,同時也給患者帶來額外的經(jīng)濟負擔。手術中最常見的遺留物體有:軟質物品(如海綿、紗布)、小件物品、針頭及其他銳器。在這些遺留物體中,手術紗布是最常見的殘留異物,因為它們在浸透血液后很難被發(fā)現(xiàn)。文獻[1]的數(shù)據(jù)顯示,紗布數(shù)量約占總遺留異物數(shù)量的69%。一般為防止手術器械和紗布的遺留,外科醫(yī)生和手術室工作人員主要依靠“清理腹腔”、手工清點器械和紗布等計數(shù),但在排查過程中容易出現(xiàn)人為錯誤,導致異物遺留的發(fā)生。
目前有采用RFID(Radio Frequency IDentification)技術的智能紗布,可以實現(xiàn)精確的計數(shù)以及對患者體內(nèi)有無殘留的紗布進行判斷。但是這種技術的成本較高,也無法獲得紗布的準確位置,并且還需要醫(yī)生手動植入RFID標簽,因此并沒有得到很好的推廣。
為了能夠實現(xiàn)定位,醫(yī)學上常用的方法有超聲波[2]、射頻[3]和磁感應定位[4-5]。射頻和超聲波定位都是通過有源設備向外界發(fā)射信號以達到定位目的。但是,這兩種方法并不適用于接觸血液的紗布。文獻[4,6]提出的磁感應定位方法使用的是無源器件永磁體,雖適用于本文的場景,但也只是針對單個目標進行定位。文獻[7]提出利用模擬器件采集數(shù)據(jù)后再A/D轉換的方式,這種方法需要自行設計電路,而且會產(chǎn)生較大的噪聲干擾。
本文提出了基于全新的數(shù)字三軸傳感器的定位方法,該方法采用新的非線性最優(yōu)化方法,提高了定位的精度,降低了算法耗時,并且可實現(xiàn)最多4個目標的定位。
當永磁體與傳感器之間的距離遠大于永磁體的大小時,可以將永磁體視為一個磁偶極子模型。則距離永磁體距離為R處的磁感應強度B可由如下公式計算[8]
(1)
如果令磁矩方向H與z軸正方向的夾角為θ[4],其在xy平面的投影與x軸正方向的夾角為φ,如圖1所示,則H又可以表示為[sinθ·cosφ,sinθ·cosφ,cosθ]T。
圖1 磁偶極子與傳感器
通過空間中多個傳感器測得的數(shù)據(jù),結合式(1)就可以聯(lián)立方程求解得到永磁體的位置坐標(a,b,c)與角度(θ,φ),求解算法將在后文中介紹。
磁定位硬件由3個部分組成:傳感器陣列、Arduino Mega 2560開發(fā)板和上位機,其組成關系如圖2所示。Arduino上的程序通過I2C讀取傳感器數(shù)據(jù)并由串口發(fā)送給上位機,上位機軟件根據(jù)數(shù)據(jù)計算并顯示永磁體的位置。
圖2 磁定位系統(tǒng)
傳感器陣列由13個數(shù)字式三軸磁傳感器組成,具體型號為Memsic 公司的MMC5883MA各向異性磁阻(Anisotropic Magneto Resistive,AMR)傳感器,能夠實現(xiàn)±8 Gauss量程16 bit工作模式下,±0.2% FSR 線性度,0.2% FSR磁滯,0.2% FSR重復性,以及0.25 mG的分辨率。其出色的性能為軟硬件的抗干擾修正提供了更為快速的算法,帶來了更為精確及快速的方向定位。如圖3和圖4所示,傳感器陣列的大小為20 cm × 20 cm,傳感器之間水平與垂直方向小的間隔為5 cm,大的間隔為10 cm。
圖3 MMC5883MA磁傳感器模塊
圖4 傳感器陣列布局
Arduino通過2個8通道I2C雙向開關(TCA9548A)與傳感器陣列相連,如圖5所示。因為Mega 2560上只有2個I2C接口,必須要通過類似TCA9548A的設備才能連接13個傳感器。Arduino每次讀取一個傳感器的數(shù)據(jù),然后發(fā)送給上位機,當其讀取完13個傳感器之后會從第1個再次讀取,如此循環(huán)。
圖5 Arduino與TCA9548A
每一個傳感器測得的磁感應強度Bl=[Blx,Bly,Blz]T(l=1,2,…,13),根據(jù)式(1)得出
(2)
式中,等號左邊為測量值,等號右邊為理論計算值。(xl,yl,zl)代表第l個傳感器的位置坐標,為已知的自定義的參數(shù);Rl為永磁體到第l個傳感器的距離。在理想情況下,傳感器的測量值應與式(1)的計算結果相等。但在實際中兩者結果不可能完全相等,只能非常接近,因此,定義如下誤差函數(shù)[10]
E=Ex+Ey+Ez
(3)
其中,Ex,Ey,Ez分別定義為
(4)
N為傳感器的個數(shù),Bmx、Bmy、Bmz分別為x、y、z3個方向的理論計算值,即式(2)等號的右邊。
理論上誤差函數(shù)E應該等于0,但實際中只能找到一個最接近0的最小值。通過求解E的最小值,進而得到永磁體的位置和角度。本文采用的求解方法為LM (Levenberg-Marquardt) 算法[9]。該算法收斂速度快,在MATLAB中平均耗時約為160 ms,而且在單個目標情況下不會陷入局部最優(yōu),能夠得到正確結果。單目標定位中LM算法所用的初值為(a=0.1 m,b=0.1 m,c=-0.1 m,θ=0 rad,φ=0 rad),即假設初值在傳感器陣列上方0.2 m×0.2 m×0.2 m大小的立方體的中心位置。其中c=-0.1 m是因為傳感器z軸的正方向是朝下的,若以傳感器所在平面為零點,則其上方的值小于0。
多個目標的求解思路與單目標一致,只不過每一個傳感器測得的數(shù)據(jù)不再是單一磁體的磁感應強度,而是多個磁體的矢量疊加。測量值與理論計算值的對應關系如下[11]
(5)
式中,等式左邊為測量值,右邊為理論計算值;M代表目標永磁體的個數(shù);(aq,bq,cq)代表第q個永磁體的位置坐標;(mq,nq,pq)代表第q個永磁體的磁矩方向;Rlq代表第q個永磁體與傳感器的距離。
誤差函數(shù)仍然為式(3)和式(4),只是式(4)中的理論計算值Bmx、Bmy、Bmz不同,需要變?yōu)槭?5)中等號的右邊部分。多目標情況下,若沒有一個合理的初值,只使用LM算法求解可能陷入局部最優(yōu),無法得到正確的位置坐標。因此,需要使用其他全局最優(yōu)化方法。本文測試了免疫克隆粒子群算法[12]與人工蜂群算法(Artificial Bee Colony,ABC)[13]。實驗發(fā)現(xiàn),在有3~4個目標時,使用免疫克隆粒子群算法有較大可能得不到最優(yōu)解。本文使用的是基于ABC算法改進的算法,叫做IGAL-ABC[13-15]。該算法能夠避免陷入局部最優(yōu)從而得到正確的位置坐標。但是該算法收斂速度比較慢,需要十幾秒的時間。因此,初值的確定由IGAL-ABC算法來確定,之后結果以此初值為基礎通過LM算法計算獲得。
實驗中使用的永磁體為直徑8 mm、高度3 mm的Nd-Fe-B 磁體,定位軟件在MATLABR2017a中實現(xiàn)。實驗測得其磁矩大小為0.1356 m·A2??傉`差Err定義如下
(6)
式中,(a,b,c)代表計算得到的位置坐標,(at,bt,ct)代表永磁體的真實位置坐標。
對于單個目標,本文計算了平面上同一位置不同高度的50次的定位誤差,如6圖所示。
圖6 不同高度的定位誤差
從圖6中可以看出,隨著高度的增加,定位的誤差和波動性逐漸增大。在10 cm、15 cm、20 cm和27 cm高度時的平均總誤差分別為:2.44 mm、3.95 mm、9.52 mm和16.75 mm。究其原因,是因為高度越高,傳感器位置的磁感應強度越弱,測得的數(shù)據(jù)準確度降低,而提高傳感器的靈敏度則可以降低定位誤差。
如前文所述,LM算法本身具有較快的收斂速度。如果LM算法的初值選取得當,即所選初值與真實值比較接近,則可以更進一步提高計算速度。因此,若將上一次的計算結果作為下一次LM算法的初值,則可以得到磁體的實時運動軌跡。實驗中運用這種方式計算耗時在30~100 ms之間,具體數(shù)值取決于永磁體的個數(shù)。圖7展示了兩個目標的運動散點軌跡,其中圓的左右部分分別對應著2個磁體的運動軌跡。圖8顯示的是4個目標連續(xù)30次單點定位的結果。
圖7 兩個目標軌跡
圖8 4個目標定位
本文建立了多目標的永磁體實時定位系統(tǒng),該系統(tǒng)在準備系統(tǒng)定位初值階段耗時較長,需要約10~15 s時間(與目標數(shù)量有關),其后的定位耗時均在100 ms以內(nèi)。該系統(tǒng)還能夠實現(xiàn)較大高度范圍的定位,盡管不同高度定位誤差有所差異,平均誤差最小約為2.5 mm,最大約為17 mm,但都能滿足實際要求。下一步的研究方向將集中在對更多目標的實施定位以及提高定位精度等方面,并計劃將這套系統(tǒng)以嵌入式的方式實現(xiàn),使其更加符合實際使用需求。