潘雪熒 吳慶達(dá)
(聊城大學(xué)東昌學(xué)院,聊城 252000)
仿蠶機(jī)器人是一種靠蠕動運動前進(jìn)的移動機(jī)器人,由多個關(guān)節(jié)正交模塊組成。由于其特殊的運動模式和結(jié)構(gòu),運動時重心低、與地面接觸面積大,因此運動起來非常穩(wěn)定,具有很強(qiáng)的環(huán)境適應(yīng)性[1]。
仿蠶機(jī)器人采用模塊化的機(jī)械結(jié)構(gòu),每個模塊都包括一個俯仰關(guān)節(jié)和偏航關(guān)節(jié),俯仰關(guān)節(jié)可以實現(xiàn)蠕動運動,偏航關(guān)節(jié)可以實現(xiàn)蜿蜒運動。為了使機(jī)器人完成不同形態(tài)的運動,需要控制系統(tǒng)實現(xiàn)機(jī)器人不同步態(tài)的運動形式。
由于小型仿蠶機(jī)器人需要同時控制4 個俯仰舵機(jī)、3 個偏航舵機(jī)和1 個柔性腹節(jié)驅(qū)動器,驅(qū)動控制信號的發(fā)送和傳感器數(shù)據(jù)的接收應(yīng)同步進(jìn)行,實時同步性要求較高。文章基于Qt 開發(fā)了一款機(jī)器人上位機(jī)控制界面,主要功能是實現(xiàn)個人計算機(jī)(Personal Computer,PC)端與機(jī)器人的通信,通過軟件監(jiān)控仿蠶機(jī)器人的控制和運行狀態(tài)。
文章所述上位機(jī)軟件的試驗對象是一款模塊化設(shè)計的仿蠶機(jī)器人,如圖1 所示。它的每一節(jié)體節(jié)都由一組正交模塊組成,每組正交模塊包含一個俯仰單元和一個偏航單元,共4 組正交模塊,能夠有效保證其穩(wěn)定運行。仿蠶機(jī)器人全長0.702 m,直徑約0.560 m。
圖1 仿蠶機(jī)器人
外圍硬件電路的主要模塊如表1 所示。
表1 硬件電路清單
仿蠶機(jī)器人硬件系統(tǒng)的設(shè)計方案如圖2 所示,主要包括主控制器、電源模塊、驅(qū)動模塊、傳感器單元以及視頻監(jiān)控模塊等。
圖2 硬件控制系統(tǒng)架構(gòu)圖
控制系統(tǒng)首先對定時器和系統(tǒng)變量等進(jìn)行初始化,然后對串口通信、集成電路總線(Inter-Integrated Circuit,IIC)通信、串行外設(shè)接口(Serial Peripheral Interface,SPI)通信等接口進(jìn)行配置。系統(tǒng)進(jìn)入主循環(huán)后,獲取傳感器數(shù)據(jù),等待接收控制指令[2]。具體流程如圖3 所示。
圖3 主程序流程
文章設(shè)計的機(jī)器人控制算法的控制參數(shù)為A、λ、ω,分別控制機(jī)器人蠕動峰值大小、運動方向和傳遞速度。上位機(jī)將這3 個參數(shù)轉(zhuǎn)化為脈沖寬度調(diào)制(Pulse Width Modulation,PWM)信號,不同參數(shù)會影響仿蠶機(jī)器人的驅(qū)動角度和速度,以調(diào)整機(jī)器人的步態(tài)[3]。
試驗測試過程中,會通過上位機(jī)發(fā)送不同參數(shù),驗證不同參數(shù)對機(jī)器人運行步態(tài)的影響,通過試驗結(jié)果選取控制機(jī)器人的最優(yōu)參數(shù)。
仿蠶機(jī)器人上位機(jī)控制界面基于Qt 進(jìn)行開發(fā),該上位機(jī)軟件的主要功能:實現(xiàn)上位機(jī)與機(jī)器人的通信;設(shè)置機(jī)器人控制參數(shù);機(jī)器人傳感器數(shù)據(jù)信息的傳輸和顯示;監(jiān)控機(jī)器人的行進(jìn)環(huán)境;顯示機(jī)器人的實時坐標(biāo)。上位機(jī)控制界面方案如圖4 所示。
圖4 小型仿蠶機(jī)器人總體控制方案
軟件界面設(shè)計主要考慮人機(jī)交互,為方便軟件操作者使用,將各模塊功能合理分區(qū),合理布局。軟件界面如圖5 所示。
圖5 小型仿蠶機(jī)器人控制軟件
上位機(jī)采用NRF24L01 模塊的通用串行總線(Universal Serial Bus,USB)轉(zhuǎn)串口模塊通信,主要用于上位機(jī)發(fā)送運動控制指令及接收下位機(jī)收集的傳感器數(shù)據(jù)信息。串口通信模塊由串口配置、串口開關(guān)和數(shù)據(jù)窗口3 部分組成。
2.1.1 界面顯示
串口通信首先要使用函數(shù)availablePorts 獲取可用的串口信息列表。串口在接收數(shù)據(jù)時,通過connect 函數(shù)與處理數(shù)據(jù)的槽函數(shù)連接,對接收的數(shù)據(jù)進(jìn)行解析,數(shù)據(jù)解析后顯示在數(shù)據(jù)窗口區(qū),實現(xiàn)數(shù)據(jù)的可視化。為了操作安全,設(shè)計了串口關(guān)閉狀態(tài)時,控制區(qū)下發(fā)控制命令的按鍵為灰色不可用狀態(tài),串口打開后使能按鍵,才可以通過按鍵下發(fā)控制指令。
2.1.2 數(shù)據(jù)接收與解析
串口通信模塊接收數(shù)據(jù)后,需要對數(shù)據(jù)塊進(jìn)行解析,上位機(jī)軟件收到仿蠶機(jī)器人的數(shù)據(jù)信息后將其轉(zhuǎn)化為字符型數(shù)據(jù)。機(jī)器人在運動過程中,接收下位機(jī)控制板發(fā)送的傳感器信號[4]。傳感器信息的長度為21 Bytes,字節(jié)0 為前導(dǎo)碼,用來判斷信號類型;字節(jié)1 為信號長度,用來判斷信號是否丟幀;字節(jié)20 為尾幀,用來判斷信號的完整性。數(shù)據(jù)信息字節(jié)格式如圖6 所示。
圖6 數(shù)據(jù)信息字節(jié)格式
2.1.3 數(shù)據(jù)存儲
機(jī)器人控制板通過定時器每20 ms 發(fā)送一次傳感器信號。由于數(shù)據(jù)量大,內(nèi)存空間有限,將數(shù)據(jù)存放到鏈表QList 中保存。為了后續(xù)試驗測試驗證,遍歷存放在鏈表中的數(shù)據(jù),并寫入文件保存。
上位機(jī)通過串口通信發(fā)送主要控制參數(shù)給下位機(jī),下位機(jī)接收并解析數(shù)據(jù),執(zhí)行相應(yīng)操作。參數(shù)數(shù)據(jù)的長度為9 Bytes,前導(dǎo)碼為狀態(tài)選擇位,通過不同前導(dǎo)碼區(qū)分機(jī)器人的蠕動、轉(zhuǎn)彎兩種狀態(tài)。在參數(shù)設(shè)置模塊設(shè)置控制參數(shù)A和ω的值,根據(jù)機(jī)器人控制函數(shù)解算出各正交模塊驅(qū)動舵機(jī)的轉(zhuǎn)動角度,通過控制信號發(fā)送給下位機(jī)。
實時數(shù)據(jù)顯示是實現(xiàn)數(shù)據(jù)可視化的重要組成部分,主要包括傳感器信號顯示和運動軌跡繪制。首先,在鏈表中提取出傳感器數(shù)據(jù)存放在相應(yīng)的LineEdit 中。其次,根據(jù)陀螺儀的數(shù)據(jù)和運動參數(shù)A值、ω值解算運動軌跡。再次,創(chuàng)建新的QPaintEvent 事件類,繪制坐標(biāo)原點、X坐標(biāo)軸刻度、Y坐標(biāo)軸刻度和運動軌跡。最后,定時器QTimer 每20 ms 刷新一次屏幕和刻度線。
為了實現(xiàn)實時環(huán)境監(jiān)控,選用RAK5206 模塊通過攝像頭采集環(huán)境圖像,配合Wi-Fi 模塊,確保視頻能夠在終端設(shè)備中播放。
上位機(jī)軟件作為視頻模塊的客戶端,首先要和Wi-Fi 模塊建立傳輸控制協(xié)議(Transmission Control Protocol,TCP)連接,然后通過QTcpSocket 類函數(shù)連接網(wǎng)際協(xié)議(Internet Protocol,IP)地址為192.168.1.1、端口號為8080 的服務(wù)器,連接后再執(zhí)行readAll 函數(shù)。
監(jiān)控模塊界面采用QLabel 控件對視頻進(jìn)行顯示,將視頻采集模塊作為服務(wù)器,PC 端作為客戶端。令PC 端和視頻模塊處于一個局域網(wǎng)中,訪問PC 端網(wǎng)址,然后通過QNetwork 模塊將視頻導(dǎo)入Label[5]。
仿蠶機(jī)器人實物如圖7 所示。作為上位機(jī)平臺,結(jié)合上位機(jī)控制軟件,根據(jù)運動控制函數(shù)對其蠕動運動進(jìn)行試驗驗證。試驗?zāi)康模阂皇菧y試上位機(jī)軟件控制功能;二是探究運動控制函數(shù)對蠕動運動的影響。
圖7 仿蠶機(jī)器人試驗樣機(jī)
整個運動試驗過程在A0 標(biāo)準(zhǔn)的方格紙上進(jìn)行,紙上最小單元為1 cm。在方格紙的另一側(cè)固定放置攝像機(jī),記錄機(jī)器人的運動狀況。為了更加直觀地表現(xiàn)蠕動過程中波形的傳遞過程,通過圖8 表示一個周期內(nèi)的連桿關(guān)節(jié)角度的變化情況。
圖8 一個蠕動周期內(nèi)關(guān)節(jié)角度變化過程
通過上位機(jī)軟件,設(shè)置函數(shù)中的參數(shù)A、λ、ω。通過控制函數(shù)生成的不同俯仰單元舵機(jī)的轉(zhuǎn)動角度,改變機(jī)器人的蠕動前進(jìn)動作。由于參數(shù)ω對運動形成的波形沒有任何影響,兩組參數(shù)都選擇ω為1.32。一個蠕動周期為4.62 s,只研究波形對蠕動運動的影響。兩種參數(shù)下的試驗結(jié)果如圖9 所示,可以看到蠕動過程中波形傳遞的過程與控制函數(shù)一致,驗證了控制函數(shù)和控制軟件的準(zhǔn)確性。
通過徑向位移可以看出:A為π/12時,峰值約為7 mm;
圖9 不同控制參數(shù)的運動效果圖
通過試驗可以看到不同參數(shù)對機(jī)器人蠕動運動過程的影響。仿蠶機(jī)器人每次蠕動只傳遞一個波,蠕動前進(jìn)的距離較短,因此通過多次試驗記錄與測量后取平均值,測得兩種參數(shù)下仿蠶機(jī)器人在一個蠕動周期內(nèi)的徑向位移和軸向位移,如圖10 所示。A為π/6 時,峰值約為16 mm,證明A值越大,位移峰值越大。通過軸向位移可以看出,A為π/12 時,機(jī)器人前進(jìn)10.5 mm;A為π/6 時,機(jī)器人前進(jìn)21 mm,證明A值越大,運動波傳遞的位移越大。通過對比可知,參數(shù)A影響的是蠕動運動的幅值,A值越大,運動波傳遞的效率越高,因此速度就越快。當(dāng)控制參數(shù)A為π/12,λ為1.5 時,機(jī)器人的移動速度為4.53 mm·s-1。
圖10 不同控制參數(shù)的機(jī)器人位移
文章上位機(jī)控制界面基于Qt 采用C++語言進(jìn)行開發(fā)。該軟件通過無線通信和Wi-Fi 視頻模塊實現(xiàn)了機(jī)器人的遠(yuǎn)程操控及運行軌跡和環(huán)境的實時監(jiān)控,基于串口通信模塊修改了機(jī)器人控制參數(shù),為小型仿蠶機(jī)器人控制系統(tǒng)提供了數(shù)據(jù)支持。文章詳述了上位機(jī)軟件各功能及實現(xiàn)方式,并以仿蠶機(jī)器人的運動控制為試驗案例,通過上位機(jī)軟件下發(fā)不同運動控制參數(shù),驗證了控制參數(shù)對仿蠶機(jī)器人蠕動運動的影響,同時驗證了該上位機(jī)功能的實時性和有效性。