藺晟杰,王紅軍,2,3,戈倫,黃維軒,馬康
(1.北京信息科技大學 機電工程學院,北京 100192;2.北京信息科技大學 高端裝備智能感知與控制北京市國際科技合作基地,北京 100192;3.北京信息科技大學 現(xiàn)代測控技術教育部重點實驗室,北京 100192;4.北京郵電大學 現(xiàn)代郵政學院,北京 100876)
臨床上,對于傳染性疾病最有效的應對辦法是將感染的物品和病人與健康人群進行隔離。為了提高醫(yī)護人員的工作效率,減少人員直接接觸,以避免工作人員交叉感染,可以在醫(yī)院內(nèi)使用自主移動機器人(autonomous mobile robot,AMR)運送藥品等物資至指定位置[1]。
甘粒等[2]認為目前物流機器人在藥品配送場景的應用尚處于較淺層次,在各方面仍有很大發(fā)展空間,未來可以為醫(yī)療健康領域事業(yè)提供智慧保障。Prabhakar等[3]設計了一種紅外循跡導航方式的藥品配送自動導引車(auto guided vehicle,AGV),使用托盤盛裝需要配送的藥品,但紅外循跡導航方式不能實現(xiàn)機器人的快速部署。胡小龍為了解決目前配送機器人存儲量小的問題,設計了一種拖車型的自主醫(yī)用配送機器人[4],但拖車型機器人的轉(zhuǎn)彎半徑較大,進入病房較為困難,不能實現(xiàn)全向移動。廣州賽特智能科技有限公司的配送機器人產(chǎn)品采用了模塊化設計,可以更換箱體??驳吕?深圳)科技創(chuàng)新有限公司的“燭光”機器人產(chǎn)品采用分體式結(jié)構,以機器人自主更換箱體的方式實現(xiàn)了無縫切換多種功能[5]。這些機器人多是將藥品配送到病區(qū)的護士站和病房門口,不能配送到病床旁,所能服務的病患群體有限。針對此現(xiàn)狀,本文設計了一種具有全向移動能力的藥品配送機器人,機器人可以將藥品配送到病床旁,并可以根據(jù)實際需求更換藥廂。
藥品配送機器人應具有下列功能:一是自主移動功能,藥品配送機器人可在醫(yī)院室內(nèi)環(huán)境自主移動;二是藥品配送功能,藥品配送機器人可以實現(xiàn)在醫(yī)院內(nèi)大范圍的藥品運輸,可將藥品配送至病床,以便病患或護理人員取藥;三是身份認證功能,考慮到藥品及用藥安全,每位病患的藥品應單獨存放,存放和取出藥品時均需進行相應的身份驗證,在驗證通過后方可進行相應操作。
使用SolidWorks搭建藥品配送機器人的三維模型,如圖1所示。
醫(yī)院室內(nèi)環(huán)境對藥品配送機器人的靈活性有較高的要求,所以機器人的走行部采用麥克納姆輪,既可以前后左右平移,也可以在原地繞回轉(zhuǎn)中心自轉(zhuǎn)[6]。多種傳感器根據(jù)需求安裝于藥品配送機器人的不同部位。前端的屏幕用于人機交互,在運行中播放機器人狀態(tài)提示語,在存取藥品時播放操作提示。
圖1 藥品配送機器人三維模型
藥品配送機器人采用模塊化的結(jié)構設計,可以根據(jù)使用需求更換不同的藥箱。不同用途的藥廂具有相同的外形尺寸,并且可以通過相同的固定連接結(jié)構安裝于機器人的底盤上。圖1中的藥廂由兩組鐵質(zhì)廂體組成,單組廂體為4層,最下層為設備層,其余為儲藥層。設備層用于固定藥廂、安裝藥廂的控制板以及檢修更換儲藥層的電磁鎖。儲藥層包括3個大號格口和6個小號格口。每個格口門均采用上翻式的結(jié)構,配有電磁鎖進行開閉。
藥品配送機器人的主要參數(shù)如表1所示。
表1 藥品配送機器人主要參數(shù)
1.2.1 硬件系統(tǒng)
系統(tǒng)采用了上位機—下位機模式,上位機與下位機間的通信方式為串口通信。
上位機采用NVIDIA AGX Xavier開發(fā)板。下位機的主控芯片采用STM32F407IGT6,通過CH340芯片與上位機進行串口通信,通過RS485總線與電機驅(qū)動器通信以控制電機。藥品配送機器人配有1個激光雷達用于掃描環(huán)境,8個單點測距激光雷達用于測距避障,1臺相機用于在取藥時對醫(yī)護人員進行人臉識別以確認身份,1個慣性測量單元(inertial measurement unit,IMU)用于測量機器人的加速度,以及4個增量編碼器用于測量電機轉(zhuǎn)過的角度。圖2為藥品配送機器人的硬件拓撲圖,展示了上位機、下位機和傳感器的連接關系。
圖2 藥品配送機器人控制系統(tǒng)的硬件拓撲圖
1.2.2 安全防護措施
藥品配送機器人使用標稱輸出電壓為24 V的鋰電池作為電源。定義電機等動力裝置為動力系統(tǒng),其余為非動力系統(tǒng)??紤]到人身和設備安全問題,在電路設計中采取了如下措施。首先電路中設置了多級開關:第一級開關為漏電保護開關,可以通過大電流,并在電流過大時將電路切斷以保護電路;第二級開關為動力系統(tǒng)和非動力系統(tǒng)的獨立開關,根據(jù)機器人的運行計劃和狀態(tài)使用不同的開關。急停開關與動力系統(tǒng)分開關串聯(lián)在中間繼電器的控制電路中。其次在非動力系統(tǒng)設置隔離電路,對動力系統(tǒng)和非動力系統(tǒng)進行隔離。另外為防止漏電對人身及機器人造成傷害,將機器人的金屬結(jié)構接地。
1.3.1 系統(tǒng)架構
藥品配送機器人的控制系統(tǒng)以機器人操作系統(tǒng)ROS(robot operating system)為核心框架,分別由上位機和下位機承擔不同的工作[7]。上位機是藥品配送機器人的主控單元,功能有:從服務器下載任務信息并上傳機器人的狀態(tài)信息至服務器;處理藥品配送機器人的感知、規(guī)劃任務;與下位機通信進行運動控制等。下位機主要處理實時任務,功能為運動控制等。
藥品配送機器人的控制系統(tǒng)框架如圖3所示,以向靠近服務器方向進行信息傳遞為“上傳”,反之則為“下傳”。系統(tǒng)基本控制流程如下:信息管理系統(tǒng)向藥品配送機器人下傳任務數(shù)據(jù),經(jīng)過數(shù)據(jù)處理、解析后,將目標點的位姿傳送至導航子系統(tǒng),經(jīng)過規(guī)劃后,機器人出發(fā)配送,將規(guī)劃的速度通過串口發(fā)送至下位機,運動執(zhí)行子系統(tǒng)解算后將速度通過RS485總線發(fā)送給電機驅(qū)動器。到達目標點后,藥廂控制器讀取相機數(shù)據(jù)識別人臉并發(fā)送至服務器校驗,根據(jù)服務器的響應結(jié)果開啟對應格口門或提示錯誤。
1.3.2 運動學建模
在控制系統(tǒng)中,麥克納姆輪底盤的正運動學為已知機器人底盤的速度及角速度,推算4個輪子的線速度,即求4個麥克納姆輪或電機的速度;逆運動學為已知每個輪子的線速度,推算底盤的速度、角速度,進一步可得機器人的位移,這是基于輪式編碼器的里程計工作原理[8]。
在圖4所示的坐標系中,定義藥品配送機器人的底盤回轉(zhuǎn)中心為原點O,前進方向為坐標系X軸的正方向,向左平移的方向為坐標系Y軸的正方向。其中n為麥克納姆輪的序號,n=1~4;(xn,yn)為麥克納姆輪中心點在底盤坐標系的坐標;v為底盤線速度,單位為mm/s;設xn、yn均為定值,a是麥克納姆輪中心到底盤回轉(zhuǎn)中心的距離的水平分量的絕對值,即xn的絕對值,b是麥克納姆輪中心到底盤回轉(zhuǎn)中心的距離的豎直分量的絕對值,即yn的絕對值。a、b的單位均為mm。
令k=a+b,則圖4中麥克納姆輪底盤的運動學逆解為
(1)
運動學正解為
(2)
式中:vx為底盤速度v在X軸的分量,單位為mm/s,定義正方向與X軸正方向相同;vy為底盤速度v在Y軸的分量,單位為mm/s,定義正方向與Y軸正方向相同;ω為底盤繞回轉(zhuǎn)中心自轉(zhuǎn)的角速度,單位為rad/s,定義正方向為俯視時逆時針方向;vω1、vω2、vω3和vω4分別為麥克納姆輪1~4的線速度,單位均為mm/s。
圖3 藥品配送機器人控制系統(tǒng)框架
圖4 麥克納姆輪底盤坐標系
設系統(tǒng)采樣周期為T,單位為s,初始狀態(tài)時世界坐標系與機器人坐標系重合,則第t時刻機器人在世界坐標系中的位姿為
(3)
式中:vxt為第t時刻機器人底盤的速度在X軸的分量,單位為mm/s;vyt為第t時刻機器人底盤的速度在Y軸的分量,單位為mm/s;ωt為第t時刻機器人底盤繞回轉(zhuǎn)中心自轉(zhuǎn)的角速度,單位為rad/s;x(t)、y(t)為第t時刻機器人在世界坐標系中的坐標,單位均為mm;θ(t)為第t時刻機器人在世界坐標系中轉(zhuǎn)過的角度,單位為rad。
1.3.3 控制算法設計
控制系統(tǒng)包括運動執(zhí)行子系統(tǒng)和導航子系統(tǒng)。
運動執(zhí)行子系統(tǒng)具有以下功能:解析由上位機發(fā)送的數(shù)據(jù)指令;使用PID控制器設置輪速;解析電機反饋的電機狀態(tài)數(shù)據(jù),并計算里程計數(shù)據(jù);上傳里程計數(shù)據(jù)到上位機。
運動執(zhí)行子系統(tǒng)的流程如圖5所示。在運算單元上電時運動執(zhí)行子系統(tǒng)同步啟動。首先進行各外設的初始化。當下位機通過串口中斷接收到上位機下發(fā)的機器人的速度時,通過運動學逆解式(1)求得每個麥克納姆輪的線速度,經(jīng)換算求得電機轉(zhuǎn)速。電機轉(zhuǎn)速ω與麥克納姆輪線速度v的轉(zhuǎn)換關系為
(4)
式中:R為麥克納姆輪的半徑,單位為mm;ω的單位為rad/s,v的單位為mm/s。
當通過RS485中斷接收到電機驅(qū)動器反饋的麥克納姆輪轉(zhuǎn)過的圈數(shù)信息時,運動執(zhí)行子系統(tǒng)通過解析函數(shù)將數(shù)據(jù)寫入到對應的電機反饋結(jié)構體中。輪速的PID控制器在定時器中斷中調(diào)用,運行頻率為1 kHz,即1 ms產(chǎn)生一次中斷,以固定的頻率對輪速進行控制。根據(jù)式(2)及式(3)推算里程計,將位姿及速度信息通過串口通信發(fā)送至導航子系統(tǒng)。相鄰兩次電機驅(qū)動器反饋的麥克納姆輪的圈數(shù)之差為Δc,對應的時間之差為Δt(單位為s),則麥克納姆輪的線速度為
(5)
為了防止上位機和下位機的串口通信異常時機器人出現(xiàn)失控,在檢測到串口通信超時后運動控制子系統(tǒng)會控制電機停車,以確保安全。
圖5 運動執(zhí)行子系統(tǒng)流程
機器人里程計模塊將根據(jù)輪式里程計數(shù)據(jù)和IMU數(shù)據(jù)計算后的里程計數(shù)據(jù)發(fā)送至導航子系統(tǒng)。導航子系統(tǒng)具有定位、路徑規(guī)劃等功能。定位功能以ROS的AMCL功能包為基礎進行設計,采用自適應蒙特卡洛定位(adaptive Monte Carlo localization,AMCL)算法實現(xiàn)[9]。AMCL算法融合多種蒙特卡洛定位算法,根據(jù)已知地圖使用粒子濾波器實現(xiàn)對機器人的定位,同時解決了“機器人綁架”問題[10]。
路徑規(guī)劃功能以ROS的move_base功能包為基礎進行設計。導航子系統(tǒng)的路徑規(guī)劃功能細分為全局路徑規(guī)劃和局部路徑規(guī)劃。在配置機器人時,手動操作機器人,依托多種傳感器信息,利用SLAM算法獲得運行環(huán)境的全局代價地圖(global_costmap)。機器人在獲得目的地位置及位姿信息后,全局路徑規(guī)劃器根據(jù)全局代價地圖計算出一條可行路線,在這條路線上機器人在行進中調(diào)用局部路徑規(guī)劃器根據(jù)激光雷達的信息、本地代價地圖(local_costmap)及膨脹半徑進行橫向及縱向控制。
全局路徑規(guī)劃功能采用A*算法實現(xiàn)。A*算法是一種啟發(fā)式搜索算法,多用于在靜態(tài)地圖中求解最短路徑。A*算法使用代價函數(shù)f(n)=g(n)+h(n)的最小值作為尋找最優(yōu)路徑的依據(jù),其中f(n)為經(jīng)過該節(jié)點的路線從起點到終點的總代價值,g(n)為從起點到當前搜索點實際的距離代價值,h(n)為從當前搜索點到終點的代價的估計函數(shù)[11]。
局部路徑規(guī)劃功能采用動態(tài)窗口算法(dynamic window approaches,DWA)實現(xiàn)。DWA算法在速度空間內(nèi)對機器人的速度進行采樣并對運動軌跡進行預測,對所預測的軌跡進行評分,最終得到更安全、平滑的最優(yōu)局部路徑[12]。
在實際生產(chǎn)應用中,藥品配送機器人往往是從固定點出發(fā)去往多個目的地進行配送,即藥品配送機器人的導航系統(tǒng)具備多目標點導航的功能。多目標點導航功能基于ROS的Action消息機制開發(fā)。使用Action機制可以根據(jù)任務進度進行不同的操作,例如在到達當前目標點并等待一定時間后可以設置下一個目標點。
1.3.4 遠程控制設計
使用Qt開發(fā)了運行于Windows操作系統(tǒng)的遠程控制客戶端。藥品配送機器人與遠程控制客戶端處于同一局域網(wǎng)中,遠程控制客戶端通過用戶數(shù)據(jù)報協(xié)議(user datagram protocol,UDP)與藥品配送機器人通信,實現(xiàn)遠程控制藥品配送機器人移動及打開藥廂格口門的操作[13-14]。
遠程控制客戶端界面如圖6所示。
圖6 遠程客戶端界面
在遠程控制客戶端輸入機器人IP和藥柜IP,可以遠程控制相應的藥品配送機器人運動。客戶端界面有“上”“下”“左”“右”“?!钡劝粹o,分別對應鍵盤上的4個方向鍵及空格鍵,用戶可以通過鍵盤按鍵或鼠標點擊按鈕控制機器人運動。開啟藥柜時可以選擇“一鍵開啟藥柜”或輸入藥柜標號后開啟對應藥柜。機器人接收到指令后執(zhí)行相應動作。
自主移動功能是藥品配送機器人提供藥品配送服務的基礎,使用仿真軟件Webots對設計方案中該項功能的可行性進行驗證。
Webots是一款開源的機器人仿真軟件,由Cyberbotics公司開發(fā)出品,可以運行于Windows、Linux及MacOS等操作系統(tǒng),支持 C、C++、Python、Matlab和ROS等多種控制器。用戶可以利用Webots搭建仿真環(huán)境和機器人進行建模、編程和仿真。Webots通過Webots_ROS功能包與ROS進行通信。用戶可通過Webots提供的ROS控制器接口聯(lián)合ROS進行仿真[15-16]。
仿真實驗模擬實體機器人的控制系統(tǒng),通過建圖和自主導航兩項實驗驗證機器人的自主移動功能。仿真實驗在虛擬的環(huán)境中進行,所以尚不能對存取藥品功能進行驗證。
首先搭建醫(yī)院室內(nèi)環(huán)境。參照現(xiàn)實中醫(yī)院的標準病房布局搭建仿真病房,每間病房有3張病床和3張桌子;醫(yī)院住院部環(huán)境由4間病房和1條通道組成。如圖7所示。
圖7 使用Webots搭建的仿真環(huán)境
然后創(chuàng)建一個Robot節(jié)點搭建機器人,機器人的走行部采用麥克納姆輪。機器人外形尺寸以及配備的傳感器類型和安裝位置均與實際機器人相同,但傳感器的型號有所不同。仿真實驗中的機器人與實際的機器人所使用的控制系統(tǒng)相同,不同的是在仿真實驗中控制系統(tǒng)調(diào)用Webots_ROS功能包的接口對機器人進行控制并獲取傳感器信息。
首先使用Gmapping功能包建立全局代價地圖,進行建圖實驗。將Gmapping功能包編譯安裝后,配置參數(shù)文件并訂閱相關話題即可建圖,使用Gmapping算法構建全局代價地圖實驗的主要參數(shù)如表2所示。
表2 建圖配置主要參數(shù)
使用鍵盤控制機器人在仿真環(huán)境內(nèi)移動,運行Gmapping算法并訂閱激光雷達掃描數(shù)據(jù)、IMU數(shù)據(jù)和靜態(tài)坐標變換等話題,最終發(fā)布“/map”話題完成代價地圖的建立。對圖7(b)所示的醫(yī)院住院部場景,使用Gmapping算法構建的醫(yī)院室內(nèi)環(huán)境全局代價地圖如圖8所示。圖中的柵格對應實際大小為1 m×1 m。對比圖7(b)和圖8,使用Gmapping算法構建的全局代價地圖與實際環(huán)境基本一致,但是略有傾斜。
圖8 使用Gmapping算法建立的地圖
在完成構建全局代價地圖后使用Navigation功能包進行自主導航實驗。將Navigation功能包編譯安裝后,配合圖8所示的全局代價地圖和通用配置文件、全局代價地圖配置文件、局部代價地圖配置文件及本地運動規(guī)劃器即可使用。自主導航實驗的主要參數(shù)列于表3中。
表3 自主導航配置主要參數(shù)
在圖8的全局代價地圖上為機器人設定兩個目標點,一個目標點位于大廳中,另一個目標點在下一間病房中。啟動機器人,機器人從地圖坐標系的原點出發(fā),按照先后順序前往上述兩個目標點,該過程的路徑規(guī)劃結(jié)果如圖9所示,其中細實線為藥品配送機器人的行進路徑。從圖9可以看出,藥品配送機器人從圖中最左側(cè)的病房出發(fā)進入大廳后前往下一間病房,在此過程中可以順利進出病房并到達目標位置。
圖9 自主導航實驗結(jié)果
本方案提出的自主移動藥品配送機器人具有全向移動的能力。藥品配送機器人采用模塊化的結(jié)構設計,可以通過換裝不同用途的藥廂滿足不同場景的使用需求。
基于ROS設計的藥品配送機器人控制系統(tǒng),采用模塊化的設計思路,搭載多種傳感器,實現(xiàn)自主導航、人機交互等功能,同時具備良好的安全性和擴展性,滿足了設計需求,為之后開發(fā)更多的功能和升級奠定了基礎并提供了參考。同時,采用開源軟件降低了開發(fā)成本并縮短了開發(fā)周期。
基于Webots進行的仿真實驗,在逼真的三維物理環(huán)境中驗證了自主移動功能的可行性,藥品配送機器人在醫(yī)院室內(nèi)環(huán)境中可以正常實現(xiàn)建圖、路徑規(guī)劃及導航功能,為之后的實機調(diào)試奠定了基礎,提高了開發(fā)和迭代效率,同時有效降低了成本。
未來將進一步結(jié)合應用場景和用戶反饋,完善藥品配送機器人的結(jié)構設計,優(yōu)化其控制系統(tǒng)并深入研究相關算法,以提升工作效率和服務質(zhì)量。