国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity3D的虛擬康復(fù)機(jī)器人實(shí)時(shí)動(dòng)態(tài)演示

2020-07-10 09:16:58劉方全林澤磊劉偉堯李景濤
科學(xué)與財(cái)富 2020年13期

劉方全 林澤磊 劉偉堯 李景濤

摘 要:選取已完成的上肢康復(fù)機(jī)器人本體為研究對象,使用SolidWork軟件對上肢康復(fù)機(jī)器人進(jìn)行三維建模,使用3DsMax對模型附加材質(zhì)調(diào)整坐標(biāo)軸等。將調(diào)整好的三維模型導(dǎo)入U(xiǎn)nity3D軟件當(dāng)中,并且用MFC建立康復(fù)機(jī)器人的控制面板。控制面板上各電動(dòng)機(jī)的轉(zhuǎn)動(dòng)參數(shù)一方面同過串口下發(fā)給康復(fù)機(jī)器人本體,控制其運(yùn)動(dòng)。另一方面通過Socket通信傳遞給Unity3D,控制康復(fù)機(jī)器人模型的運(yùn)動(dòng)。通過康復(fù)機(jī)器人模型的運(yùn)動(dòng)實(shí)時(shí)展現(xiàn)機(jī)器人本體的運(yùn)動(dòng)狀態(tài)。

關(guān)鍵詞:上肢康復(fù)機(jī)器人;Unity3D;Socket通信

1 三維模型的建立

1.1 上肢康復(fù)機(jī)器人模型的建立

上肢康復(fù)機(jī)器人是比較復(fù)雜的機(jī)械系統(tǒng),為了保證仿真結(jié)果與真實(shí)接近,所有的零件都按照電子版圖提供的數(shù)據(jù)進(jìn)行1:1建模,使用SolidWork軟件建立各個(gè)零件的實(shí)體模型,并將生成的零件裝配成總體,生成stl文件格式,導(dǎo)入到3DsMax中,在對各個(gè)零件添加材質(zhì)和貼圖。

1.2 人物模型的建立

為使上肢康復(fù)機(jī)器人的模擬動(dòng)畫能真實(shí)的體現(xiàn)上肢康復(fù)機(jī)器人本體的運(yùn)動(dòng)狀況,人物模型的尺寸應(yīng)充分考慮到康復(fù)機(jī)器人模型的尺寸,應(yīng)使人物模型的腕關(guān)節(jié)、肘關(guān)節(jié)、肩關(guān)節(jié)與康復(fù)機(jī)器人的各關(guān)節(jié)相對應(yīng),盡量保證人物模型與康復(fù)機(jī)器人的各關(guān)節(jié)同軸,這樣能使展示效果更加逼真。

人物模型分為對頭部和身體的建模,在3DsMax中采用多邊形建模方法,建立人物的初步模型,然后對人物模型添加平滑組,這樣可以增加模型的光滑度,然后為人物模型添加材質(zhì)和貼圖形成最終的效果圖。

1.3 骨骼和綁定的添加與調(diào)整

人物模型必須綁定骨骼才能實(shí)現(xiàn)模型的運(yùn)動(dòng),首先用biped建立一個(gè)骨骼系統(tǒng),在運(yùn)動(dòng)命令面板,點(diǎn)擊biped卷展覽的figure mode。在各視圖中,使用旋轉(zhuǎn)縮放位移的方式,調(diào)整骨骼的位置與模型的位置,讓二者對齊,調(diào)整好其中的一部分之后,復(fù)制到另一半上。

骨骼建立完成之后必須與模型進(jìn)行綁定,常用的綁定方式有skin和physique兩種綁定方式,一般來說兩者沒有本質(zhì)的區(qū)別,在進(jìn)行動(dòng)畫制作時(shí)都可以使用。但是如果使用physique將骨骼與模型進(jìn)行綁定,將生成的新模型導(dǎo)入到Unity3D時(shí),會(huì)產(chǎn)生一些列問題。而使用skin不會(huì)存在這樣的問題,所以此次綁定使用skin進(jìn)行綁定。

