劉小軍,溫宏愿,周 軍,何偉基,崔宇豪
(1.南京理工大學泰州科技學院智能制造學院,江蘇泰州 225300;2.南京理工大學電子工程與光電技術學院,南京 210094)
服務機器人是一種半自主或全自主工作的機器人,能幫助人類完成除生產制造加工過程之外的工作[1],服務機器人市場空間巨大,未來可期[2]。近年來,服務機器人研究應用的領域非常廣泛,如家庭服務機器人[3]、助老助殘機器人[4]、醫療服務機器人[5]、教育娛樂機器人[6]和電力機器人[7]等。
機器人的研發效率一直受機器人應用場景多變、開發成本高、控制方法復雜等因素限制,因此借助合適的軟硬件開發平臺將會大大減少開發的難度,起到事半功倍的效果。目前主流的機器人軟件開發平臺有日本的開放式機器人技術中間件OpenRTM[8],歐洲的開源機器人控制軟件OROCOS[9],韓國的OPRoS[10]以及機器人操作系統ROS[11],其中ROS由于具備社區活躍度高、豐富的資源庫,以及開發的便利性等優勢被廣泛使用。
從成本和性能綜合考慮,本文設計了一種基于雙控制器的家庭服務機器人實驗系統,并成功運用于中國機器人大賽。實驗結果表明,該方案設計的服務機器人具有可靠性高、靈活性好、低成本等優點。

圖1 系統實物圖
本系統主要包括控制器、輸入設備、執行機構,以及底盤子系統等部分。實驗系統實物如圖1所示。控制器由主控制器和從控制器組成,通過RS-232進行通信,其中主控制器基于ROS開發平臺實現人體骨架和物體的識別、同步定位與地圖構建(Simultaneous Localization and Mapping,SLAM)[12]、語音識別等功能;從控制器基于FreeRTOS實時操作系統,控制底盤以及執行機構的運動;輸入設備包括深度相機和麥克風,其中深度相機采集環境深度圖像用于人體骨架和物體識別,麥克風實現語音信息的采集;執行機構主要包括升降式機械臂和機械爪,用于執行抓取目標物體等命令;底盤子系統由電源、電調及電動機、激光雷達以及全向輪等模塊構成,實現機器人的移動、定位及導航等功能。系統結構框圖如圖2所示。

圖2 系統結構框圖
主控制器采用目前性能較為強勁且體積較小的mini機(Intel NUC),安裝ubuntu16.04系統環境。在該環境下,通過深度相機以及激光雷達采集環境信息,對這些信息進行融合處理,并根據控制指令和位姿信息,借助ROS開源算法包實現機器人的即時定位與地圖構建、路徑規劃以及導航避障等功能。主控制器實物圖如圖3所示。
從控制器采用面向機器人專用的RoboMaster開發板,該開發板主控芯片為STM32F427,板載IMU傳感器,擁有豐富的擴展接口和通信接口,與底盤RoboMaster M3508無刷電動機配合使用。從控制器通過RS-232接口與主控制器通信,主要負責接收主控制器發送過來的控制指令,經過PID算法輸出控制信號驅動底盤、機械臂以及機械爪等執行機構的電動機。從控制器實物圖如圖4所示。

圖3 主控制器

圖4 從控制器
底盤子系統是機器人的重要組成部分,主要包括底盤骨架和安裝在底盤內部的電源、全向輪、電調及電動機等部件,承載著機器人本身的移動、定位、導航及避障等基本功能,可幫助機器人實現智能行走。底盤結構上采用模塊化、輕量化、靈活性設計思路,為保證底盤的強度并盡量減少底部車輪電動機的負荷,面板采用鋁合金經激光切割而成。底盤骨架主要包括底盤外殼、機械臂支撐件、底盤中間支撐板和底盤上下面板4部分,每部分都進行了合理的布局,根據部位的不同分為1、5和3 mm 3種厚度,并與螺絲等零件相互配合組裝完成,設計加工圖如圖5所示。
底盤采用三輪全向結構,賦予機器人更靈活的運動能力。無刷電動機與全向輪的連接采用高硬度鋁合金聯軸器,能夠保證承受足夠的扭矩。系統采用24 V鋰電池作為電源提供能量,使用電調驅動無刷電動機,控制簡單高效。此外選用高采樣率、遠測距的激光雷達采集環境二維地圖信息用于激光SLAM導航。相關參數說明如表1所示。

圖5 底盤骨架設計加工圖

