專利名稱:虛擬手術(shù)中的數(shù)據(jù)同步方法及系統(tǒng)的制作方法
虛擬手術(shù)中的數(shù)據(jù)同步方法及系統(tǒng)
技術(shù)領(lǐng)域:
本發(fā)明涉及遙操作技術(shù),特別是涉及一種虛擬手術(shù)中的數(shù)據(jù)同步方法及系統(tǒng)。背景技術(shù):
虛擬手術(shù)是指通過力反饋設(shè)備與計(jì)算機(jī)中的手術(shù)對(duì)象模型進(jìn)行交互操作,手術(shù)對(duì)象模型用于模擬實(shí)體的手術(shù)對(duì)象,操作者對(duì)力反饋設(shè)備進(jìn)行操作來實(shí)現(xiàn)虛擬的手術(shù)器械在手術(shù)對(duì)象模型中的虛擬手術(shù)。在傳統(tǒng)的虛擬手術(shù)中,虛擬的手術(shù)器械和手術(shù)對(duì)象模型的交互碰撞是在作為操作端的計(jì)算機(jī)中進(jìn)行的,但是在需要向多臺(tái)終端設(shè)備進(jìn)行數(shù)據(jù)同步的情況下,無論是采用視頻流的傳送方法還是采用網(wǎng)絡(luò)游戲中關(guān)鍵操作傳送方法均難以實(shí)現(xiàn)虛擬手術(shù)中的數(shù)據(jù)同步,存在著同步率低的缺陷。對(duì)于視頻流的傳送方法和網(wǎng)絡(luò)游戲中關(guān)鍵操作傳送方法這兩類常用的數(shù)據(jù)傳送方法而言,與視頻流的傳輸相比較,虛擬手術(shù)中需要進(jìn)行實(shí)時(shí)同步的數(shù)據(jù)是三維手術(shù)對(duì)象模型,數(shù)據(jù)量是不固定的,即虛擬手術(shù)中使用的模型大小和模型精度并不存在統(tǒng)一的規(guī)格,因此,虛擬手術(shù)中的數(shù)據(jù)同步并不能夠采用視頻流的傳送方法實(shí)現(xiàn);由于虛擬手術(shù)中虛擬的手術(shù)器械和手術(shù)對(duì)象模型之間的交互碰撞是一個(gè)與時(shí)間相關(guān)的矢量過程,所以操作端與需要同步的終端設(shè)備之間也不能使用網(wǎng)絡(luò)游戲中使用的關(guān)鍵操作傳送方法實(shí)現(xiàn)數(shù)據(jù)同步。虛擬手術(shù)的操作端為降低運(yùn)行的復(fù)雜性和資源開銷,無法保存所有需要同步于終端設(shè)備的數(shù)據(jù),即操作端只能保存當(dāng)前產(chǎn)生的數(shù)據(jù),并向終端設(shè)備發(fā)送保存的數(shù)據(jù)。現(xiàn)有的網(wǎng)絡(luò)傳輸過程是一個(gè)“盡力而為”的過程,常常受到很多不可預(yù)知因素的影響而發(fā)生波動(dòng),并且在發(fā)生傳輸錯(cuò)誤之后忽略本次傳輸錯(cuò)誤,待下一次周期性傳輸?shù)絹淼臅r(shí)候用接收到的數(shù)據(jù)更新當(dāng)前數(shù)據(jù),由于虛擬手術(shù)過程中發(fā)送的數(shù)據(jù)是虛擬的手術(shù)器械的位置和狀態(tài),因此必須保證每一個(gè)時(shí)刻所對(duì)應(yīng)的數(shù)據(jù)都成功傳送,若采用現(xiàn)有的網(wǎng)絡(luò)傳輸過程進(jìn)行數(shù)據(jù)傳輸,終端設(shè)備通過接收的數(shù)據(jù)進(jìn)行手術(shù)對(duì)象模型的更新時(shí)會(huì)發(fā)生更新結(jié)果與操作端不一致的情況,并且這種情況會(huì)隨著時(shí)間的推移而越來越嚴(yán)重,進(jìn)而導(dǎo)致同步率低下。
發(fā)明內(nèi)容
基于此,有必要提供一種能提高同步率的虛擬手術(shù)中的數(shù)據(jù)同步方法。此外,還有必要提供一種能提高同步率的虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng)。一種虛擬手術(shù)中的數(shù)據(jù)同步方法,包括如下步驟:獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù);對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù);讀取所述編碼數(shù)據(jù)并發(fā)送;通過接收的編碼數(shù)據(jù)進(jìn)行重建得到發(fā)生變化的模型數(shù)據(jù),并更新于所述虛擬手術(shù)中。優(yōu)選地,所述獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù)的步驟為:計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)。
優(yōu)選地,所述計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)的步驟之前還包括:檢測(cè)所述手術(shù)工具模型和手術(shù)對(duì)象模型是否發(fā)生交互,若是,則進(jìn)入所述計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)的步驟,若否,則所述獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù)的步驟為:計(jì)算所述手術(shù)工具模型的變換矩陣。優(yōu)選地,所述對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù)的步驟為:將所述模型數(shù)據(jù)轉(zhuǎn)換為字符串;根據(jù)所述字符串在內(nèi)存中的地址將所述地址對(duì)應(yīng)的字符串構(gòu)造成編碼數(shù)據(jù),并將所述編碼數(shù)據(jù)中字符串的長度與所述字符串關(guān)聯(lián);連接所述構(gòu)造的編碼數(shù)據(jù)。優(yōu)選地,所述連接所述構(gòu)造的編碼數(shù)據(jù)的步驟為:獲取所述構(gòu)造的編碼數(shù)據(jù)的長度;分別將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及所述構(gòu)造的編碼數(shù)據(jù)依次連接。優(yōu)選地,所述對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù)的步驟之后還包括:緩存所述編碼數(shù)據(jù);所述讀取所述編碼數(shù)據(jù)并發(fā)送的步驟之后還包括:接收所述發(fā)送的編碼數(shù)據(jù),并緩存。一種虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),包括:數(shù)據(jù)獲取模塊,用于獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù);編碼模塊,用于對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù);發(fā)送模塊,用于讀取所述編碼數(shù)據(jù)并發(fā)送;模型更新模塊,用于通過接收的編碼數(shù)據(jù)進(jìn)行重建得到發(fā)生變化的模型數(shù)據(jù),并更新于所述虛擬手術(shù)中。優(yōu)選地,所述數(shù)據(jù)獲取模塊還用于計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)。優(yōu)選地,還包括:檢測(cè)模塊,用于檢測(cè)所述手術(shù)工具模型和手術(shù)對(duì)象模型是否發(fā)生交互,若是,則通知所述數(shù)據(jù)獲取模塊計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn),若否,則所述數(shù)據(jù)獲取模塊還用于計(jì)算所述手術(shù)工具模型的變換矩陣。優(yōu)選地,所述編碼模塊包括:轉(zhuǎn)換單元,用于將模型數(shù)據(jù)轉(zhuǎn)換為字符串;構(gòu)造單元,用于根據(jù)所述字符串的存儲(chǔ)地址將所述地址對(duì)應(yīng)的字符串構(gòu)造成編碼數(shù)據(jù),并將所述編碼數(shù)據(jù)中字符串的長度與所述字符串關(guān)聯(lián);連接單元,用于連接所述構(gòu)造的編碼數(shù)據(jù)。優(yōu)選地,所述連接單元還用于獲取構(gòu)造的編碼數(shù)據(jù)的長度,分別將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及所述構(gòu)造的編碼數(shù)據(jù)依次連接。優(yōu)選地,還包括:
緩存模塊,用于緩存所述編碼數(shù)據(jù);接收模塊,用于接收所述發(fā)送的編碼數(shù)據(jù),并緩存。上述虛擬手術(shù)中的數(shù)據(jù)同步方法及系統(tǒng)中,獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù),將模型數(shù)據(jù)所對(duì)應(yīng)的編碼數(shù)據(jù)發(fā)送出去,以將發(fā)生了變化的模型數(shù)據(jù)同步到接收端,并更新于虛擬手術(shù)中,由于僅發(fā)送發(fā)生了變化的模型數(shù)據(jù),減少了數(shù)據(jù)傳輸量,進(jìn)而提高虛擬手術(shù)中的同步率。
圖1為一個(gè)實(shí)施例中虛擬手術(shù)中的數(shù)據(jù)同步方法的流程圖;圖2為另一個(gè)實(shí)施例中虛擬手術(shù)中的數(shù)據(jù)同步方法的流程圖;圖3為一個(gè)實(shí)施例中對(duì)模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù)的方法流程圖;圖4為一個(gè)實(shí)施例中虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)示意圖;圖5為另一個(gè)實(shí)施例中虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)示意圖;圖6為一個(gè)實(shí)施例中編碼模塊的結(jié)構(gòu)示意圖;圖7為另一個(gè)實(shí)施例中虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)示意圖;圖8為一個(gè)實(shí)施例中虛擬骨科機(jī)器人手術(shù)模擬訓(xùn)練過程中操作端的運(yùn)行狀態(tài)示意圖;圖9為圖8中 對(duì)操作端的虛擬骨科機(jī)器人手術(shù)模型訓(xùn)練進(jìn)行同步的狀態(tài)示意圖。具體實(shí)施方式
在一個(gè)實(shí)施例中,如圖1所示,一種虛擬手術(shù)中的數(shù)據(jù)同步方法,包括如下步驟:步驟S110,獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù)。本實(shí)施例中,虛擬手術(shù)中通過幾何模型來描述涉及的模型,該幾何模型可為三角片模型,相對(duì)的,模型數(shù)據(jù)為一種數(shù)據(jù)結(jié)構(gòu),用于記載多個(gè)頂點(diǎn)以及多個(gè)三角形,是虛擬手術(shù)中手機(jī)工具模型和/或手術(shù)對(duì)象模型中發(fā)生了變化的模型數(shù)據(jù)。進(jìn)一步的,獲取虛擬手術(shù)中的模型數(shù)據(jù),并使得虛擬手術(shù)中數(shù)據(jù)同步的接收端所展示的虛擬手術(shù)過程擁有三維效果,因此,不僅減少了傳輸?shù)臄?shù)據(jù)量,也大大提高了虛擬手術(shù)同步過程中的顯示效果,更為逼真地同步虛擬手術(shù)。在一個(gè)實(shí)施例中,上述步驟SllO的具體過程為:計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)。本實(shí)施例中,在虛擬手術(shù)中,手術(shù)工具模型是手術(shù)器械的幾何模型,操作者直接調(diào)用所需的手術(shù)工具模型即可,手術(shù)對(duì)象模型是手術(shù)工具模型所要操作的對(duì)象物體,包括了頂點(diǎn)、邊和面三個(gè)數(shù)組。手術(shù)工具模型和手術(shù)對(duì)象模型發(fā)生交互碰撞時(shí)為消除數(shù)據(jù)同步過程中模型數(shù)據(jù)之間的相互影響,直接將手術(shù)工具模型中的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)用于虛擬手術(shù)中的數(shù)據(jù)同步。由于將手術(shù)工具模型中的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)作為模型數(shù)據(jù),使得多個(gè)連續(xù)的模型數(shù)據(jù)之間不會(huì)相互影響,這將使數(shù)據(jù)同步過程適應(yīng)于現(xiàn)有的網(wǎng)絡(luò)傳輸,便于實(shí)現(xiàn)網(wǎng)絡(luò)中的實(shí)時(shí)傳輸,提高同步率。此外,這一虛擬手術(shù)中的數(shù)據(jù)同步過程僅僅對(duì)手術(shù)工具模型中的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)等模型數(shù)據(jù)進(jìn)行傳輸,而不需要將整個(gè)手術(shù)工具模型和手術(shù)對(duì)象模型進(jìn)行傳輸,大大地降低了傳輸?shù)臄?shù)據(jù)量。在另一個(gè)實(shí)施例中,如圖2所示,上述步驟SllO之前還包括:步驟S210,檢測(cè)手術(shù)工具模型和手術(shù)對(duì)象模型是否發(fā)生交互,若是,則進(jìn)入步驟S230,若否,則進(jìn)入步驟S250。本實(shí)施例中,對(duì)手術(shù)工具模型和手術(shù)對(duì)象模型進(jìn)行碰撞檢測(cè),以判斷是否發(fā)生了交互,若是,則說明手術(shù)工具模型的位置以及手術(shù)對(duì)象模型發(fā)生了變化,因此,需要對(duì)其進(jìn)行計(jì)算,以得到發(fā)生了變化的模型數(shù)據(jù),若判斷到手術(shù)工具模型和手術(shù)對(duì)象模型并未發(fā)生碰撞,則只需獲取到手術(shù)工具模型中的變換矩陣即可。步驟S230,計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)。步驟S250,計(jì)算手術(shù)工具模型的變換矩陣。步驟S120,對(duì)模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù)。本實(shí)施例中,為與網(wǎng)絡(luò)傳輸中的應(yīng)用層相適應(yīng),應(yīng)當(dāng)對(duì)模型數(shù)據(jù)進(jìn)行編碼,獲取到的模型數(shù)據(jù)通常是以字符串的形式進(jìn)行存儲(chǔ)的,因此可將字符串進(jìn)行分組,在字符串的分組中還應(yīng)當(dāng)將模型數(shù)據(jù)所對(duì)應(yīng)的字符串與長度標(biāo)記相關(guān)聯(lián),該長度標(biāo)記用于標(biāo)識(shí)分組中模型數(shù)據(jù)所對(duì)應(yīng)的字符串的長度,實(shí)現(xiàn)了傳輸數(shù)據(jù)的一致性和連續(xù)性,并保證后續(xù)同步過程中數(shù)據(jù)解析的正確性。進(jìn)一步的,可將分組中的長度標(biāo)記設(shè)定為固定的字節(jié)長度,例如,長度標(biāo)記可為4字節(jié)長度,以進(jìn)一步保證數(shù)據(jù)解析的正確性。例如,分組中所形成的數(shù)據(jù)格式可以為[Item長度+Item字符串],多個(gè)分組依次連接便構(gòu)成了用于進(jìn)行網(wǎng)絡(luò)傳輸?shù)木幋a數(shù)據(jù),該編碼數(shù)據(jù)實(shí)質(zhì)為字符串流。每一分組中模型數(shù)據(jù)所對(duì)應(yīng)的字符串長度是由存儲(chǔ)的數(shù)據(jù)量決定的,也就是由手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中的形變頂點(diǎn)的數(shù)量決定。在一個(gè)實(shí)施例中,如圖3所示,上述步驟S120的具體過程為:步驟S121,將模型數(shù)據(jù)轉(zhuǎn)換為字符串。步驟S123,根據(jù)字符串的存儲(chǔ)地址將該地址對(duì)應(yīng)的字符串構(gòu)造成編碼數(shù)據(jù),并將編碼數(shù)據(jù)中字符串的長度與字符串關(guān)聯(lián)。本實(shí)施例中,虛擬手術(shù)中獲取的發(fā)生了變化的模型數(shù)據(jù)是以字符串的形式有序存儲(chǔ)的,根據(jù)存儲(chǔ)地址依次讀取出對(duì)應(yīng)的字符串,每一存儲(chǔ)地址所對(duì)應(yīng)的字符串即可作為一個(gè)分組,在每一分組中將該字符串與其對(duì)應(yīng)的長度相關(guān)聯(lián)形成編碼數(shù)據(jù)。在一個(gè)實(shí)施例中,存儲(chǔ)地址為字符串存儲(chǔ)于緩沖區(qū)的地址。步驟S125,連接構(gòu)造的編碼數(shù)據(jù)。本實(shí)施例中,將多個(gè)構(gòu)造的編碼數(shù)據(jù)依次首尾相接得到包含多個(gè)編碼數(shù)據(jù)組成的字符串流,進(jìn)而方便數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸。在一個(gè)實(shí)施例中,上述步驟S125的具體過程為:獲取構(gòu)造的編碼數(shù)據(jù)的長度,分別將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及構(gòu)造的編碼數(shù)據(jù)依次連接。本實(shí)施例中,每一構(gòu)造的編碼數(shù)據(jù)對(duì)應(yīng)了一個(gè)分組,即分組的長度即為構(gòu)造的編碼數(shù)據(jù)的長度。開始標(biāo)識(shí)符為預(yù)定長度的字符,例如,可為I字節(jié),設(shè)置于多個(gè)編碼數(shù)據(jù)組成的字符串流的前端。校驗(yàn)和用于驗(yàn)證接收到的字符串流的正確性和完整性。具體的,最終連接形成的字符串流所對(duì)應(yīng)的格式樣例為:開始標(biāo)識(shí)符+獲取的長度+校驗(yàn)和+[Iteml長度+Iteml字符串] + [Item2長度+Item2字符串]+......+ [ItemN長度+ItemN字符串],
其中,[ItemN長度+ItemN字符串]為第N個(gè)分組所編碼數(shù)據(jù)所對(duì)應(yīng)的字符串及其長度。將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及構(gòu)造的編碼數(shù)據(jù)依次連接起來,在后續(xù)的解析過程中,將首先讀取開始標(biāo)識(shí)符,通過開始標(biāo)識(shí)符將獲知當(dāng)前接收的字符串流開始進(jìn)行解析,然后根據(jù)與開始標(biāo)識(shí)符相連接的獲取的長度可以獲知字符串流中分組的長度,此時(shí)讀取校驗(yàn)和,并檢驗(yàn)字符串流的正確性,如果發(fā)生錯(cuò)誤則將其丟棄,驗(yàn)證了字符串流的正確性之后,根據(jù)讀取到的獲取的長度進(jìn)入循環(huán),在循環(huán)中依次解析對(duì)字符串流中的分組,以重建發(fā)生交互的模型數(shù)據(jù),其中,循環(huán)次數(shù)即為獲取的長度。在循環(huán)解析的過程中,若讀取到字符串流中的末端數(shù)據(jù)不完整,則暫停對(duì)該末端數(shù)據(jù)的解析,待接收完畢之后繼續(xù)解析。步驟S130,讀取編碼數(shù)據(jù)并發(fā)送。本實(shí)施例中,讀取編碼數(shù)據(jù)之后,通過RTP協(xié)議(Real-time Transport Protocol,實(shí)時(shí)傳輸協(xié)議)、UDP協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)包協(xié)議)或者TCP協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)進(jìn)行編碼數(shù)據(jù)的傳輸。進(jìn)一步的,由于通過UDP協(xié)議能夠能夠保證接收到完整的數(shù)據(jù)包,因此,通過UDP協(xié)議進(jìn)行編碼數(shù)據(jù)的傳輸保證了傳輸?shù)木幋a數(shù)據(jù)的正確性和完整性。在一個(gè)實(shí)施例中,在對(duì)編碼數(shù)據(jù)的發(fā)送過程中,可設(shè)定時(shí)間間隔,即每隔一定的時(shí)間間隔便進(jìn)行一次編碼數(shù)據(jù)的發(fā)送,例如,該時(shí)間間隔可為40ms ;相對(duì)的,在虛擬手術(shù)中進(jìn)行同步的接收端也設(shè)定時(shí)間間隔,每隔一個(gè)相應(yīng)的時(shí)間間隔便進(jìn)行一次編碼數(shù)據(jù)的接收,實(shí)現(xiàn)數(shù)據(jù)的周期性傳輸。在一個(gè)實(shí)施例中,上述步驟S120之后還包括:緩存編碼數(shù)據(jù)。本實(shí)施例中,將編碼數(shù)據(jù)存儲(chǔ)于緩沖區(qū)中,以待發(fā)送,且通過存儲(chǔ)于緩沖區(qū)這一緩存機(jī)制進(jìn)行編碼數(shù)據(jù)的存儲(chǔ),也進(jìn)一步提高了編碼數(shù)據(jù)的存取速度,以提高編碼數(shù)據(jù)的同
I K少率。上述步驟S130之后還包括:接收發(fā)送的編碼數(shù)據(jù),并緩存。本實(shí)施例中,虛擬手術(shù)中進(jìn)行同步的接收端不斷接收編碼數(shù)據(jù),在接收到虛擬手術(shù)的操作端所發(fā)送的編碼數(shù)據(jù)之后,也將數(shù)據(jù)存入緩沖區(qū)中。虛擬手術(shù)的操作端和編碼數(shù)據(jù)的接收端均對(duì)編碼數(shù)據(jù)進(jìn)行了緩存,通過這一雙緩沖過程,無論以何種協(xié)議進(jìn)行編碼數(shù)據(jù)的傳輸,均能夠保證整個(gè)數(shù)據(jù)同步過程不會(huì)受到網(wǎng)絡(luò)帶寬和性能波動(dòng)的影響,并且實(shí)現(xiàn)了最大限度地利用網(wǎng)絡(luò)帶寬,進(jìn)而提高了虛擬手術(shù)中的同步率,滿足虛擬手術(shù)中較高的交互碰撞檢測(cè)采樣率。步驟S140,通過接收的編碼數(shù)據(jù)進(jìn)行重建得到發(fā)生變化的模型數(shù)據(jù),并更新于虛擬手術(shù)中。本實(shí)施例中,對(duì)接收的編碼數(shù)據(jù)進(jìn)行解析,以重建得到虛擬手術(shù)操作端中發(fā)生了變化的模型數(shù)據(jù),并將重建得到的模型數(shù)據(jù)更新到接收端所同步顯示的虛擬手術(shù)中。在一個(gè)實(shí)施例中,如圖4所示,一種虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),包括數(shù)據(jù)獲取模塊10、編碼模塊20、發(fā)送模塊30以及模型更新模塊40。數(shù)據(jù)獲取模塊10,用于獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù)。本實(shí)施例中,虛擬手術(shù)中通過幾何模型來描述涉及的模型,該幾何模型可為三角片模型,相對(duì)的,模型數(shù)據(jù)為一種數(shù)據(jù)結(jié)構(gòu),用于記載多個(gè)頂點(diǎn)以及多個(gè)三角形,是虛擬手術(shù)中手機(jī)工具模型和/或手術(shù)對(duì)象模型中發(fā)生了變化的模型數(shù)據(jù)。進(jìn)一步的,數(shù)據(jù)獲取模塊10獲取虛擬手術(shù)中的模型數(shù)據(jù),并使得虛擬手術(shù)中數(shù)據(jù)同步的接收端所展示的虛擬手術(shù)過程擁有三維效果,因此,不僅減少了傳輸?shù)臄?shù)據(jù)量,也大大提高了虛擬手術(shù)同步過程中的顯示效果,更為逼真地同步虛擬手術(shù)。在一個(gè)實(shí)施例中,數(shù)據(jù)獲取模塊10還用于計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)。本實(shí)施例中,在虛擬手術(shù)中,手術(shù)工具模型是手術(shù)器械的幾何模型,操作者直接調(diào)用所需的手術(shù)工具模型即可,手術(shù)對(duì)象模型是手術(shù)工具模型所要操作的對(duì)象物體,包括了頂點(diǎn)、邊和面三個(gè)數(shù)組。手術(shù)工具模型和手術(shù)對(duì)象模型發(fā)生交互碰撞時(shí)為消除數(shù)據(jù)同步過程中模型數(shù)據(jù)之間的相互影響,數(shù)據(jù)獲取模塊10直接將手術(shù)工具模型中的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)用于虛擬手術(shù)中的數(shù)據(jù)同步。由于將手術(shù)工具模型中的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)作為模型數(shù)據(jù),使得多個(gè)連續(xù)的模型數(shù)據(jù)之間不會(huì)相互影響,這將使數(shù)據(jù)同步過程適應(yīng)于現(xiàn)有的網(wǎng)絡(luò)傳輸,便于實(shí)現(xiàn)網(wǎng)絡(luò)中的實(shí)時(shí)傳輸,提高同步率。此外,這一虛擬手術(shù)中的數(shù)據(jù)同步過程僅僅對(duì)手術(shù)工具模型中的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)等模型數(shù)據(jù)進(jìn)行傳輸,而不需要將整個(gè)手術(shù)工具模型和手術(shù)對(duì)象模型進(jìn)行傳輸,大大地降低了傳輸?shù)臄?shù)據(jù)量。在另一個(gè)實(shí)施例中,如圖5所示,上述虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng)還包括:檢測(cè)模塊50,用于檢測(cè)手術(shù)工具模型和手術(shù)對(duì)象模型是否發(fā)生交互,若是,則通知數(shù)據(jù)獲取模塊10進(jìn)行手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)的計(jì)算,若否,則該數(shù)據(jù)獲取模塊10還用于計(jì)算手術(shù)工具模型的變換矩陣。本實(shí)施例中,檢測(cè)模塊50對(duì)手術(shù)工具模型和手術(shù)對(duì)象模型進(jìn)行碰撞檢測(cè),以判斷是否發(fā)生了交互,若是,則說明手術(shù)工具模型的位置以及手術(shù)對(duì)象模型發(fā)生了變化,因此,需要數(shù)據(jù)獲取模塊10對(duì)其進(jìn)行計(jì)算,以得到發(fā)生了變化的模型數(shù)據(jù),若檢測(cè)模塊50判斷到手術(shù)工具模型和手術(shù)對(duì)象模型并未發(fā)生碰撞,則只需數(shù)據(jù)獲取模塊10獲取到手術(shù)工具模型中的變換矩陣即可。編碼模塊20,用于對(duì)模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù)。本實(shí)施例中,為與網(wǎng)絡(luò)傳輸中的應(yīng)用層相適應(yīng),應(yīng)當(dāng)對(duì)模型數(shù)據(jù)進(jìn)行編碼,獲取到的模型數(shù)據(jù)通常是以字符串的形式進(jìn)行存儲(chǔ)的,因此編碼模塊20可將字符串進(jìn)行分組,在字符串的分組中還應(yīng)當(dāng)將模型數(shù)據(jù)所對(duì)應(yīng)的字符串與長度標(biāo)記相關(guān)聯(lián),該長度標(biāo)記用于標(biāo)識(shí)分組中模型數(shù)據(jù)所對(duì)應(yīng)的字符串的長度,實(shí)現(xiàn)了傳輸數(shù)據(jù)的一致性和連續(xù)性,并保證后續(xù)同步過程中數(shù)據(jù)解析的正確性。進(jìn)一步的,編碼模塊20可將分組中的長度標(biāo)記設(shè)定為固定的字節(jié)長度,例如,長度標(biāo)記可為4字節(jié)長度,以進(jìn)一步保證數(shù)據(jù)解析的正確性。例如,分組中所形成的數(shù)據(jù)格式可以為[Item長度+Item字符串],多個(gè)分組依次連接便構(gòu)成了用于進(jìn)行網(wǎng)絡(luò)傳輸?shù)木幋a數(shù)據(jù),該編碼數(shù)據(jù)實(shí)質(zhì)為字符串流。每一分組中模型數(shù)據(jù)所對(duì)應(yīng)的字符串長度是由存儲(chǔ)的數(shù)據(jù)量決定的,也就是由手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中的形變頂點(diǎn)的數(shù)量決定。在一個(gè)實(shí)施例中,如圖6所示,上述編碼模塊20包括:
轉(zhuǎn)換單元210,用于將模型數(shù)據(jù)轉(zhuǎn)換為字符串。構(gòu)造單元230,用于根據(jù)字符串的存儲(chǔ)地址將該地址對(duì)應(yīng)的字符串構(gòu)造成編碼數(shù)據(jù),并將編碼數(shù)據(jù)中字符串的長度與字符串關(guān)聯(lián)。本實(shí)施例中,虛擬手術(shù)中獲取的發(fā)生了變化的模型數(shù)據(jù)是以字符串的形式有序存儲(chǔ)的,構(gòu)造單元230根據(jù)存儲(chǔ)地址依次讀取出對(duì)應(yīng)的字符串,每一存儲(chǔ)地址所對(duì)應(yīng)的字符串即可作為一個(gè)分組,在每一分組中將該字符串與其對(duì)應(yīng)的長度相關(guān)聯(lián)形成編碼數(shù)據(jù)。在一個(gè)實(shí)施例中,存儲(chǔ)地址為字符串存儲(chǔ)于緩沖區(qū)的地址。連接單元250,用于連接構(gòu)造的編碼數(shù)據(jù)。本實(shí)施例中,連接單元250將多個(gè)構(gòu)造的編碼數(shù)據(jù)依次首尾相接得到包含多個(gè)編碼數(shù)據(jù)組成的字符串流,進(jìn)而方便數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸。在一個(gè)實(shí)施例中,連接單元250還用于獲取構(gòu)造的編碼數(shù)據(jù)的長度,分別將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及構(gòu)造的編碼數(shù)據(jù)依次連接。本實(shí)施例中,每一構(gòu)造的編碼數(shù)據(jù)對(duì)應(yīng)了一個(gè)分組,即分組的長度即為構(gòu)造的編碼數(shù)據(jù)的長度。開始標(biāo)識(shí)符為預(yù)定長度的字符,例如,可為I字節(jié),設(shè)置于多個(gè)編碼數(shù)據(jù)組成的字符串流的前端。校驗(yàn)和用于驗(yàn)證接收到的字符串流的正確性和完整性。具體的,最終連接單元250連接形成的字符串流所對(duì)應(yīng)的格式樣例為:開始標(biāo)識(shí)符+獲取的長度+校驗(yàn)
和+[Iteml 長度+Iteml 字符串] + [Item2 長度+Item2 字符串]+......+ [ItemN 長度+ItemN
字符串],其中,[ItemN長度+ItemN字符串]為第N個(gè)分組中編碼數(shù)據(jù)對(duì)應(yīng)的字符串及其長度。發(fā)送模塊30,用于讀取編碼數(shù)據(jù)并發(fā)送。本實(shí)施例中,發(fā)送模塊30讀取編碼數(shù)據(jù)之后,通過RTP協(xié)議(Real-timeTransport Protocol,實(shí)時(shí)傳輸協(xié)議)、UDP 協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)包協(xié)議)或者TCP協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)進(jìn)行編碼數(shù)據(jù)的傳輸。進(jìn)一步的,由于通過UDP協(xié)議能夠能夠保證接收到完整的數(shù)據(jù)包,因此,發(fā)送模塊30通過UDP協(xié)議進(jìn)行編碼數(shù)據(jù)的傳輸保證了傳輸?shù)木幋a數(shù)據(jù)的正確性和完整性。在一個(gè)實(shí)施例中,在對(duì)編碼數(shù)據(jù)的發(fā)送過程中,發(fā)送模塊30可設(shè)定時(shí)間間隔,SP每隔一定的時(shí)間間隔便進(jìn)行一次編碼數(shù)據(jù)的發(fā)送,例如,該時(shí)間間隔可為40ms ;相對(duì)的,在虛擬手術(shù)中進(jìn)行同步的接收端也設(shè)定時(shí)間間隔,每隔一個(gè)相應(yīng)的時(shí)間間隔便進(jìn)行一次編碼數(shù)據(jù)的接收,實(shí)現(xiàn)數(shù)據(jù)的周期性傳輸。在另一個(gè)實(shí)施例中,如圖7所示,上述虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng)還包括緩存模塊60以及接收模塊70,其中:緩存模塊60,用于緩存編碼數(shù)據(jù)。本實(shí)施例中,緩存模塊60將編碼數(shù)據(jù)存儲(chǔ)于緩沖區(qū)中,以待發(fā)送,且通過存儲(chǔ)于緩沖區(qū)這一緩存機(jī)制進(jìn)行編碼數(shù)據(jù)的存儲(chǔ),也進(jìn)一步提高了編碼數(shù)據(jù)的存取速度,以提高編碼數(shù)據(jù)的同步率。接收模塊70,用于接收發(fā)送的編碼數(shù)據(jù),并緩存。本實(shí)施例中,虛擬手術(shù)中進(jìn)行同步的接收端不斷接收編碼數(shù)據(jù),在接收模塊70接收到虛擬手術(shù)的操作端所發(fā)送的編碼數(shù)據(jù)之后,也將數(shù)據(jù)存入緩沖區(qū)中。虛擬手術(shù)的操作端和編碼數(shù)據(jù)的接收端均對(duì)編碼數(shù)據(jù)進(jìn)行了緩存,通過這一雙緩沖過程,無論以何種協(xié)議進(jìn)行編碼數(shù)據(jù)的傳輸,均能夠保證整個(gè)數(shù)據(jù)同步過程不會(huì)受到網(wǎng)絡(luò)帶寬和性能波動(dòng)的影響,并且實(shí)現(xiàn)了最大限度地利用網(wǎng)絡(luò)帶寬,進(jìn)而提高了虛擬手術(shù)中的同步率,滿足虛擬手術(shù)中較高的交互碰撞檢測(cè)采樣率。模型更新模塊40,用于通過接收的編碼數(shù)據(jù)進(jìn)行重建得到發(fā)生變化的模型數(shù)據(jù),并更新于虛擬手術(shù)中。本實(shí)施例中,模型更新模塊40對(duì)接收的編碼數(shù)據(jù)進(jìn)行解析,以重建得到虛擬手術(shù)操作端中發(fā)生了變化的模型數(shù)據(jù),并將重建得到的模型數(shù)據(jù)更新到接收端所同步顯示的虛擬手術(shù)中。具體的,連接單元250將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及構(gòu)造的編碼數(shù)據(jù)依次連接起來,在后續(xù)的解析過程中,模型更新模塊40將首先讀取開始標(biāo)識(shí)符,通過開始標(biāo)識(shí)符將獲知當(dāng)前接收的字符串流開始進(jìn)行解析,然后根據(jù)與開始標(biāo)識(shí)符相連接的獲取的長度可以獲知字符串流中分組的長度,此時(shí)讀取校驗(yàn)和,并檢驗(yàn)字符串流的正確性,如果發(fā)生錯(cuò)誤則將其丟棄,驗(yàn)證了字符串流的正確性之后,根據(jù)讀取到的獲取的長度進(jìn)入循環(huán),在循環(huán)中依次解析對(duì)字符串流中的分組,以重建發(fā)生交互的模型數(shù)據(jù),其中,循環(huán)次數(shù)即為獲取的長度。在循環(huán)解析的過程中,若讀取到字符串流中的末端數(shù)據(jù)不完整,則暫停對(duì)該末端數(shù)據(jù)的解析,待接收完畢之后繼續(xù)解析。如圖8至9所示,將上述虛擬手術(shù)的數(shù)據(jù)同步方法及系統(tǒng)應(yīng)用于虛擬顧客機(jī)器人手術(shù)模型訓(xùn)練時(shí),對(duì)手術(shù)工具模型與手術(shù)對(duì)象模型之間的交互碰撞為100次/秒,在運(yùn)行過程中,無論使用IOM的交換機(jī)還是100M的交換機(jī)進(jìn)行傳輸均能夠正確地進(jìn)行數(shù)據(jù)同步。上述虛擬手術(shù)中的數(shù)據(jù)同步方法及系統(tǒng)中,獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù),將模型數(shù)據(jù)所對(duì)應(yīng)的編碼數(shù)據(jù)發(fā)送出去,以將發(fā)生了變化的模型數(shù)據(jù)同步到接收端,并更新于虛擬手術(shù)中,由于僅發(fā)送發(fā)生了變化的模型數(shù)據(jù),減少了數(shù)據(jù)傳輸量,進(jìn)而提高虛擬手術(shù)中的同步率。以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種虛擬手術(shù)中的數(shù)據(jù)同步方法,包括如下步驟: 獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù); 對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù); 讀取所述編碼數(shù)據(jù)并發(fā)送; 通過接收的編碼數(shù)據(jù)進(jìn)行重建得到發(fā)生變化的模型數(shù)據(jù),并更新于所述虛擬手術(shù)中。
2.根據(jù)權(quán)利要求1所述的虛擬手術(shù)中的數(shù)據(jù)同步方法,其特征在于,所述獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù)的步驟為: 計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)。
3.根據(jù)權(quán)利要求2所述的虛擬手術(shù)中的數(shù)據(jù)同步方法,其特征在于,所述計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)的步驟之前還包括: 檢測(cè)所述手術(shù)工具模型和手術(shù)對(duì)象模型是否發(fā)生交互,若是,則進(jìn)入所述計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)的步驟,若否,則所述獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù)的步驟為: 計(jì)算所述手術(shù)工具模型的變換矩陣。
4.根據(jù)權(quán)利要求1所述的虛擬手術(shù)中的數(shù)據(jù)同步方法,其特征在于,所述對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù)的步驟為: 將所述模型數(shù)據(jù)轉(zhuǎn)換為字符串; 根據(jù)所述字符串在內(nèi)存中的地址將所述地址對(duì)應(yīng)的字符串構(gòu)造成編碼數(shù)據(jù),并將所述編碼數(shù)據(jù)中字符串的長度與所述字符串關(guān)聯(lián); 連接所述構(gòu)造的編碼數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的虛擬手術(shù)中的數(shù)據(jù)同步方法,其特征在于,所述連接所述構(gòu)造的編碼數(shù)據(jù)的步驟為: 獲取所述構(gòu)造的編碼數(shù)據(jù)的長度; 分別將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及所述構(gòu)造的編碼數(shù)據(jù)依次連接。
6.根據(jù)權(quán)利要求1所述的虛擬手術(shù)中的數(shù)據(jù)同步方法,其特征在于,所述對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù)的步驟之后還包括: 緩存所述編碼數(shù)據(jù); 所述讀取所述編碼數(shù)據(jù)并發(fā)送的步驟之后還包括: 接收所述發(fā)送的編碼數(shù)據(jù),并緩存。
7.—種虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),其特征在于,包括: 數(shù)據(jù)獲取模塊,用于獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù); 編碼模塊,用于對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù); 發(fā)送模塊,用于讀取所述編碼數(shù)據(jù)并發(fā)送; 模型更新模塊,用于通過接收的編碼數(shù)據(jù)進(jìn)行重建得到發(fā)生變化的模型數(shù)據(jù),并更新于所述虛擬手術(shù)中。
8.根據(jù)權(quán)利要求7所述的虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),其特征在于,所述數(shù)據(jù)獲取模塊還用于計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn)。
9.根據(jù)權(quán)利要求8所述的虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),其特征在于,還包括: 檢測(cè)模塊,用于檢測(cè)所述手術(shù)工具模型和手術(shù)對(duì)象模型是否發(fā)生交互,若是,則通知所述數(shù)據(jù)獲取模塊計(jì)算手術(shù)工具模型的變換矩陣和手術(shù)對(duì)象模型中發(fā)生形變的頂點(diǎn),若否,則 所述數(shù)據(jù)獲取模塊還用于計(jì)算所述手術(shù)工具模型的變換矩陣。
10.根據(jù)權(quán)利要求7所述的虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),其特征在于,所述編碼模塊包括: 轉(zhuǎn)換單元,用于將模型數(shù)據(jù)轉(zhuǎn)換為字符串; 構(gòu)造單元,用于根據(jù)所述字符串的存儲(chǔ)地址將所述地址對(duì)應(yīng)的字符串構(gòu)造成編碼數(shù)據(jù),并將所述編碼數(shù)據(jù)中字符串的長度與所述字符串關(guān)聯(lián); 連接單元,用于連接所述構(gòu)造的編碼數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),其特征在于,所述連接單元還用于獲取構(gòu)造的編碼數(shù)據(jù)的長度,分別將開始標(biāo)識(shí)符、獲取的長度、校驗(yàn)和以及所述構(gòu)造的編碼數(shù)據(jù)依次連接。
12.根據(jù)權(quán)利要求7所述的虛擬手術(shù)中的數(shù)據(jù)同步系統(tǒng),其特征在于,還包括: 緩存模塊,用于緩存所述編碼數(shù)據(jù); 接收模塊,用于接收所 述發(fā)送的編碼數(shù)據(jù),并緩存。
全文摘要
一種虛擬手術(shù)中的數(shù)據(jù)同步方法,包括如下步驟獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù);對(duì)所述模型數(shù)據(jù)進(jìn)行編碼得到對(duì)應(yīng)的編碼數(shù)據(jù);讀取所述編碼數(shù)據(jù)并發(fā)送;通過接收的編碼數(shù)據(jù)進(jìn)行重建得到發(fā)生變化的模型數(shù)據(jù),并更新于所述虛擬手術(shù)中。上述虛擬手術(shù)中的數(shù)據(jù)同步方法及系統(tǒng)中,獲取虛擬手術(shù)中發(fā)生變化的模型數(shù)據(jù),將模型數(shù)據(jù)所對(duì)應(yīng)的編碼數(shù)據(jù)發(fā)送出去,以將發(fā)生了變化的模型數(shù)據(jù)同步到接收端,并更新于虛擬手術(shù)中,由于僅發(fā)送發(fā)生了變化的模型數(shù)據(jù),減少了數(shù)據(jù)傳輸量,進(jìn)而提高虛擬手術(shù)中的同步率。
文檔編號(hào)G09B23/28GK103166987SQ20111041223
公開日2013年6月19日 申請(qǐng)日期2011年12月12日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者謝永明, 劉平, 朱壇超, 李建英, 張賀曄, 王平安 申請(qǐng)人:中國科學(xué)院深圳先進(jìn)技術(shù)研究院