劉小軍,溫宏愿,周 軍,何偉基,崔宇豪
(1.南京理工大學(xué)泰州科技學(xué)院智能制造學(xué)院,江蘇泰州 225300;2.南京理工大學(xué)電子工程與光電技術(shù)學(xué)院,南京 210094)
服務(wù)機(jī)器人是一種半自主或全自主工作的機(jī)器人,能幫助人類完成除生產(chǎn)制造加工過程之外的工作[1],服務(wù)機(jī)器人市場(chǎng)空間巨大,未來可期[2]。近年來,服務(wù)機(jī)器人研究應(yīng)用的領(lǐng)域非常廣泛,如家庭服務(wù)機(jī)器人[3]、助老助殘機(jī)器人[4]、醫(yī)療服務(wù)機(jī)器人[5]、教育娛樂機(jī)器人[6]和電力機(jī)器人[7]等。
機(jī)器人的研發(fā)效率一直受機(jī)器人應(yīng)用場(chǎng)景多變、開發(fā)成本高、控制方法復(fù)雜等因素限制,因此借助合適的軟硬件開發(fā)平臺(tái)將會(huì)大大減少開發(fā)的難度,起到事半功倍的效果。目前主流的機(jī)器人軟件開發(fā)平臺(tái)有日本的開放式機(jī)器人技術(shù)中間件OpenRTM[8],歐洲的開源機(jī)器人控制軟件OROCOS[9],韓國(guó)的OPRoS[10]以及機(jī)器人操作系統(tǒng)ROS[11],其中ROS由于具備社區(qū)活躍度高、豐富的資源庫(kù),以及開發(fā)的便利性等優(yōu)勢(shì)被廣泛使用。
從成本和性能綜合考慮,本文設(shè)計(jì)了一種基于雙控制器的家庭服務(wù)機(jī)器人實(shí)驗(yàn)系統(tǒng),并成功運(yùn)用于中國(guó)機(jī)器人大賽。實(shí)驗(yàn)結(jié)果表明,該方案設(shè)計(jì)的服務(wù)機(jī)器人具有可靠性高、靈活性好、低成本等優(yōu)點(diǎn)。
圖1 系統(tǒng)實(shí)物圖
本系統(tǒng)主要包括控制器、輸入設(shè)備、執(zhí)行機(jī)構(gòu),以及底盤子系統(tǒng)等部分。實(shí)驗(yàn)系統(tǒng)實(shí)物如圖1所示??刂破饔芍骺刂破骱蛷目刂破鹘M成,通過RS-232進(jìn)行通信,其中主控制器基于ROS開發(fā)平臺(tái)實(shí)現(xiàn)人體骨架和物體的識(shí)別、同步定位與地圖構(gòu)建(Simultaneous Localization and Mapping,SLAM)[12]、語(yǔ)音識(shí)別等功能;從控制器基于FreeRTOS實(shí)時(shí)操作系統(tǒng),控制底盤以及執(zhí)行機(jī)構(gòu)的運(yùn)動(dòng);輸入設(shè)備包括深度相機(jī)和麥克風(fēng),其中深度相機(jī)采集環(huán)境深度圖像用于人體骨架和物體識(shí)別,麥克風(fēng)實(shí)現(xiàn)語(yǔ)音信息的采集;執(zhí)行機(jī)構(gòu)主要包括升降式機(jī)械臂和機(jī)械爪,用于執(zhí)行抓取目標(biāo)物體等命令;底盤子系統(tǒng)由電源、電調(diào)及電動(dòng)機(jī)、激光雷達(dá)以及全向輪等模塊構(gòu)成,實(shí)現(xiàn)機(jī)器人的移動(dòng)、定位及導(dǎo)航等功能。系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)框圖
主控制器采用目前性能較為強(qiáng)勁且體積較小的mini機(jī)(Intel NUC),安裝ubuntu16.04系統(tǒng)環(huán)境。在該環(huán)境下,通過深度相機(jī)以及激光雷達(dá)采集環(huán)境信息,對(duì)這些信息進(jìn)行融合處理,并根據(jù)控制指令和位姿信息,借助ROS開源算法包實(shí)現(xiàn)機(jī)器人的即時(shí)定位與地圖構(gòu)建、路徑規(guī)劃以及導(dǎo)航避障等功能。主控制器實(shí)物圖如圖3所示。
從控制器采用面向機(jī)器人專用的RoboMaster開發(fā)板,該開發(fā)板主控芯片為STM32F427,板載IMU傳感器,擁有豐富的擴(kuò)展接口和通信接口,與底盤RoboMaster M3508無刷電動(dòng)機(jī)配合使用。從控制器通過RS-232接口與主控制器通信,主要負(fù)責(zé)接收主控制器發(fā)送過來的控制指令,經(jīng)過PID算法輸出控制信號(hào)驅(qū)動(dòng)底盤、機(jī)械臂以及機(jī)械爪等執(zhí)行機(jī)構(gòu)的電動(dòng)機(jī)。從控制器實(shí)物圖如圖4所示。
圖3 主控制器
圖4 從控制器
底盤子系統(tǒng)是機(jī)器人的重要組成部分,主要包括底盤骨架和安裝在底盤內(nèi)部的電源、全向輪、電調(diào)及電動(dòng)機(jī)等部件,承載著機(jī)器人本身的移動(dòng)、定位、導(dǎo)航及避障等基本功能,可幫助機(jī)器人實(shí)現(xiàn)智能行走。底盤結(jié)構(gòu)上采用模塊化、輕量化、靈活性設(shè)計(jì)思路,為保證底盤的強(qiáng)度并盡量減少底部車輪電動(dòng)機(jī)的負(fù)荷,面板采用鋁合金經(jīng)激光切割而成。底盤骨架主要包括底盤外殼、機(jī)械臂支撐件、底盤中間支撐板和底盤上下面板4部分,每部分都進(jìn)行了合理的布局,根據(jù)部位的不同分為1、5和3 mm 3種厚度,并與螺絲等零件相互配合組裝完成,設(shè)計(jì)加工圖如圖5所示。
底盤采用三輪全向結(jié)構(gòu),賦予機(jī)器人更靈活的運(yùn)動(dòng)能力。無刷電動(dòng)機(jī)與全向輪的連接采用高硬度鋁合金聯(lián)軸器,能夠保證承受足夠的扭矩。系統(tǒng)采用24 V鋰電池作為電源提供能量,使用電調(diào)驅(qū)動(dòng)無刷電動(dòng)機(jī),控制簡(jiǎn)單高效。此外選用高采樣率、遠(yuǎn)測(cè)距的激光雷達(dá)采集環(huán)境二維地圖信息用于激光SLAM導(dǎo)航。相關(guān)參數(shù)說明如表1所示。
圖5 底盤骨架設(shè)計(jì)加工圖
表1 底盤組件參數(shù)說明
2.3.1 升降式機(jī)械臂
升降式機(jī)械臂作為機(jī)器人的執(zhí)行機(jī)構(gòu)部件之一,包括絲桿滑臺(tái)和機(jī)械臂兩部分,類似于人的胳膊,主要起到伸縮機(jī)械爪到所需位置和承受抓取物體質(zhì)量等作用。
(1)絲桿滑臺(tái)。絲桿滑臺(tái)為機(jī)械臂的升降運(yùn)動(dòng)機(jī)構(gòu),主要包括滾珠滑桿、滑塊、聯(lián)軸器、步進(jìn)電動(dòng)機(jī)等部件,將步進(jìn)電動(dòng)機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)化成上下直線運(yùn)動(dòng),從而實(shí)現(xiàn)機(jī)械臂在不同高度進(jìn)行作業(yè)。為降低機(jī)器人質(zhì)量且具有足夠的結(jié)構(gòu)強(qiáng)度,選用歐標(biāo)鋁型材作為絲桿滑臺(tái)背板。此外為方便運(yùn)輸,絲桿滑臺(tái)通過手?jǐn)Q梅花螺母與底盤面板相連,在保證強(qiáng)度的前提下實(shí)現(xiàn)機(jī)械臂抬升機(jī)構(gòu)的單人拆裝。
(2)機(jī)械臂。機(jī)械臂主要由關(guān)節(jié)電動(dòng)機(jī)和臂體組成??紤]到抓取重物的實(shí)用性和穩(wěn)定性,選用恒轉(zhuǎn)矩關(guān)節(jié)電動(dòng)機(jī),在機(jī)械臂完全展開的情況下末端仍可抓取0.7 kg左右的物品。機(jī)械臂與絲桿滑臺(tái)的連接處采用拔插結(jié)構(gòu)設(shè)計(jì)并通過手?jǐn)Q梅花螺母固定,機(jī)械臂外殼采用PLA塑料3D打印。機(jī)械臂設(shè)計(jì)圖如圖6所示。
圖6 機(jī)械臂設(shè)計(jì)加工圖
2.3.2 機(jī)械爪
機(jī)械爪作為機(jī)器人的末端執(zhí)行機(jī)構(gòu),主要由爪片連桿和舵機(jī)組成,承載著對(duì)物體的抓取、放置等功能。機(jī)械爪采用可使爪片平行開合的連桿式結(jié)構(gòu),通過光敏樹脂材料經(jīng)紫外光固化3D打印。為保證機(jī)械手整體作業(yè)強(qiáng)度與靈活性,使用25 kg舵機(jī)驅(qū)動(dòng)爪片開合以抓取物品,使用另一個(gè)舵機(jī)帶動(dòng)整個(gè)手爪上下俯仰,使機(jī)械爪能夠平穩(wěn)的放置物品。機(jī)械爪等軸測(cè)視圖如圖7所示。
圖7 機(jī)械爪等軸測(cè)視圖
從控制器軟件架構(gòu)基于FreeRTOS實(shí)時(shí)操作系統(tǒng),利用FreeRTOS高效的任務(wù)調(diào)度機(jī)制將程序劃分為多個(gè)重要性不同的任務(wù),在各個(gè)任務(wù)之間合理地分配CPU資源[13]。本系統(tǒng)采用Keil工具實(shí)現(xiàn)從控制器軟件的編程,主要包括底盤電動(dòng)機(jī)、機(jī)械臂電動(dòng)機(jī)以及機(jī)械爪舵機(jī)的控制任務(wù)、電動(dòng)機(jī)編碼器速度獲取任務(wù)、電池電壓檢測(cè)任務(wù)以及與主控制器的信息交互任務(wù)等,運(yùn)行流程如圖8所示。
(1)電池電壓檢測(cè)任務(wù)。底盤電動(dòng)機(jī)、機(jī)械臂關(guān)節(jié)電動(dòng)機(jī)的驅(qū)動(dòng)都是從鋰電池獲取的,電池電量的多少對(duì)電動(dòng)機(jī)的驅(qū)動(dòng)能力至關(guān)重要。從控制器通過AD采樣模塊獲取并監(jiān)測(cè)機(jī)器人搭載鋰電池電壓,并實(shí)時(shí)將電壓值發(fā)送給主控器。若電池電壓低于閾值,則說明電池不再適合繼續(xù)驅(qū)動(dòng)底盤電動(dòng)機(jī)及機(jī)械臂關(guān)節(jié)電動(dòng)機(jī)的運(yùn)動(dòng),否則因電動(dòng)機(jī)無法輸出足夠扭矩會(huì)造成動(dòng)作走樣甚至危險(xiǎn),且會(huì)降低電池組使用壽命。此時(shí),從控制器會(huì)發(fā)出電壓過低警報(bào)。
圖8 從控制器運(yùn)行流程圖
(2)底盤電動(dòng)機(jī)、機(jī)械臂電動(dòng)機(jī)控制任務(wù)。從控制器實(shí)時(shí)采集底盤電動(dòng)機(jī)編碼器數(shù)據(jù),并將其反饋給主控制器,判斷機(jī)器人已經(jīng)到達(dá)目標(biāo)點(diǎn)后,向主控制器發(fā)布消息(Message),主控制器機(jī)械臂控制程序接收到消息后開始完成抓取物體等動(dòng)作,在執(zhí)行過程中,從控制器機(jī)械臂控制程序通過CAN總線實(shí)時(shí)采集機(jī)械臂各個(gè)關(guān)節(jié)電機(jī)反饋的角度信息,并通過串口將角度信息反饋至主控制器機(jī)械臂控制程序。當(dāng)主控制器判斷機(jī)械臂執(zhí)行完一系列動(dòng)作后會(huì)給從控制器發(fā)送一個(gè)消息(Message),通知機(jī)械臂動(dòng)作完成,以便機(jī)械臂控制程序判斷是否運(yùn)行到下一目標(biāo)位置。
機(jī)械臂關(guān)節(jié)電動(dòng)機(jī)采用位置控制模式,使用15位絕對(duì)編碼器,底盤電動(dòng)機(jī)采用速度控制模式,配有編碼器以實(shí)時(shí)回傳數(shù)據(jù)。通過編碼器反饋數(shù)據(jù)與主控制器路徑規(guī)劃出的目標(biāo)數(shù)據(jù)之差得到實(shí)際偏差數(shù)據(jù),主控制器根據(jù)實(shí)際偏差數(shù)據(jù)計(jì)算得到控制信號(hào),回傳給從控制器,進(jìn)而控制電動(dòng)機(jī)工作。從控制器底盤電動(dòng)機(jī)控制程序?qū)崟r(shí)將傳感器數(shù)據(jù)通過消息(Message)發(fā)送給主控制器底盤控制系統(tǒng)和機(jī)械臂控制系統(tǒng)。
主控制器軟件架構(gòu)基于ROS平臺(tái)開發(fā),主要實(shí)現(xiàn)即時(shí)定位與地圖構(gòu)建、路徑規(guī)劃以及導(dǎo)航避障等功能。
3.2.1 地圖構(gòu)建
主控制器軟件系統(tǒng)使用Gmapping[14]軟件包實(shí)現(xiàn)地圖構(gòu)建,涉及的基本組織元有:
(1)gmapping_slam。主要作用是根據(jù)激光傳感器所測(cè)得的數(shù)據(jù)進(jìn)行反饋,進(jìn)而完成地圖的構(gòu)建。
(2)amcl。自適應(yīng)蒙特卡洛定位。采用粒子濾波器來跟蹤已知的地圖中機(jī)器人位姿,是機(jī)器人在二維平面移動(dòng)過程中的概率定位系統(tǒng)。該算法將傳入的激光掃描數(shù)據(jù)轉(zhuǎn)為里程計(jì)結(jié)果,從而在地圖中輸出位姿信息。
在實(shí)際地圖構(gòu)建過程中,由于基于二維激光雷達(dá)的Gmapping建圖系統(tǒng)存在特殊環(huán)境下的建圖失真情況,如無法探測(cè)到玻璃門、未知區(qū)域無法探測(cè)等問題。因此,本文使用一種人工標(biāo)注柵格地圖的方法來修正自動(dòng)生成的地圖。
3.2.2 路徑規(guī)劃與導(dǎo)航算法
導(dǎo)航是指機(jī)器人根據(jù)已知地圖和自身的起點(diǎn)位置,自動(dòng)規(guī)劃出到預(yù)設(shè)目標(biāo)點(diǎn)的最優(yōu)路徑,主要包含了全局路徑規(guī)劃和局部路徑規(guī)劃[15]。
全局路徑規(guī)劃采用A星算法,它具有啟發(fā)式特點(diǎn)的全局路徑規(guī)劃算法,擁有最低的搜索成本。假設(shè)起始點(diǎn)為s,目標(biāo)點(diǎn)為g,N為當(dāng)前點(diǎn),n為搜索點(diǎn),其成本的評(píng)價(jià)函數(shù)為
式中:g(n)為s點(diǎn)移動(dòng)到N點(diǎn)的實(shí)際移動(dòng)成本;h(n)為從N點(diǎn)到移動(dòng)到g點(diǎn)的啟發(fā)式成本。
局部路徑規(guī)劃采用DWA算法。該算法是ROS系統(tǒng)常用的室內(nèi)環(huán)境路徑規(guī)劃算法,對(duì)滿足移動(dòng)機(jī)器人的線速度和角速度進(jìn)行采樣;根據(jù)采樣的結(jié)果結(jié)合機(jī)器人的運(yùn)動(dòng)模型,預(yù)測(cè)移動(dòng)軌跡;通過評(píng)價(jià)函數(shù)對(duì)預(yù)測(cè)軌跡評(píng)分,選取最優(yōu)的速度控制移動(dòng)機(jī)器人的運(yùn)動(dòng)。
(1)速度采樣。根據(jù)機(jī)器人自身的局限以及環(huán)境的制約,需要將機(jī)器人的速度控制在一定范圍,以便進(jìn)行采樣。其中涉及以下速度因素:
式中:vs表示移動(dòng)機(jī)器人的速度空間;vmin為移動(dòng)機(jī)器人最小線速度;vmax為移動(dòng)機(jī)器人最大線速度;wmin為移動(dòng)機(jī)器人最小加速度;wmax為移動(dòng)機(jī)器人最大線速度;vd表示移動(dòng)機(jī)器人能夠達(dá)到的速度空間;va、wa分別為移動(dòng)機(jī)器人當(dāng)前的線速度和角速度;為移動(dòng)機(jī)器人線速度的最大的加速度;為移動(dòng)機(jī)器人角速度的最大的加速度;t為時(shí)間間隔。
為保證機(jī)器人在碰到障礙物之前速度降為零,故約束:
式中:dist(v,w)為速度(v,w)對(duì)應(yīng)的估計(jì)到最近障礙物的距離;vr機(jī)器人的速度空間。
(2)評(píng)價(jià)函數(shù)。軌跡評(píng)價(jià)函數(shù)的作用就是對(duì)若干組速度軌跡進(jìn)行評(píng)價(jià),選擇最優(yōu)路徑避開障礙物。評(píng)價(jià)函數(shù)為
式中:heading(v,ω)表示在當(dāng)前速度下,預(yù)測(cè)機(jī)器人在軌跡末端時(shí)的朝向和目標(biāo)位置的角度差;dist(v,ω)表示機(jī)器人障礙物之間的距離;velocity(v,ω)使機(jī)器人盡保持最優(yōu)速度;α,β,γ為權(quán)重系數(shù),示意圖如圖9所示。
圖9 機(jī)器人行走軌跡
本文在ROS系統(tǒng)中通過執(zhí)行Gmapping的軟件包實(shí)現(xiàn)地圖的構(gòu)建,建圖系統(tǒng)的各個(gè)節(jié)點(diǎn)及節(jié)點(diǎn)間的關(guān)系如圖10所示。
圖10 建圖節(jié)點(diǎn)圖
建圖系統(tǒng)主要包括鍵盤控制節(jié)點(diǎn)、機(jī)器人底盤控制節(jié)點(diǎn)、激光雷達(dá)節(jié)點(diǎn)、Gmapping節(jié)點(diǎn)和地圖服務(wù)節(jié)點(diǎn);節(jié)點(diǎn)之間的矩形方框表示主題,主題指向節(jié)點(diǎn)則表示該節(jié)點(diǎn)訂閱了相應(yīng)的消息,節(jié)點(diǎn)指向主題表示該主題發(fā)布了相應(yīng)的消息。
采用roslanuch啟動(dòng)節(jié)點(diǎn)相關(guān),驅(qū)動(dòng)激光雷達(dá)獲取環(huán)境數(shù)據(jù)并發(fā)布到/scan主題上;運(yùn)行Gmapping節(jié)點(diǎn)和地圖服務(wù)節(jié)點(diǎn),打開可視化地圖界面rviz;主控制器啟動(dòng)鍵盤控制節(jié)點(diǎn),通過鍵盤發(fā)送命令給底盤系統(tǒng),實(shí)現(xiàn)機(jī)器人的移動(dòng);控制機(jī)器人在目標(biāo)場(chǎng)所移動(dòng),從而實(shí)現(xiàn)地圖的構(gòu)建,本文選擇實(shí)驗(yàn)樓層場(chǎng)景,建圖效果如圖11所示。
路徑規(guī)劃建立在圖11所建柵格地圖上。首先,需要對(duì)機(jī)器人位姿進(jìn)行初始化設(shè)置,點(diǎn)擊rviz地圖,會(huì)出現(xiàn)一個(gè)箭頭,箭頭指向即為機(jī)器人初始位置的朝向,位姿初始化后可以為機(jī)器人選擇目標(biāo)點(diǎn)的朝向,此后全局規(guī)劃器會(huì)為機(jī)器人規(guī)劃出一條全局路徑,從機(jī)器人初始位置出發(fā),到目標(biāo)點(diǎn)結(jié)束,如圖12所示(帶箭頭的淺藍(lán)色線)。
圖11 地圖構(gòu)建效果
圖12 實(shí)際規(guī)劃效果
路徑規(guī)劃完成后,現(xiàn)實(shí)環(huán)境中機(jī)器人就會(huì)開始沿著規(guī)劃好的全局路徑進(jìn)行移動(dòng),若中途不再出現(xiàn)障礙物,機(jī)器人會(huì)一直沿著該路徑,直到目標(biāo)點(diǎn)為止。同時(shí)在實(shí)際測(cè)試中,還進(jìn)行了在已知地圖中增加障礙物的試驗(yàn),機(jī)器人在行進(jìn)過程中如果檢測(cè)到未知的障礙物,會(huì)啟動(dòng)局部規(guī)劃器,繞開障礙物,實(shí)現(xiàn)動(dòng)態(tài)避障,完成導(dǎo)航任務(wù)。
對(duì)該家庭服務(wù)機(jī)器人實(shí)驗(yàn)系統(tǒng)進(jìn)行物品的識(shí)別和抓取功能測(cè)試。方法為:在桌上擺放易拉罐、飲料瓶、零食等物品,機(jī)器人根據(jù)人的指令識(shí)別并抓取目標(biāo)物品,如圖13所示。
圖13 現(xiàn)場(chǎng)測(cè)試
測(cè)試時(shí),每個(gè)物品識(shí)別和抓取15次,求取系統(tǒng)執(zhí)行的正確率。測(cè)試結(jié)果表明,該系統(tǒng)可以根據(jù)指令正確識(shí)別和抓取目標(biāo)物品,相關(guān)測(cè)試結(jié)果見表2所示。
表2 物品識(shí)別和抓取功能測(cè)試
本文設(shè)計(jì)和開發(fā)了一種低成本家庭服務(wù)機(jī)器人實(shí)驗(yàn)系統(tǒng),采用主從控制器控制結(jié)構(gòu),主控制器基于ROS實(shí)現(xiàn)機(jī)器人的即時(shí)定位與地圖構(gòu)建、路徑規(guī)劃與導(dǎo)航、語(yǔ)音識(shí)別等功能;從控制器基于FreeRTOS主要實(shí)現(xiàn)對(duì)底盤、升降式機(jī)械臂以及機(jī)械手的實(shí)時(shí)控制以及電池電壓檢測(cè)等。該服務(wù)機(jī)器人成功應(yīng)用于2019年中國(guó)機(jī)器人大賽家庭服務(wù)機(jī)器人非限定項(xiàng)目比賽,并取得一等獎(jiǎng)的優(yōu)異成績(jī),測(cè)試結(jié)果驗(yàn)證了系統(tǒng)設(shè)計(jì)的穩(wěn)定性、可靠性及有效性。
·名人名言·
業(yè)精于勤荒于嬉,行成于思?xì)в陔S。
——韓愈《進(jìn)學(xué)解》