表1 底盤組件參數說明
2.3.1 升降式機械臂
升降式機械臂作為機器人的執行機構部件之一,包括絲桿滑臺和機械臂兩部分,類似于人的胳膊,主要起到伸縮機械爪到所需位置和承受抓取物體質量等作用。
(1)絲桿滑臺。絲桿滑臺為機械臂的升降運動機構,主要包括滾珠滑桿、滑塊、聯軸器、步進電動機等部件,將步進電動機的旋轉運動轉化成上下直線運動,從而實現機械臂在不同高度進行作業。為降低機器人質量且具有足夠的結構強度,選用歐標鋁型材作為絲桿滑臺背板。此外為方便運輸,絲桿滑臺通過手擰梅花螺母與底盤面板相連,在保證強度的前提下實現機械臂抬升機構的單人拆裝。
(2)機械臂。機械臂主要由關節電動機和臂體組成。考慮到抓取重物的實用性和穩定性,選用恒轉矩關節電動機,在機械臂完全展開的情況下末端仍可抓取0.7 kg左右的物品。機械臂與絲桿滑臺的連接處采用拔插結構設計并通過手擰梅花螺母固定,機械臂外殼采用PLA塑料3D打印。機械臂設計圖如圖6所示。

圖6 機械臂設計加工圖
2.3.2 機械爪
機械爪作為機器人的末端執行機構,主要由爪片連桿和舵機組成,承載著對物體的抓取、放置等功能。機械爪采用可使爪片平行開合的連桿式結構,通過光敏樹脂材料經紫外光固化3D打印。為保證機械手整體作業強度與靈活性,使用25 kg舵機驅動爪片開合以抓取物品,使用另一個舵機帶動整個手爪上下俯仰,使機械爪能夠平穩的放置物品。機械爪等軸測視圖如圖7所示。

圖7 機械爪等軸測視圖
從控制器軟件架構基于FreeRTOS實時操作系統,利用FreeRTOS高效的任務調度機制將程序劃分為多個重要性不同的任務,在各個任務之間合理地分配CPU資源[13]。本系統采用Keil工具實現從控制器軟件的編程,主要包括底盤電動機、機械臂電動機以及機械爪舵機的控制任務、電動機編碼器速度獲取任務、電池電壓檢測任務以及與主控制器的信息交互任務等,運行流程如圖8所示。
(1)電池電壓檢測任務。底盤電動機、機械臂關節電動機的驅動都是從鋰電池獲取的,電池電量的多少對電動機的驅動能力至關重要。從控制器通過AD采樣模塊獲取并監測機器人搭載鋰電池電壓,并實時將電壓值發送給主控器。若電池電壓低于閾值,則說明電池不再適合繼續驅動底盤電動機及機械臂關節電動機的運動,否則因電動機無法輸出足夠扭矩會造成動作走樣甚至危險,且會降低電池組使用壽命。此時,從控制器會發出電壓過低警報。

圖8 從控制器運行流程圖
(2)底盤電動機、機械臂電動機控制任務。從控制器實時采集底盤電動機編碼器數據,并將其反饋給主控制器,判斷機器人已經到達目標點后,向主控制器發布消息(Message),主控制器機械臂控制程序接收到消息后開始完成抓取物體等動作,在執行過程中,從控制器機械臂控制程序通過CAN總線實時采集機械臂各個關節電機反饋的角度信息,并通過串口將角度信息反饋至主控制器機械臂控制程序。當主控制器判斷機械臂執行完一系列動作后會給從控制器發送一個消息(Message),通知機械臂動作完成,以便機械臂控制程序判斷是否運行到下一目標位置。
機械臂關節電動機采用位置控制模式,使用15位絕對編碼器,底盤電動機采用速度控制模式,配有編碼器以實時回傳數據。通過編碼器反饋數據與主控制器路徑規劃出的目標數據之差得到實際偏差數據,主控制器根據實際偏差數據計算得到控制信號,回傳給從控制器,進而控制電動機工作。從控制器底盤電動機控制程序實時將傳感器數據通過消息(Message)發送給主控制器底盤控制系統和機械臂控制系統。
主控制器軟件架構基于ROS平臺開發,主要實現即時定位與地圖構建、路徑規劃以及導航避障等功能。
3.2.1 地圖構建
主控制器軟件系統使用Gmapping[14]軟件包實現地圖構建,涉及的基本組織元有:
(1)gmapping_slam。主要作用是根據激光傳感器所測得的數據進行反饋,進而完成地圖的構建。
(2)amcl。自適應蒙特卡洛定位。采用粒子濾波器來跟蹤已知的地圖中機器人位姿,是機器人在二維平面移動過程中的概率定位系統。該算法將傳入的激光掃描數據轉為里程計結果,從而在地圖中輸出位姿信息。
在實際地圖構建過程中,由于基于二維激光雷達的Gmapping建圖系統存在特殊環境下的建圖失真情況,如無法探測到玻璃門、未知區域無法探測等問題。因此,本文使用一種人工標注柵格地圖的方法來修正自動生成的地圖。
3.2.2 路徑規劃與導航算法
導航是指機器人根據已知地圖和自身的起點位置,自動規劃出到預設目標點的最優路徑,主要包含了全局路徑規劃和局部路徑規劃[15]。
全局路徑規劃采用A星算法,它具有啟發式特點的全局路徑規劃算法,擁有最低的搜索成本。假設起始點為s,目標點為g,N為當前點,n為搜索點,其成本的評價函數為