1.4 模型的導(dǎo)出及注意的問題

在3DsMax中的運(yùn)動(dòng)控制命令中,將人物模型和康復(fù)機(jī)器人模型進(jìn)行調(diào)整,最終效果圖如圖1所示,并將生成的模型生成Fbx格式導(dǎo)入到Unity3D當(dāng)中,導(dǎo)出的模型應(yīng)主要考慮3方面:坐標(biāo)軸、比例和貼圖。

2 康復(fù)機(jī)器人控制面板與Unity 3D之間的Socket通信

2.1 Socket簡介

Socket通常也叫作“套接字”,是一種建立在傳輸層協(xié)議上的通信機(jī)制。最初是由美國加州Berklry大學(xué)提出,為UNIX操作系統(tǒng)開發(fā)的網(wǎng)絡(luò)通信接口,它定義了兩臺(tái)計(jì)算機(jī)間的通信規(guī)范(也就是一種編程規(guī)范)[2]。Socket通信屏蔽了網(wǎng)絡(luò)傳輸傳輸中低層通信協(xié)議的復(fù)雜性和差異性,使任意兩臺(tái)安裝TCP軟件的計(jì)算機(jī)之間通信成為了可能,而且因?yàn)镾ocket通信具有易于理解,便于掌握等特點(diǎn),目前已經(jīng)成為TCP/IP網(wǎng)絡(luò)最為通用的API,也是在Internet上進(jìn)行應(yīng)用開發(fā)最為通用的API[3]。

2.2 Socket基本類型

Socket通信主要有三種類型:流式套接字、數(shù)據(jù)報(bào)套接字和原始套接字。流式套接字是一種面向連接的套接字,能夠?qū)崿F(xiàn)無差錯(cuò)無重復(fù)的順序數(shù)據(jù)傳輸,內(nèi)設(shè)流量控制,避免數(shù)據(jù)流超限。數(shù)據(jù)被看成字節(jié)流,無長度限制。數(shù)據(jù)報(bào)套接字是一種面向無連接的套接字,數(shù)據(jù)通過相互獨(dú)立的報(bào)文進(jìn)行傳輸,是無序的,并且不能保證數(shù)據(jù)傳輸?shù)目煽啃裕瑪?shù)據(jù)的最大傳輸最大長度為64KB。原始套接字允許對底層協(xié)議IP活I(lǐng)CMP直接訪問,主要用于網(wǎng)絡(luò)協(xié)議的測試,一般不會(huì)提供給普通用戶[4]。為了保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,此次通信用到的是面向連接的流式套接字。

2.3 Socket編程主要流程

Socket通信才用來目前網(wǎng)絡(luò)編程流行的ClientSocket/SeverSocket模式,客戶/服務(wù)器模式通常是采用監(jiān)聽/連接的方式實(shí)現(xiàn)。首先,服務(wù)器端啟動(dòng)等待客戶端的請求,客戶端啟動(dòng)后請求一個(gè)連接,向服務(wù)器提出請求,服務(wù)器接到請求并驗(yàn)證后開啟連接,啟動(dòng)一個(gè)特殊的服務(wù)器端套接字,并與客戶端套接字相互連接。建立連接的過程是客戶機(jī)主動(dòng)申請,服務(wù)器被動(dòng)等待。連接建立之后,雙方都可以自由發(fā)出數(shù)據(jù)的傳輸請求,也可以都發(fā)送數(shù)據(jù)[5]。

服務(wù)器端:(1)服務(wù)器首先啟動(dòng),用Socket類建立一個(gè)Socket套接字;(2)調(diào)用bind函數(shù)將該套接字與本地IP地址和端口綁定;(3)調(diào)用listen監(jiān)聽連接情況(4)調(diào)用accept接受連接,并產(chǎn)生一個(gè)新的套接字。若無連接請求,服務(wù)器處于無限循環(huán)狀態(tài);(5)產(chǎn)生的新套接字與客戶端套接字建立連接,調(diào)用read、write函數(shù)與客戶端進(jìn)行通信,先前的套接字繼續(xù)用于監(jiān)聽客戶端的請求;(6)服務(wù)進(jìn)程調(diào)用close函數(shù)關(guān)閉監(jiān)聽套接字,中斷連接,終止服務(wù)。

