李 剛,王李孫
(廣西大學(xué) 電氣工程學(xué)院,廣西 南寧 530004)
移動機器人以其具有靈活性、能夠提高生產(chǎn)效率和改善勞動條件等優(yōu)點而得到廣泛應(yīng)用[1]。常見的移動機器人的移動機構(gòu)有很多種,包括輪式、腿式和復(fù)合式等。其中,由于輪式移動機器人的結(jié)構(gòu)設(shè)計與控制方式相對簡單,被廣泛使用于各種工作環(huán)境[2]。而市場上的輪式移動機器人大多采用差速轉(zhuǎn)向、兩輪驅(qū)動的工作方式[3],雖然它們可以到達(dá)工作場景下任何方向和位置,但由于它們輪子的非完整約束特性,其運動能力受到限制,需要復(fù)雜的操作和軌跡規(guī)劃[4]。
本文為了提高輪式移動機器人的環(huán)境適應(yīng)性和靈活性,設(shè)計了移動機器人的四輪獨立驅(qū)動轉(zhuǎn)向遠(yuǎn)程控制系統(tǒng)。該系統(tǒng)可以實現(xiàn)移動機器人縱向直行、橫向直行、斜向直行、原地旋轉(zhuǎn)和四輪轉(zhuǎn)向等多種行車方式;并在此基礎(chǔ)上使用云服務(wù)器搭建物聯(lián)網(wǎng)節(jié)點,實現(xiàn)遠(yuǎn)程控制。
全向移動機器人遠(yuǎn)程控制系統(tǒng)結(jié)構(gòu)如圖1 所示,主要由手機應(yīng)用程序、云服務(wù)器、底層控制器、電機驅(qū)動系統(tǒng)、監(jiān)控系統(tǒng)組成。工作人員通過操作手機應(yīng)用程序發(fā)送指令,由云服務(wù)器傳達(dá)指令,底層控制器接收并解析指令,最終實現(xiàn)移動機器人的行走、轉(zhuǎn)向等運動。
圖1 總系統(tǒng)結(jié)構(gòu)設(shè)計框圖
遠(yuǎn)程無線通信的核心部分是云服務(wù)器。云服務(wù)器是基于阿里云平臺以及Linux 系統(tǒng)搭建設(shè)計,包括消息轉(zhuǎn)發(fā)服務(wù)器和流媒體轉(zhuǎn)發(fā)服務(wù)器,能夠確保全天24 h 無間斷穩(wěn)定工作[5]。消息轉(zhuǎn)發(fā)服務(wù)器在確認(rèn)客戶端連接成功后,會自動回復(fù)“成功連接”字樣。為方便管理員管理設(shè)備連接,將不同控制系統(tǒng)與上位機進(jìn)行ID 捆綁。在數(shù)據(jù)傳輸時,控制系統(tǒng)將執(zhí)行設(shè)備上的數(shù)據(jù)上傳至服務(wù)器。服務(wù)器根據(jù)ID 號,將數(shù)據(jù)發(fā)至指定上位機實現(xiàn)數(shù)據(jù)指令的遠(yuǎn)程交互。流媒體轉(zhuǎn)發(fā)服務(wù)器利用公網(wǎng)IP 把執(zhí)行設(shè)備的實時視頻流封裝成一個公網(wǎng)可訪問的RTSP 流地址。手機上只需要點開APP 內(nèi)的播放器即可實現(xiàn)在線監(jiān)視。
遠(yuǎn)程控制中的手機應(yīng)用程序是基于安卓系統(tǒng)平臺,以JAVA語言為基礎(chǔ),使用谷歌公司的Android-Studio集成開發(fā)工具開發(fā)[6],其主要功能是通過手機終端與云服務(wù)器的連接實現(xiàn)移動機器人的遠(yuǎn)程控制,同時獲取移動機器人的監(jiān)測數(shù)據(jù)。程序界面設(shè)計主要包括兩部分:首先,考慮到四輪獨立驅(qū)動與四輪獨立轉(zhuǎn)向的原因,移動機器人在初次使用時需要校正車輪零位,所以單獨設(shè)計了調(diào)車界面,方便工作人員根據(jù)現(xiàn)場自主設(shè)定初始位置,如圖2(a)所示;其次,工作人員需要根據(jù)周圍環(huán)境實時改變行走路徑,故設(shè)計了RTSP 視頻流地址播放器,如圖2(b)所示,實時轉(zhuǎn)播移動機器人的攝像頭傳輸回來的視頻信號。
圖2 手機APP 設(shè)計頁面
移動機器人的底層控制器設(shè)計采用模塊化的思想[7-8],按照功能要求,主要將底層控制電路分為電源部分、通信部分、檢測部分、繼電器隔離部分以及主控制器,這樣不僅便于安裝,也便于后續(xù)升級、維修電路等。同時,考慮到車身過大,單控制器可能出現(xiàn)主程序運行不穩(wěn)定,車身走線繁雜等問題,系統(tǒng)采用雙MCU 結(jié)構(gòu),設(shè)計成主從式分布結(jié)構(gòu),主從板同時處理左右側(cè)信號并通過CAN 總線進(jìn)行通信和協(xié)調(diào)工作。底層控制電路結(jié)構(gòu)如圖3 所示。
圖3 系統(tǒng)硬件電路設(shè)計
以ARM Cortex-M3 內(nèi)核的STM32F103RCT6 控制器作為控制核心,程序存儲器容量為256 KB,具有64 個引腳,支持I2C、SPI 和串口等外設(shè)[9];電源模塊的60 V 輸入電壓由車載鉛酸蓄電池提供,5 V 和3.3 V 輸出電壓分別由LM2596 和AMS1117-3.3 V 模塊提供,為各類傳感器、控制器以及電機等用電模塊供電;通信模塊設(shè)計包括WiFi 無線通信、CAN 總線通信,WiFi 無線通信電路負(fù)責(zé)與云服務(wù)器進(jìn)行數(shù)據(jù)交互,CAN 總線通信電路負(fù)責(zé)左右兩側(cè)的單片機的數(shù)據(jù)交互;檢測模塊包括絕對值編碼器和增量式編碼器,絕對值編碼器用來檢測各個車輪角度,增量式編碼器用來檢測各個車輪速度;繼電器模塊用來連接主控制器與電機驅(qū)動器,以解決二者電平不匹配的問題。
控制系統(tǒng)程序包括上電后各個模塊的初始化、通信模塊的數(shù)據(jù)發(fā)送與接收、移動機器人動作控制以及數(shù)據(jù)檢測模塊讀取到的數(shù)據(jù)信息的處理分析。
系統(tǒng)的初始化包括主控的定時器、串口、SPI 總線、CAN 總線、GPIO 引腳和ESP8266 的初始化;通信模塊的數(shù)據(jù)發(fā)送與接收主要包括ESP8266 與云服務(wù)器的數(shù)據(jù)傳輸和發(fā)送。
系統(tǒng)程序主要包括無線模塊數(shù)據(jù)發(fā)送與接收以及叉車行走過程中的邏輯判斷,包括車輛轉(zhuǎn)向、輪子正位等。為防止系統(tǒng)出現(xiàn)由于信號不穩(wěn)定等特殊情況造成的車輛與服務(wù)器的斷開連接,在初始化階段加入STM32 內(nèi)部的窗口看門狗程序[10],若超過2 s 沒有來自服務(wù)器的響應(yīng),系統(tǒng)將會重新發(fā)送連接指令,直到重新與服務(wù)器連接上為止。控制程序流程如圖4 所示。
圖4 系統(tǒng)主程序流程
為了實現(xiàn)移動機器人的動作控制,操作人員只需要點擊相應(yīng)按鈕發(fā)送指令就可以實現(xiàn)移動機器人的行走、停車、轉(zhuǎn)向等操作。其中指令包含狀態(tài)指令、動作指令,狀態(tài)指令旨在將移動機器人狀態(tài)進(jìn)行改變,動作指令旨在控制移動機器人在某一狀態(tài)下的動作方式。另外,在一些網(wǎng)絡(luò)狀況不好的區(qū)域,為保證安全,加入報警模式,使得移動機器人在斷開連接后,操作端能夠及時發(fā)現(xiàn)問題并解決。
作為轉(zhuǎn)向模型中常用的控制手法,阿克曼原理指在忽略側(cè)向力、傾斜等因素的理想狀態(tài)下,所有車輪的旋轉(zhuǎn)中心線最終交于一點,保證車輛在移動中發(fā)生轉(zhuǎn)向,車輪做純滾動而不發(fā)生側(cè)滑[11]?;诎⒖寺恚疚脑O(shè)計的全向輪式移動機器人具有縱向直行、橫向直行、斜向直行、原地旋轉(zhuǎn)和四輪轉(zhuǎn)向等多種運動狀態(tài),因此具有更高的靈活性、更小的轉(zhuǎn)彎半徑以及更高的環(huán)境適應(yīng)能力。
目前,四輪轉(zhuǎn)向技術(shù)的研究主要分為低速轉(zhuǎn)向模型和高速轉(zhuǎn)向模型[12],二者主要以行駛速度作為區(qū)分。高速行駛時,為防止因出現(xiàn)較大偏側(cè)角而引起側(cè)傾翻,前后輪偏轉(zhuǎn)方向需要保持一致,實現(xiàn)同相位轉(zhuǎn)向。由于本文設(shè)計的全向輪式機器人主要應(yīng)用場景為一些狹窄、不方便人工直接操作的作業(yè)環(huán)境,需要限制機器人的移動速度,故僅考慮低速模型即可。低速時,前后輪偏轉(zhuǎn)角度相等、方向相反,實現(xiàn)逆相位轉(zhuǎn)向[13-15],以獲得更小的轉(zhuǎn)彎半徑,具體實現(xiàn)方式如圖5 所示。
圖5 低速四輪轉(zhuǎn)向模型
以移動機器人右轉(zhuǎn)為例,依照圖5 中的低速四輪轉(zhuǎn)向模型中的幾何關(guān)系,可以得到移動機器人4 個車輪轉(zhuǎn)向時偏轉(zhuǎn)角關(guān)系滿足式(1)。
式中:θi(i=1, 2, 3, 4)分別為4 個直流電機的轉(zhuǎn)向角大小;W為左右輪輪距大??;L為前后輪輪距大小。
根據(jù)式(1),通過設(shè)置外側(cè)輪的轉(zhuǎn)向角,則可以進(jìn)一步計算出機器人的內(nèi)側(cè)輪轉(zhuǎn)向角。以右轉(zhuǎn)為例,左側(cè)輪為外側(cè)輪,則有:
由于低速四輪轉(zhuǎn)向模型中,同側(cè)車輪轉(zhuǎn)向角方向相反、角度相等,因此可以得到每個控制轉(zhuǎn)向的旋轉(zhuǎn)角度,以及對應(yīng)的旋轉(zhuǎn)方向。
在全向移動機器人的轉(zhuǎn)向過程中,理論上是其圍繞ICR(瞬時旋轉(zhuǎn)中心)做圓周運動,內(nèi)外側(cè)輪轉(zhuǎn)向半徑不同,因此轉(zhuǎn)向過程中內(nèi)外側(cè)輪的線速度大小也不相同。由于一般的移動機器人多是采用后輪驅(qū)動的方式,在轉(zhuǎn)向過程中內(nèi)外側(cè)輪的驅(qū)動力矩相同,會產(chǎn)生額外的橫擺力矩,容易導(dǎo)致輪胎發(fā)生相對滑動[16]。
為解決上述問題,全向移動機器人在四輪獨立的基礎(chǔ)上增加了四輪獨立驅(qū)動控制,根據(jù)移動機器人的各個車輪轉(zhuǎn)向角度以及移動機器人質(zhì)心速度大小確定各輪所需實際轉(zhuǎn)速,使其與傳統(tǒng)輪式移動機器人相比具有更大的優(yōu)勢[15,17]。
根據(jù)上文中的低速四輪轉(zhuǎn)向模型,可以得到:
式中:Ri(i=1, 2, 3, 4)為4 個車輪轉(zhuǎn)彎半徑;r為內(nèi)側(cè)輪到ICR(瞬時移動中心)的距離。
由V=ωr可得:
式中:vi(i=1, 2, 3, 4)分別為4 個直流電機的線速度大?。沪貫檗D(zhuǎn)向時移動機器人的向心角速度。
根據(jù)式(4),設(shè)置外側(cè)輪轉(zhuǎn)向時速度大小,結(jié)合內(nèi)外側(cè)輪轉(zhuǎn)向角度,就可以通過計算得到內(nèi)側(cè)輪轉(zhuǎn)向過程中的轉(zhuǎn)速大小。以右轉(zhuǎn)為例,可得:
四輪獨立驅(qū)動轉(zhuǎn)向具體控制策略如圖6 所示。圖中γi(i=1, 2, 3, 4)分別表示移動機器人4 個移動輪的給定角度;γif(i=1, 2, 3, 4)分別表示移動機器人4 個移動輪的實時檢測角度;vi(i=1, 2, 3, 4)分別表示移動機器人4 個移動輪的給定速度;vif(i=1, 2, 3, 4)分別表示移動機器人4 個移動輪的實時檢測速度。由式(2)和式(5)可知,控制移動機器人轉(zhuǎn)向操作僅需要輸入某一個移動輪的轉(zhuǎn)向角度和移動速度,控制系統(tǒng)就可以解算出其余3 個移動輪的轉(zhuǎn)向角度和移動速度。程序根據(jù)解算出來的結(jié)果,結(jié)合相應(yīng)的模塊控制器,從而實現(xiàn)移動機器人的四輪獨立驅(qū)動轉(zhuǎn)向的控制。
圖6 四輪獨立驅(qū)動轉(zhuǎn)向具體控制策略
為防止因負(fù)載不一致影響各個驅(qū)動電機的轉(zhuǎn)速,在原有的開環(huán)控制系統(tǒng)中加入PID 控制器進(jìn)行閉環(huán)控制,保證移動機器人穩(wěn)定運動。其中,為獲取無刷減速電機實際轉(zhuǎn)速,在電機上加裝分辨率為2 000 P/R 的增量式旋轉(zhuǎn)編碼器??刂葡到y(tǒng)獲取移動輪實際轉(zhuǎn)速,將之與設(shè)定值一起送入PID 控制器,通過試驗整定PID 參數(shù),最后實現(xiàn)無刷電機的穩(wěn)定驅(qū)動。相對于無刷直流電機的控制,步進(jìn)電機僅需保證固定速度轉(zhuǎn)向即可。但為了防止在控制步進(jìn)電機轉(zhuǎn)動時出現(xiàn)丟步,加裝絕對值編碼器,實時檢測移動輪的角度位置。
根據(jù)設(shè)計的總體需求,所搭建的全向移動機器人遠(yuǎn)程控制系統(tǒng)包括全向的移動機器人、硬件控制板、云服務(wù)器系統(tǒng)以及安卓APP。移動機器人實物如圖7 所示。實物前后移動輪軸距1.315 m,左右輪軸距為1.490 m。
圖7 全向移動機器人實物圖
控制系統(tǒng)的可靠性試驗主要包括測試系統(tǒng)能否長時間穩(wěn)定運行、測試移動機器人能否完成指令要求、報警模式響應(yīng)時間以及測試控制過程中在線監(jiān)視功能的延遲時間。
在測試系統(tǒng)能否長時間穩(wěn)定運行的試驗中,以電池滿電到完全耗盡電量總計4 h 為標(biāo)準(zhǔn)。在一次完整的電池放電時間內(nèi),出現(xiàn)系統(tǒng)斷開連接次數(shù)小于等于1 次,且在斷開連接后能夠在4 s 內(nèi)重新恢復(fù)通信。
遠(yuǎn)程控制移動機器人進(jìn)行指令完成度的測試過程中,移動機器人對于各個運動指令均能較好地實現(xiàn)基礎(chǔ)要求,且響應(yīng)時間小于200 ms。
報警模式響應(yīng)時間的測試過程中,為判斷何時網(wǎng)絡(luò)變差,測試中人為斷開網(wǎng)絡(luò),測量報警模式響應(yīng)時間。響應(yīng)時間見表1 所列。
表1 報警模式響應(yīng)時間
在線監(jiān)視功能的延遲時間的測試主要通過現(xiàn)場測試人員與手機端操作人員進(jìn)行時間上的比對。分別在一次移動機器人行駛的初始時間、運行0.5 h 后、運行1 h 后以及運行2 h后四個時間點進(jìn)行測試。測試結(jié)果見表2 所列。
表2 視頻延時測試結(jié)果
根據(jù)表2 所測量的數(shù)據(jù),在網(wǎng)絡(luò)信號良好的情況下,視頻延時基本穩(wěn)定在1.2 s 左右,對低速運行的移動機器人的影響不大。
試驗結(jié)果表明,移動機器人能夠長時間地穩(wěn)定運行,且對指令的完成度良好以及其在線監(jiān)視功能的延時性很低。整體而言,控制系統(tǒng)具有較高的可靠性。
進(jìn)行四輪轉(zhuǎn)向測試實驗時,遠(yuǎn)程控制移動機器人在運動模式下以1 m/s 的固定行駛速度低速行駛。移動機器人四輪轉(zhuǎn)向測試實驗中,加入前輪轉(zhuǎn)向?qū)嶒炦M(jìn)行對比。轉(zhuǎn)向?qū)嶒灥臏y試內(nèi)容為固定移動機器人的內(nèi)側(cè)輪轉(zhuǎn)向角時,測試移動機器人內(nèi)側(cè)輪的實際轉(zhuǎn)彎半徑。測試的6 組數(shù)據(jù)見表3 所列。表中左轉(zhuǎn)為負(fù),右轉(zhuǎn)為正。
表3 轉(zhuǎn)彎半徑測試結(jié)果 單位:m
實驗結(jié)果表明,與前輪轉(zhuǎn)向相比,四輪轉(zhuǎn)向極大地減小了移動機器人的轉(zhuǎn)彎半徑。
本文根據(jù)全向移動機器人的運動特點,設(shè)計開發(fā)了一套全向移動機器人的遠(yuǎn)程控制系統(tǒng),實現(xiàn)了遠(yuǎn)程無線控制各個移動輪的行走和轉(zhuǎn)向。實驗結(jié)果表明,本文所設(shè)計的全向移動機器人相對于傳統(tǒng)移動機器人擁有更小的轉(zhuǎn)向半徑,可以在不改變車身方向的同時進(jìn)行斜行,甚至可以實現(xiàn)原地旋轉(zhuǎn),在不同的工作環(huán)境中有著更好的適應(yīng)能力。遠(yuǎn)程控制時,該系統(tǒng)運行穩(wěn)定、響應(yīng)速度快,一定程度上降低了人力成本和人工現(xiàn)場作業(yè)的危險系數(shù);也為下一步在全向移動機器人上繼續(xù)搭載視覺導(dǎo)航等系統(tǒng),實現(xiàn)路徑規(guī)劃以及無人駕駛等功能奠定了基礎(chǔ)。