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