金珍珍, 周衛(wèi)華, 鄭 軍, 鄭鵬飛
(1.臺(tái)州職業(yè)技術(shù)學(xué)院 機(jī)電工程學(xué)院, 浙江 臺(tái)州 318000; 2.浙江大學(xué) 臺(tái)州研究院, 浙江 臺(tái)州 318000)
近幾年來,隨著機(jī)器人技術(shù)的迅速發(fā)展,智能移動(dòng)機(jī)器人在倉(cāng)儲(chǔ)物流和工業(yè)生產(chǎn)等領(lǐng)域應(yīng)用廣泛[1]。人工智能、傳感器技術(shù)和控制理論的不斷發(fā)展更是促進(jìn)機(jī)器人向著越來越智能的方向發(fā)展[2]。機(jī)器人控制系統(tǒng)的搭建是個(gè)龐大而復(fù)雜的工程,而機(jī)器人硬件和軟件資源越來越豐富,給軟件開發(fā)設(shè)計(jì)人員帶來更大的挑戰(zhàn)[3]。如果能提高機(jī)器人系統(tǒng)各模塊的復(fù)用性和可移植性,就可以在不同的機(jī)器人上分享和復(fù)用這些已經(jīng)實(shí)現(xiàn)的功能,這將給設(shè)計(jì)人員節(jié)省了大量的重復(fù)勞動(dòng)時(shí)間,可以更加便捷快速地完成工作。ROS操作系統(tǒng)的出現(xiàn)極大地解決了設(shè)計(jì)師們的難題。ROS系統(tǒng)的開源特性和分布式結(jié)構(gòu)得到了眾多機(jī)器人開發(fā)者的青睞[4-5],框架中各個(gè)功能獨(dú)立存在,可獨(dú)立設(shè)計(jì)、編譯和運(yùn)行,也可以以功能包的形式發(fā)布在ROS社區(qū)與他人共享,便于傳播和分發(fā)[6]。
課題組設(shè)計(jì)的智能移動(dòng)機(jī)器人以裝載ROS系統(tǒng)的樹莓派作為主控上位機(jī),采用激光雷達(dá)和深度相機(jī)等檢測(cè)設(shè)備,自行搭配嵌入式下位機(jī),可對(duì)移動(dòng)機(jī)器人實(shí)現(xiàn)多種方式的運(yùn)動(dòng)控制、定位及自主導(dǎo)航等功能,深度開發(fā)ROS系統(tǒng),便捷增減功能模塊,為進(jìn)一步深入研究機(jī)器人導(dǎo)航算法等提供了可靠的硬件平臺(tái)。
智能移動(dòng)機(jī)器人控制系統(tǒng)采用頂層與底層控制相結(jié)合的方式來實(shí)現(xiàn)地圖構(gòu)建與自主導(dǎo)航[7]。頂層控制系統(tǒng)使用樹莓派4B作為上位機(jī),裝載Ubuntu 18.04以及ROS Melodic操作系統(tǒng),通過USB接口連接激光雷達(dá),接收外界環(huán)境信息給樹莓派進(jìn)行處理,在移動(dòng)過程中通過連接深度相機(jī)實(shí)時(shí)上傳拍攝信息。底層控制系統(tǒng)以STM32控制器為核心,接收來自頂層控制的速度命令,輸出PWM信號(hào)給電機(jī)驅(qū)動(dòng)控制帶編碼器的電機(jī)轉(zhuǎn)動(dòng),并根據(jù)電機(jī)的速度反饋回STM32控制器來實(shí)現(xiàn)閉環(huán)控制。同時(shí)配備了IMU加速度陀螺儀傳感器來校準(zhǔn)各種參數(shù)。另外配備藍(lán)牙、PS2有線手柄和航模遙控等設(shè)備對(duì)機(jī)器人進(jìn)行控制,并提供了串口 1 和 CAN 接口方便用戶拓展控制。STM32控制器和樹莓派4B之間通過串口通信來實(shí)現(xiàn)數(shù)據(jù)傳輸[8]。機(jī)器人設(shè)計(jì)框圖如圖1所示。
圖1 機(jī)器人設(shè)計(jì)框圖Figure 1 Block diagram of robot design
底層控制系統(tǒng)以STM32F103RCT6最小系統(tǒng)板為控制核心,組成一個(gè)功能完善的微型系統(tǒng),硬件成本低,通用性強(qiáng),使用KEIL環(huán)境開發(fā),程序可自主設(shè)計(jì),方便移植[9]。
STM32運(yùn)動(dòng)底盤上集成了型號(hào)為MPU6050的IMU傳感器,該IMU集成了三軸角速度計(jì)和三軸加速度計(jì),控制器采集IMU數(shù)據(jù)后發(fā)送給ROS[10]。
OLED顯示屏主要顯示當(dāng)前機(jī)器人的型號(hào)和Z軸零點(diǎn)漂移數(shù)據(jù)、Z軸角速度、左右電機(jī)的目標(biāo)值與測(cè)量值、舵機(jī)PWM控制值、控制模式、使能開關(guān)和電池電壓等。
電機(jī)驅(qū)動(dòng)板采用12 A/24 V雙路MOS大直流有刷電機(jī)驅(qū)動(dòng)器,內(nèi)置過電壓、欠電壓和過熱保護(hù)電路。機(jī)器人電機(jī)采用MD36N 35 W直流有刷電機(jī),自帶500線AB相光電編碼器,可用作轉(zhuǎn)速反饋以及里程計(jì),用來控制直徑為125 mm的實(shí)心橡膠輪。機(jī)器人前輪設(shè)有轉(zhuǎn)向機(jī)構(gòu),后輪提供雙電機(jī)提供動(dòng)力,可以有效適應(yīng)凹凸不平地面,實(shí)物如圖2所示。
圖2 智能移動(dòng)機(jī)器人Figure 2 Intelligent mobile robot
智能移動(dòng)機(jī)器人的頂層控制系統(tǒng)的硬件核心為一臺(tái)裝載Ubuntu 18.04以及ROS melodic的樹莓派4B,具有2 GiB內(nèi)存,內(nèi)含2個(gè)USB3.0接口和2個(gè)USB2.0接口。在裝載相同的操作系統(tǒng)和ROS melodic的移動(dòng)電腦上通過遠(yuǎn)程掛載的方式可遠(yuǎn)程監(jiān)視和控制機(jī)器人移動(dòng)狀況。樹莓派4B通過深度相機(jī)和激光雷達(dá)獲取的環(huán)境數(shù)據(jù)進(jìn)行數(shù)據(jù)處理后實(shí)現(xiàn)建圖,并根據(jù)建好的地圖實(shí)現(xiàn)自主避障導(dǎo)航。同時(shí)把底盤運(yùn)動(dòng)信息和傳感器信息等數(shù)據(jù)通過無線路由器發(fā)送給移動(dòng)電腦,移動(dòng)電腦接收數(shù)據(jù)后對(duì)此進(jìn)行分析和處理,并通過無線路由器向樹莓派4B發(fā)送任務(wù)指令對(duì)機(jī)器人進(jìn)行遠(yuǎn)程控制。
為了實(shí)現(xiàn)多種模式的命令控制,STM32控制器根據(jù)任務(wù)的優(yōu)先級(jí)決定任務(wù)的執(zhí)行順序,每個(gè)任務(wù)執(zhí)行時(shí)間很短,等同于所有任務(wù)同時(shí)執(zhí)行,期間如發(fā)生中斷則去響應(yīng)中斷。串口2中斷用于APP藍(lán)牙控制,串口3中斷用于接收ROS傳過來的信息。圖3所示為STM32控制器程序執(zhí)行流程,其中的任務(wù)排序不代表任務(wù)優(yōu)先級(jí)。
機(jī)器人的建圖導(dǎo)航需要IMU、里程等數(shù)據(jù),可通過樹莓派直接連接并采集這些傳感器的信息。為了建立可靠且高效的機(jī)器人控制系統(tǒng),ROS框架建立在充分利用開源社區(qū)資源的基礎(chǔ)上,把各個(gè)功能包和節(jié)點(diǎn)實(shí)時(shí)有效地組合起來[11]。
樹莓派主要實(shí)現(xiàn)傳感器的數(shù)據(jù)采集、環(huán)境地圖創(chuàng)建、定位及導(dǎo)航規(guī)劃及運(yùn)動(dòng)命令的發(fā)送等,ROS系統(tǒng)提供了強(qiáng)大的可視化工具,可遠(yuǎn)程實(shí)時(shí)觀測(cè)當(dāng)前機(jī)器人的狀態(tài)[12-13],具體如圖4所示。
圖3 STM32 控制器程序執(zhí)行流程圖Figure 3 Program execution flow chart of STM32 controller
圖4 機(jī)器人執(zhí)行系統(tǒng)框圖Figure 4 Block diagram of robot execution system
為了測(cè)試智能小車建圖和避障導(dǎo)航功能的可靠性,在小車制作完成后對(duì)它進(jìn)行了各項(xiàng)功能測(cè)試。
小車上電,移動(dòng)電腦連接小車Wi-Fi,用SSH命令遠(yuǎn)程登錄小車的樹莓派系統(tǒng),輸入密碼;啟動(dòng)建圖命令。同時(shí)在遠(yuǎn)程電腦終端開啟Rviz命令觀測(cè)。地圖構(gòu)建過程中小車的運(yùn)動(dòng)由APP藍(lán)牙控制。圖5所示為測(cè)試環(huán)境圖片。圖6所示為小車構(gòu)建的地圖。
圖5 測(cè)試實(shí)際環(huán)境Figure 5 Actual testing environment
圖6中黑色線條為障礙物,灰色部分為安全區(qū)域,深色區(qū)域?yàn)槲粗獏^(qū)域。
圖6 小車所建地圖Figure 6 Map built by car
建圖后對(duì)地圖進(jìn)行保存,把小車放在建圖時(shí)的起點(diǎn)位置,以起點(diǎn)為原點(diǎn),創(chuàng)建一個(gè)坐標(biāo)系(X軸為橫軸,Y軸為縱軸),小車車頭與Y軸重合。執(zhí)行導(dǎo)航命令開啟機(jī)器人底層節(jié)點(diǎn)和機(jī)器人導(dǎo)航相關(guān)節(jié)點(diǎn)。為了更加直觀,導(dǎo)航目標(biāo)直接使用Rviz通過鼠標(biāo)拖拽設(shè)定。移動(dòng)電腦終端運(yùn)行Rviz命令,使用2D Nav Goal功能設(shè)定目標(biāo)位置。從測(cè)試結(jié)果來看,在行進(jìn)過程中,地圖會(huì)為小車提供多種可能的路徑,小車沿著其中的一條路徑前進(jìn)或倒退,而且總能有效識(shí)別環(huán)境中的障礙物,并正確規(guī)避障礙物運(yùn)動(dòng)。
在導(dǎo)航測(cè)試中,隨機(jī)設(shè)定8個(gè)目標(biāo)點(diǎn),給定目標(biāo)位置的坐標(biāo)值,再測(cè)量機(jī)器人到達(dá)目標(biāo)位置的情況來計(jì)算機(jī)器人的導(dǎo)航精度。根據(jù)小車的目標(biāo)位置和到達(dá)位置的數(shù)據(jù)比對(duì),進(jìn)而得到導(dǎo)航的平均精度。導(dǎo)航實(shí)驗(yàn)數(shù)據(jù)如表1所示。
表1 導(dǎo)航實(shí)驗(yàn)數(shù)據(jù)
由表1數(shù)據(jù)分析可得到智能移動(dòng)機(jī)器人的平均導(dǎo)航位置精度為4.3 cm,平均角度精度為2°,基本滿足設(shè)計(jì)要求。設(shè)計(jì)精度有待在以后的進(jìn)一步研究中提高。
課題組基于ROS系統(tǒng)設(shè)計(jì)了智能移動(dòng)機(jī)器人控制系統(tǒng)。該系統(tǒng)以分層結(jié)構(gòu)設(shè)計(jì),上位機(jī)采用樹莓派作為控制器,利用激光雷達(dá)和深度相機(jī)作為外界環(huán)境信息采集系統(tǒng),下位機(jī)以STM32控制器為核心,能與上位機(jī)進(jìn)行有效的數(shù)據(jù)交互。通過實(shí)驗(yàn)測(cè)試結(jié)果分析了機(jī)器人控制系統(tǒng)的性能,驗(yàn)證了系統(tǒng)的有效性,基本滿足機(jī)器人導(dǎo)航算法研究的要求。相比其他控制系統(tǒng),該系統(tǒng)控制精度高,模塊化設(shè)計(jì),功能拓展便捷,成本低,能夠較好地滿足復(fù)用性和可移植性的要求。本研究控制系統(tǒng)為移動(dòng)機(jī)器人的研究提供了參考,導(dǎo)航算法及路徑規(guī)劃在后續(xù)的研究中有待進(jìn)一步優(yōu)化和完善。