式中:g(n)為s點移動到N點的實際移動成本;h(n)為從N點到移動到g點的啟發式成本。
局部路徑規劃采用DWA算法。該算法是ROS系統常用的室內環境路徑規劃算法,對滿足移動機器人的線速度和角速度進行采樣;根據采樣的結果結合機器人的運動模型,預測移動軌跡;通過評價函數對預測軌跡評分,選取最優的速度控制移動機器人的運動。
(1)速度采樣。根據機器人自身的局限以及環境的制約,需要將機器人的速度控制在一定范圍,以便進行采樣。其中涉及以下速度因素:

式中:vs表示移動機器人的速度空間;vmin為移動機器人最小線速度;vmax為移動機器人最大線速度;wmin為移動機器人最小加速度;wmax為移動機器人最大線速度;vd表示移動機器人能夠達到的速度空間;va、wa分別為移動機器人當前的線速度和角速度;為移動機器人線速度的最大的加速度;為移動機器人角速度的最大的加速度;t為時間間隔。
為保證機器人在碰到障礙物之前速度降為零,故約束:

式中:dist(v,w)為速度(v,w)對應的估計到最近障礙物的距離;vr機器人的速度空間。
(2)評價函數。軌跡評價函數的作用就是對若干組速度軌跡進行評價,選擇最優路徑避開障礙物。評價函數為


式中:heading(v,ω)表示在當前速度下,預測機器人在軌跡末端時的朝向和目標位置的角度差;dist(v,ω)表示機器人障礙物之間的距離;velocity(v,ω)使機器人盡保持最優速度;α,β,γ為權重系數,示意圖如圖9所示。

圖9 機器人行走軌跡
本文在ROS系統中通過執行Gmapping的軟件包實現地圖的構建,建圖系統的各個節點及節點間的關系如圖10所示。

圖10 建圖節點圖
建圖系統主要包括鍵盤控制節點、機器人底盤控制節點、激光雷達節點、Gmapping節點和地圖服務節點;節點之間的矩形方框表示主題,主題指向節點則表示該節點訂閱了相應的消息,節點指向主題表示該主題發布了相應的消息。
采用roslanuch啟動節點相關,驅動激光雷達獲取環境數據并發布到/scan主題上;運行Gmapping節點和地圖服務節點,打開可視化地圖界面rviz;主控制器啟動鍵盤控制節點,通過鍵盤發送命令給底盤系統,實現機器人的移動;控制機器人在目標場所移動,從而實現地圖的構建,本文選擇實驗樓層場景,建圖效果如圖11所示。
路徑規劃建立在圖11所建柵格地圖上。首先,需要對機器人位姿進行初始化設置,點擊rviz地圖,會出現一個箭頭,箭頭指向即為機器人初始位置的朝向,位姿初始化后可以為機器人選擇目標點的朝向,此后全局規劃器會為機器人規劃出一條全局路徑,從機器人初始位置出發,到目標點結束,如圖12所示(帶箭頭的淺藍色線)。

圖11 地圖構建效果

圖12 實際規劃效果
路徑規劃完成后,現實環境中機器人就會開始沿著規劃好的全局路徑進行移動,若中途不再出現障礙物,機器人會一直沿著該路徑,直到目標點為止。同時在實際測試中,還進行了在已知地圖中增加障礙物的試驗,機器人在行進過程中如果檢測到未知的障礙物,會啟動局部規劃器,繞開障礙物,實現動態避障,完成導航任務。
對該家庭服務機器人實驗系統進行物品的識別和抓取功能測試。方法為:在桌上擺放易拉罐、飲料瓶、零食等物品,機器人根據人的指令識別并抓取目標物品,如圖13所示。

圖13 現場測試
測試時,每個物品識別和抓取15次,求取系統執行的正確率。測試結果表明,該系統可以根據指令正確識別和抓取目標物品,相關測試結果見表2所示。

表2 物品識別和抓取功能測試
本文設計和開發了一種低成本家庭服務機器人實驗系統,采用主從控制器控制結構,主控制器基于ROS實現機器人的即時定位與地圖構建、路徑規劃與導航、語音識別等功能;從控制器基于FreeRTOS主要實現對底盤、升降式機械臂以及機械手的實時控制以及電池電壓檢測等。該服務機器人成功應用于2019年中國機器人大賽家庭服務機器人非限定項目比賽,并取得一等獎的優異成績,測試結果驗證了系統設計的穩定性、可靠性及有效性。
·名人名言·
業精于勤荒于嬉,行成于思毀于隨。
——韓愈《進學解》