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