客戶端:(1)調(diào)用Socket建立一個(gè)Socket客戶端;(2)調(diào)用connect函數(shù)向服務(wù)器進(jìn)程發(fā)送連接請求;(3)調(diào)用read、write函數(shù)與服務(wù)器新線程進(jìn)行雙向通信;(4)完成通信后,客戶進(jìn)程調(diào)用close函數(shù),中斷連接。

2.4 服務(wù)器與客戶端運(yùn)行結(jié)果

將unity3D作為服務(wù)器端進(jìn)行編程,設(shè)置本地的IP地址為219.231.156.82,端口號(hào)設(shè)置為8000,設(shè)置后服務(wù)器的參數(shù)之后點(diǎn)擊運(yùn)行,然后將控制面板客戶端進(jìn)行編程,同樣設(shè)置本地的IP地址,并將需要發(fā)送的數(shù)據(jù)填寫完成之后,點(diǎn)擊“連接”按鈕,客戶端會(huì)提示連接成功,并將控制面板上的各參數(shù)發(fā)送給服務(wù)器,如圖2所示,并且服務(wù)器根據(jù)發(fā)送來的參數(shù)來控制康復(fù)機(jī)器人模型的運(yùn)動(dòng),來間接反映康復(fù)機(jī)器人本體的運(yùn)動(dòng)情況。

4 結(jié)束語

本文虛擬上肢康復(fù)機(jī)器人實(shí)時(shí)動(dòng)態(tài)顯示主要是由上肢康復(fù)機(jī)器人的建模和Socket通信兩部分實(shí)現(xiàn)的。通過Solidwork軟件在基礎(chǔ)建模方面方便快捷的特性建立上肢康復(fù)機(jī)器人的基礎(chǔ)模型,以及利用3DsMax軟件在模型渲染上的強(qiáng)大功能對模型進(jìn)行后續(xù)的加工處理,是模型更加真實(shí)。Socket可以提供C++和C#兩種語言的API函數(shù),剛好滿足了MFC和Unity3D這兩款軟件的編程要求,同時(shí)目前大多數(shù)進(jìn)程間的通信都是Socket編寫的,通過Socket編程可以方便快捷的實(shí)現(xiàn)進(jìn)程間的通信。

參考文獻(xiàn):

[1] 趙航. 基于下肢康復(fù)機(jī)器人虛擬現(xiàn)實(shí)技術(shù)的研究與實(shí)現(xiàn)[D]. 河北工業(yè)大學(xué), 2014.

[2] 劉駿, 顏鋼鋒. 基于Socket的網(wǎng)絡(luò)編程技術(shù)及其實(shí)現(xiàn)[J]. 江南大學(xué)學(xué)報(bào)(自然科學(xué)版), 2004, 3(3):249-251.

[3] 周炎濤, 李立明. TCP/IP協(xié)議下網(wǎng)絡(luò)編程技術(shù)及其實(shí)現(xiàn)[J]. 航空計(jì)算技術(shù), 2002, 32(3):122-124.

[4] 李存斌, 汪兵. Delphi深度編程及其項(xiàng)目應(yīng)用開發(fā)[M]. 中國水利水電出版社, 2002.

[5] 阮戈. 最新Unix程序設(shè)計(jì)與編程技巧[M]. 清華大學(xué)出版社, 2001.

水富县| 内江市| 文水县| 隆子县| 台中市| 库伦旗| 翼城县| 陆丰市| 增城市| 罗江县| 图木舒克市| 灵武市| 长春市| 黄浦区| 山阳县| 平定县| 日照市| 乌鲁木齐县| 邢台县| 无锡市| 舟山市| 吴川市| 临沭县| 邵武市| 临江市| 深水埗区| 名山县| 内黄县| 古交市| 湟中县| 衡阳县| 苏州市| 会同县| 察雅县| 屏边| 江源县| 徐州市| 湖北省| 红原县| 安顺市| 手游|