孫振邦,賈劍平,劉繼忠,華 晶,鄭恩濤
(南昌大學(xué) 機(jī)器人與焊接自動(dòng)化重點(diǎn)實(shí)驗(yàn)室,江西 南昌 330031)
基于智能手機(jī)的服務(wù)機(jī)器人監(jiān)護(hù)控制系統(tǒng)設(shè)計(jì)
孫振邦,賈劍平,劉繼忠,華 晶,鄭恩濤
(南昌大學(xué) 機(jī)器人與焊接自動(dòng)化重點(diǎn)實(shí)驗(yàn)室,江西 南昌 330031)
以高齡老年人和癱瘓病人為主的病患,其生活自理能力的下降與喪失,造成了這類群體的長期日常護(hù)理問題變得日益突出。為緩解這一問題的嚴(yán)峻形勢(shì),研發(fā)一種立足于家庭和大眾化的醫(yī)療護(hù)理系統(tǒng)符合當(dāng)前社會(huì)需求。在自主研發(fā)的多功能服務(wù)機(jī)器人的基礎(chǔ)上,依托智能手機(jī)平臺(tái),開發(fā)了移動(dòng)監(jiān)護(hù)系統(tǒng)。介紹了服務(wù)機(jī)器人的機(jī)電系統(tǒng)以及控制主板的硬件設(shè)計(jì)。詳細(xì)論述了串口通信和利用Java媒體框架實(shí)現(xiàn)的視頻交互。通過網(wǎng)絡(luò)地址轉(zhuǎn)換,系統(tǒng)具備隨時(shí)隨地對(duì)家庭中患者進(jìn)行遠(yuǎn)程監(jiān)控,遠(yuǎn)程護(hù)理的功能。實(shí)驗(yàn)結(jié)果證明,系統(tǒng)運(yùn)行可靠,具有較高的實(shí)用性。
日常護(hù)理;服務(wù)機(jī)器人;遠(yuǎn)程監(jiān)控;遠(yuǎn)程護(hù)理
老年人口數(shù)量的迅猛增長已經(jīng)給當(dāng)前的醫(yī)療資源和系統(tǒng)帶來了可預(yù)見的嚴(yán)峻挑戰(zhàn)。傳統(tǒng)的醫(yī)療護(hù)理資源對(duì)于癱瘓或者生活難自理的患者而言,其供需矛盾是很突出的。當(dāng)前社會(huì)人口紅利正逐步下降,人工成本不斷提升。資源分配不均衡與龐大市場需求的壓力已迫切地要求傳統(tǒng)護(hù)理手段的變革。本文從遠(yuǎn)程醫(yī)療的發(fā)展趨勢(shì)著手,開發(fā)了基于Android系統(tǒng)的手機(jī)軟件和Windows操作系統(tǒng)的服務(wù)器程序,結(jié)合多功能服務(wù)機(jī)器人,為病患實(shí)現(xiàn)遠(yuǎn)程護(hù)理提供了一種實(shí)用可行的方案。該系統(tǒng)能夠應(yīng)用于家庭,可提高護(hù)理質(zhì)量,使護(hù)理工作變得簡便易行,同時(shí)減輕患者因癱瘓和固定臥姿造成身體機(jī)能下降引起的如褥瘡和肌肉萎縮等病癥,可在一定程度上緩解老齡化帶來的社會(huì)醫(yī)療問題。
遠(yuǎn)程移動(dòng)監(jiān)護(hù)系統(tǒng)由三個(gè)部分構(gòu)成:服務(wù)機(jī)器人控制主板,這個(gè)部分可接收服務(wù)器發(fā)送的控制指令控制床體;服務(wù)器端作為服務(wù)機(jī)器人的本地監(jiān)護(hù)控制端,服務(wù)程序采用Java編寫,承擔(dān)對(duì)病患的監(jiān)控與床體控制指令的發(fā)送;遠(yuǎn)程移動(dòng)監(jiān)護(hù)端即用戶的手機(jī)端,依靠WiFi或者3G網(wǎng)絡(luò),可實(shí)現(xiàn)移動(dòng)端訪問服務(wù)器端,達(dá)到實(shí)時(shí)監(jiān)控和遠(yuǎn)程護(hù)理的目的[1]。系統(tǒng)架構(gòu)如圖1所示。家庭成員在各自手機(jī)上,都可以對(duì)家中患者實(shí)現(xiàn)護(hù)理。該系統(tǒng)可大大節(jié)約護(hù)理成本,降低護(hù)理人員的勞動(dòng)強(qiáng)度,可滿足家庭護(hù)理的需求。
圖1 系統(tǒng)架構(gòu)示意圖
1.1 服務(wù)機(jī)器人機(jī)電系統(tǒng)
服務(wù)機(jī)器人主體部分是多功能護(hù)理床。多功能護(hù)理床采用4個(gè)直線電機(jī)驅(qū)動(dòng)。各電機(jī)的行程安裝位置依據(jù)床體設(shè)計(jì)的大小尺寸以及完成升降背、曲平腿、左右翻身和座便器升降的位置姿態(tài)來確定。各個(gè)控制動(dòng)作之間,有嚴(yán)格的約束關(guān)系:即升降背和曲平腿時(shí),翻身電機(jī)要回復(fù)平衡位置,床體要橫向水平。翻身動(dòng)作執(zhí)行時(shí),降背與平腿要先到達(dá)極限位置,床體要縱向水平。邏輯控制中需要將這些約束條件加入控制程序,才能使護(hù)理床實(shí)現(xiàn)預(yù)定的動(dòng)作響應(yīng)。電機(jī)驅(qū)動(dòng)器采用JCB35E,供電電源為220 V/AC,機(jī)電系統(tǒng)結(jié)構(gòu)示意如圖2所示。
圖2 機(jī)電系統(tǒng)結(jié)構(gòu)示意圖
1.2 控制主板硬件
服務(wù)機(jī)器人控制主板是遠(yuǎn)程控制多功能護(hù)理床的連接模塊。它采用STC89C52單片機(jī)作為微控制器,工作電壓為+5 V,直流電源供電,通過RS-232接口接收上位機(jī)服務(wù)器端的指令。微控制器判斷接收的指令后運(yùn)行相應(yīng)的控制邏輯,控制繼電器輸出相應(yīng)的動(dòng)作信號(hào)??刂浦靼鍖?shí)物如圖3所示。
圖3 控制主板
2.1 軟件內(nèi)容
軟件設(shè)計(jì)內(nèi)容包括服務(wù)器程序和手機(jī)應(yīng)用,開發(fā)平臺(tái)為Eclipse。服務(wù)器程序和客戶端程序都采用同一種開發(fā)語言,可大大提高系統(tǒng)的兼容性和開發(fā)效率。服務(wù)器端負(fù)責(zé)接收客戶端的訪問與請(qǐng)求。軟件系統(tǒng)采用多線程編程,主要完成以下幾個(gè)功能:串口通信、視頻采集與發(fā)送、自動(dòng)護(hù)理功能和網(wǎng)絡(luò)地址轉(zhuǎn)換等。
2.2 串口通信模塊
在Java SE開發(fā)平臺(tái)中,并沒有串口編程的相關(guān)API。因此在Java應(yīng)用程序中,需要使用SUN公司提供的Java串口通信包,控制RS-232接口[2]。
2.2.1 在javax.comm包中,幾個(gè)重要的類
javax.comm.CommPort:CommPort是一個(gè)描述由底層系統(tǒng)支持的通信端口的抽象類。它包括一個(gè)對(duì)各種通信端口的通用的高層I/O控制方法。SerialPort 和ParallelPort都是它的子類,分別是串口控制類和并口控制類。
javax.comm.SerialPort:該類是描述串口的底層接口,可以直接對(duì)串口進(jìn)行讀寫以及設(shè)置等工作。
javax.comm.CommPortIdentifier:該類是串口控制的核心類,用于對(duì)串口的管理。它包括的方法有:確定是否有可用的通信端口;決定端口的所有權(quán);判斷端口所有權(quán)的優(yōu)先級(jí);管理端口所有權(quán)狀態(tài)改變引起的事件。
服務(wù)器程序采用多線程來管理不同的任務(wù)。程序初始化后,在主線程中開辟自定義的SerialOpen線程,使其在服務(wù)程序運(yùn)行時(shí)打開串口,并獲取I/O流。
2.2.2 串口參數(shù)配置
串口通信包中封裝的API函數(shù)有如getPortIdentifiers()、getPortType()、open()和setSerialPortParams()等函數(shù),就可實(shí)現(xiàn)對(duì)端口的檢測(cè)、端口類型識(shí)別、串口打開和參數(shù)設(shè)置的功能。該線程還繼承了SerialPortEventListener接口,在串口接收到數(shù)據(jù)時(shí),可自動(dòng)響應(yīng)serialEvent()函數(shù),執(zhí)行數(shù)據(jù)處理。設(shè)置波特率值為19 200,數(shù)據(jù)位8位,停止位1位,無校驗(yàn)位,具體設(shè)置方法是:
/*獲取端口列表*/
Enumeration portList=CommPortIdentifier.getPortIdentifiers();
/*獲取端口ID*/
CommPortIdentifier portId=(CommPortIdentifier)portList.nextElement();
/*打開串口*/
if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL)
{
SerialPort serialPort=(SerialPort)portId.open("SRComm",2000);
}
/*串口參數(shù)設(shè)置*/
serialPort.setSerialPortParams(19200,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
2.3 視頻采集與控制
視頻監(jiān)控功能能夠使家屬更加清楚地了解患者的狀態(tài),同時(shí)為遠(yuǎn)程床體控制提供了安全保障。采用的是Java媒體框架[3-4],它是Java的一個(gè)類包。
服務(wù)器端在接收到客戶端的視頻請(qǐng)求之后,需要開啟攝像頭設(shè)備。javax.media包中的CaptureDeviceManager類的getDevice( )方法可獲取VFW視頻設(shè)備。Manger類的createRealizedPlayer( )方法可獲得本地端播放器player對(duì)象,用于顯示本地監(jiān)控視頻。通過實(shí)例化的player對(duì)象可獲得FrameGrabbingControl類對(duì)象。該對(duì)象的grabFrame( )方法可實(shí)現(xiàn)對(duì)當(dāng)前視頻的截取。實(shí)現(xiàn)主要代碼如下:
1)打開攝像頭并獲取視頻組件代碼:
String vfw_str = "vfw:Microsoft WDM Image Capture (Win32):0";
//獲取視頻設(shè)備
CaptureDeviceInfo
captureDeviceInfo=CaptureDeviceManager.getDevice(vfw_str );
//獲取MediaLocator對(duì)象
MediaLocator mediaLocator=captureDeviceInfo.getLocator();
//根據(jù)MediaLocator獲取播放器
Player player=Manager.createRealizedPlayer(mediaLocator);
player.start();
//獲得視頻組件
Component comp=player.getVisualComponent();
2)幀圖像抓取代碼:
//獲取畫面抓取控件
FrameGrabbingControl fgc=( FrameGrabbingControl)player.getControl("javax.media.
Control.FrameGrabbingControl");
//獲取圖像緩存并生成圖像對(duì)象
Buffer buffer=fgc.grabFrame();
BufferToImage btoi=new BufferToImage((VideoFormat)buffer.getFormat());
Image img=btoi.createImage(buffer);
客戶端的消息處理線程,會(huì)從服務(wù)器的消息對(duì)象中解析出幀圖像。由于客戶端顯示是在主線程(UI線程)中進(jìn)行的[5]。為了解決Android線程間通信問題,采用了Handler消息傳遞機(jī)制。其原理是在主線程中重寫handleMessage( )方法處理消息,當(dāng)有消息傳來時(shí),該方法會(huì)從MessgeQueue中獲取消息并自動(dòng)回調(diào)。而在子線程中只需要負(fù)責(zé)將要處理的消息,發(fā)送到與之關(guān)聯(lián)的MessageQueue中即可。
與此同時(shí),需要將手機(jī)端的視頻圖像傳送到服務(wù)器,進(jìn)行視頻交互。在視頻連接成功之后,手機(jī)端會(huì)調(diào)用前置攝像頭將預(yù)覽圖像顯示在SurfaceView組件上[6],主要代碼是:
surfaceHolder=surfaceView.getHolder();
surfaceHolder.addCallback(Callback);
然后攝像頭在預(yù)覽回調(diào)函數(shù)camera.setPreviewCallback( )中實(shí)現(xiàn)接口PreviewCallback并進(jìn)行捕捉圖像,并將幀圖像消息傳輸至服務(wù)器端處理。主程序流程圖如圖4所示。
a 客戶端流程
b 服務(wù)器流程圖 4 客戶端與服務(wù)器程序流程圖
在點(diǎn)擊手機(jī)的遙控選項(xiàng)時(shí),會(huì)跳轉(zhuǎn)到窗體控制按鈕頁卡如圖5,包括抬背、曲腿、翻身等按鈕。在點(diǎn)擊按鈕后,程序?qū)?huì)產(chǎn)生控制消息并發(fā)送,并自動(dòng)返回監(jiān)控界面,保證對(duì)控制動(dòng)作的實(shí)時(shí)監(jiān)視。手機(jī)傳輸?shù)膸瑘D像和控制消息都被封裝在同一類型的自定義消息對(duì)象中。根據(jù)內(nèi)容的不同,通過setMessageID(String ID)方法給消息對(duì)象設(shè)置不同的屬性ID。使用Java序列化機(jī)制,消息類需要實(shí)現(xiàn)Serializable接口。將封裝好的消息對(duì)象通過ObjectOutputStream發(fā)送出去。服務(wù)器在接收數(shù)據(jù)時(shí),通過反序列化,得到消息對(duì)象并進(jìn)行消息類型判別,執(zhí)行圖像處理或是串口操作。
a 遙控 b 自動(dòng)護(hù)理圖5 遙控與自動(dòng)護(hù)理(截圖)
2.4 自動(dòng)護(hù)理功能
為了使患者能夠得到最有效的護(hù)理,該系統(tǒng)還設(shè)置了自動(dòng)護(hù)理功能。對(duì)于癱瘓患者,由于長時(shí)間臥病在床而無力變換體位,會(huì)導(dǎo)致運(yùn)動(dòng)機(jī)能的進(jìn)一步喪失和引起褥瘡。傳統(tǒng)護(hù)理手段需要監(jiān)護(hù)人員長時(shí)間的守護(hù)。普通病床也不方便協(xié)助患者的姿態(tài)變換。該系統(tǒng)可方便家屬在遠(yuǎn)程端依據(jù)患者情況,設(shè)置相應(yīng)的自動(dòng)護(hù)理模式。
在該界面中,每個(gè)護(hù)理動(dòng)作都可以自行設(shè)定時(shí)間和開啟。在設(shè)定完成之后,點(diǎn)擊自動(dòng)護(hù)理按鈕,應(yīng)用程序調(diào)用startService( )啟動(dòng)服務(wù)。Service不需用戶界面可在后臺(tái)長期運(yùn)行。在服務(wù)中會(huì)保持網(wǎng)絡(luò)連接的通暢,依據(jù)設(shè)定的時(shí)間,定時(shí)向服務(wù)器發(fā)送控制消息,實(shí)現(xiàn)軟件的自動(dòng)護(hù)理功能。普通的Service不是一條新的線程,如果處理耗時(shí)的任務(wù),會(huì)阻塞主線程產(chǎn)生ANR異常。因此該服務(wù)繼承了IntentService,會(huì)單獨(dú)創(chuàng)建worker線程,并將定時(shí)操作在onHandleIntent( )方法中運(yùn)行。為了保證護(hù)理可靠性,在每次自動(dòng)護(hù)理動(dòng)作的同時(shí),都會(huì)在客戶端實(shí)現(xiàn)提醒功能。當(dāng)點(diǎn)擊停止自動(dòng)護(hù)理時(shí),則會(huì)關(guān)閉此服務(wù)。
2.5 遠(yuǎn)程訪問與控制實(shí)現(xiàn)
系統(tǒng)采用C/S結(jié)構(gòu),實(shí)現(xiàn)網(wǎng)絡(luò)訪問。Internet依靠TCP/IP協(xié)議,可以使任意兩臺(tái)計(jì)算機(jī)實(shí)現(xiàn)互聯(lián)。TCP協(xié)議是一種“可靠的”,面向連接的傳輸機(jī)制,保證數(shù)據(jù)的無損和有序送達(dá)[7]。服務(wù)器/客戶端模式在局域網(wǎng)中容易實(shí)現(xiàn)。在局域網(wǎng)中可以固定服務(wù)器的IP地址。客戶端直接訪問該IP就可實(shí)現(xiàn)通信連接。在本系統(tǒng)中,服務(wù)器位于家庭環(huán)境中的內(nèi)網(wǎng),無法獲取固定的公網(wǎng)IP地址。智能手機(jī)在不同的網(wǎng)絡(luò)環(huán)境下,其IP地址也是會(huì)隨時(shí)改變的。因此,無法采用局域網(wǎng)訪問方式。
網(wǎng)絡(luò)訪問采用內(nèi)網(wǎng)代理服務(wù)器。在內(nèi)網(wǎng)代理的服務(wù)器中,實(shí)現(xiàn)端口映射的功能[7]。將家庭內(nèi)網(wǎng)主機(jī)即服務(wù)器的5221端口申請(qǐng)一個(gè)域名:15*********.xicp.net,外網(wǎng)訪問端口號(hào)為:4***8。內(nèi)網(wǎng)代理服務(wù)器會(huì)將本地服務(wù)器動(dòng)態(tài)的IP地址及端口號(hào)映射到該固定的域名上。客戶端在每次登陸時(shí)如圖6,就可直接訪問該域名以及外網(wǎng)端口號(hào),就可解析至非固定IP的服務(wù)器上,實(shí)現(xiàn)訪問功能。本系統(tǒng)采用Socket機(jī)制,Android中進(jìn)行Socket編程與Java程序中一致[8]。服務(wù)器端程序在初始化后,就持續(xù)監(jiān)聽5221端口:Socket Server_sock=new ServerSocket(5221);??蛻舳嗽邳c(diǎn)擊連接之后,執(zhí)行的訪問代碼是:Socket Client_sock =new Socket("15*********.xicp.net",4***8);當(dāng)服務(wù)套接字創(chuàng)建成功時(shí),客戶端和服務(wù)器端就可以實(shí)現(xiàn)雙向通信。
圖6 登錄信息界面(截圖)
服務(wù)器端程序開啟運(yùn)行之后,手機(jī)客戶端在無線網(wǎng)絡(luò)環(huán)境下登錄成功,即可實(shí)現(xiàn)對(duì)服務(wù)器端的訪問。通過反復(fù)測(cè)試,系統(tǒng)的視頻交互流暢,延時(shí)性很低。護(hù)理操作功能穩(wěn)定,能夠?qū)崿F(xiàn)對(duì)病患的各種護(hù)理。自動(dòng)護(hù)理服務(wù)后臺(tái)運(yùn)行可靠,能夠保證按照監(jiān)護(hù)人的設(shè)定,實(shí)現(xiàn)無人自動(dòng)護(hù)理,如圖7所示。
本文從遠(yuǎn)程醫(yī)療的社會(huì)需求與智能家居的發(fā)展趨勢(shì)出發(fā),借助多功能服務(wù)機(jī)器人的平臺(tái),提出了利用智能手機(jī)實(shí)現(xiàn)遠(yuǎn)程監(jiān)護(hù)患者的新型實(shí)用監(jiān)護(hù)系統(tǒng)。通過視頻監(jiān)控、遠(yuǎn)程控制、自動(dòng)護(hù)理等功能,擺脫了傳統(tǒng)護(hù)理的局限性,使家屬和醫(yī)護(hù)人員能夠更加方便的照料患者。隨著智能設(shè)備的普及以及無線網(wǎng)絡(luò)的發(fā)展,遠(yuǎn)程醫(yī)療及家庭護(hù)理將會(huì)迎來廣闊的市場前景。
a 服務(wù)器端效果圖
b 客戶端效果圖圖7 系統(tǒng)運(yùn)行效果(截圖)
[1] 賈振堂,呂海蓮,韓艷芳.手機(jī)視頻監(jiān)控系統(tǒng)及其性能[J].電視技術(shù),2007,31(11):81-83.
[2] 吳金鋒,劉偉平,黃紅斌.Java串口通信數(shù)據(jù)采控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 微計(jì)算機(jī)信息,2010(10):65-66.
[3] 趙瑩,陸穎瑜,張永林. 基于Java的視頻監(jiān)控系統(tǒng)中報(bào)警錄像功能的實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2008,29(17):4574-4577.
[4] 閻秀英,周亞建,胡正名.基于Java的網(wǎng)絡(luò)實(shí)時(shí)遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)工程,2009,35(5):74-75.
[5] BARTLOMIEJ B,DARIUSZ M,BOZENA M M. Remote video verification and video surveillance on android-based mobile devices[C]//Proc. 3rd International Conference on Man-Machine Interactions (ICMMI).Brenna,Poland:Springer,2014:547-557.
[6] 張雅楠,楊璐,鄭麗敏. 基于Android手機(jī)的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與開發(fā)[J]. 計(jì)算機(jī)應(yīng)用,2013,33(S1):283-286.
[7] 張建偉. 網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)與網(wǎng)絡(luò)安全[J].計(jì)算機(jī)應(yīng)用研究,2001(2):123-125.
[8] 王家林. Android4.0網(wǎng)絡(luò)編程詳解[M].北京:電子工業(yè)出版社,2012.
【本文獻(xiàn)信息】王寶珠,劉振,郭志濤.基于Android智能的健康監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2015,39(24).
Design of Smart Phone-Based Monitoring and Control System for Service Robot
SUN Zhenbang,JIA Jianping,LIU Jizhong,HUA Jing,ZHENG Entao
(KeyLaboratoryonRobotandWeldingAutomation,NanchangUniversity,Nanchang330031,China)
The patients who mainly consist of elderly and paralyzed people lose their self-care ability gradually and completely. This lead to the problem of long-term daily care for the groups becoming worse. In order to alleviate the serious situation of this issue, develop the medical care system based on family and popularization that can meet the demand of current society. On the basis of self-developed multifunctional service robot, develop the system of mobile monitor and control relaying on smart phone platform. Introduce the electromechanical system of service robot and hardware design of control board. Then serial communication and video interaction by Java Media Framework are described in detail. Through network address translation, system can realize remote monitoring and remote nursing the patient in home anytime from everywhere. Test results show that the system is reliable, and has high practicability.
daily care;service robot;remote monitoring;remote nursing
國家自然科學(xué)基金項(xiàng)目(61273282);江西省高等學(xué)??萍悸涞赜?jì)劃項(xiàng)目(KJLD13002)
TP24;TP37;TP393
A
10.16280/j.videoe.2015.24.006
2015-07-10
【本文獻(xiàn)信息】孫振邦,賈劍平,劉繼忠,等.基于智能手機(jī)的服務(wù)機(jī)器人監(jiān)護(hù)控制系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2015,39(24).
孫振邦(1990— ),碩士生,主要研究方向?yàn)闄C(jī)器人技術(shù)與智能化。
責(zé)任編輯:時(shí) 雯