吳 晗, 徐開蕓, 朱 昊, 李家釗
(南京工程學院自動化學院, 江蘇 南京 211167)
隨著市場對機器人的自適應能力和運動特性提出了更高要求,研究和設計運動靈活的機器人已迫在眉睫。球型機器人能在惡劣、復雜的環境中行走,以其運動靈活、能耗低、外型獨特等特點逐漸被各國研究人員所關注。球型機器人是非線性、多變量、強耦合的不穩定系統的典型[1-2],設計和研究球型機器人控制系統,即對非線性控制系統穩定性的研究具有較高的理論研究價值和實用價值。
本文設計的球型機器人實物如圖1所示,工作原理在文獻[3]中有詳細敘述,其中控制系統主要包括控制模塊、運動模塊、通信模塊以及電源模塊等[3]。

圖1 球型機器人實物圖
球型機器人控制系統的總體結構框圖如圖2所示。系統控制核心為單片機STM32F103C8T6;電源模塊提供12V、5V和3.3V的電壓;電機為12V直流無刷電機,電機驅動器為TB6612,通過旋轉編碼器測量球體的速度;陀螺儀采用MPU-6050六軸傳感器來測量球體的傾角和角速度,舵機型號為RDS3120MG;通信模塊由藍牙HC-05及安卓手機APP組成。硬件電路設計過程中采用模塊化的設計方法,大大提高了系統的穩定性和可靠性。

圖2 球型機器人控制系統總體結構框圖
控制模塊主要包括電源電路、控制芯片STM32F103C8T6、晶振電路、復位電路和下載調試接口等電路。STM32最小系統電路圖如圖3所示。
STM32單片機外部的8MHz晶振,經內部倍頻產生72MHz工作頻率。STM32單片機采用低電平復位方式,當NRST為低電平時,單片機復位;當NRST為高電平時,單片機正常工作[4]。調試下載電路采用SWD接口。

圖3 STM32最小系統電路
球型機器人電源模塊電路圖如圖4所示,為減少電源模塊間的相互干擾,各模塊獨立設計。整個控制系統共有3種電源:1)12V鋰電池,給系統提供12V電源,同時向電機提供12V電源;2)12V電壓經過LM2596-5.0轉換成5V電壓,如圖4(a)所示,給舵機供電;3)5V電壓經AMS1117-3.3轉換成3.3V,如圖4(b)所示,給STM32單片機和MPU6050六軸傳感器、藍牙模塊HC-05及相關外圍設備供電。

圖4 電源模塊電路圖
本項目中使用TB6612FNG微型雙路直流電機驅動模塊。電機自帶編碼器,實現力矩、速度以及點位控制,完成球型機器人前進、后退以及速度控制。TB6612FNG內部集成了2個H橋電機驅動電路、6個控制信號輸入端(其中2個為PWM控制信號輸入端、4個為方向信號輸入端),可同時控制球型機器人2個電機的正轉、反轉和制動。為防止因電機堵轉而燒壞驅動器,在電機驅動器的接地端串聯一個0.1Ω封裝2512的貼片電阻。TB6612FNG電機驅動電路如圖5所示。

圖5 TB6612FNG電機驅動電路圖
球型機器人轉向動作由舵機RDS3120MG完成,此舵機具有位置(角度)伺服驅動功能,滿足球形機器人的轉向要求。通過設置單片機PB0端口的PWM占空比值來控制舵機偏轉角,從而實現球型機器人的轉向控制。
姿態檢測模塊選用MPU-6050六軸傳感器,其電路原理圖如圖6所示,該模塊集成了3軸微機電系統(micro-electro-mechanical system,MEMS)陀螺儀和3軸MEMS加速度計,以及一個可擴展的數字運動處理器(digital motion processor,DMP)。MPU-6050六軸傳感器與單片機采用I2C通信方式,SDA引腳接單片機PB9口作為I2C數據線;SCL引腳接單片機PB8口作為I2C時鐘線。另外,MPU-6050六軸傳感器內部有200Hz方波信號發生器,該方波信號發生器產生5ms的工作周期,作為單片機外部中斷信號源[5]。當產生外部中斷時,單片機進入中斷,并讀取MPU-6050六軸傳感器中的各姿態參數值,此參數值通過卡爾曼濾波、增量式PID控制算法修正后發送給球體的控制單元,實時調整球體姿態,控制球體在運動過程中的自身平衡。

圖6 MPU-6050電路原理圖
藍牙HC-05模塊有主、從體2種工作模式,既可發送數據也可接收數據。這里選用從體工作模式,僅接收從安卓手機APP發來的數據。藍牙通信電路原理圖如圖7所示。單片機串口與HC-05模塊相連;單片機引腳PIO11接開關K1和下拉電阻,當K1閉合時控制進入AT指令模式;PIO8引腳接LED,當LED燈亮時,表示單片機與藍牙通信正常,可以通過安卓手機APP發信息至單片機串口,從而實現藍牙通信。

圖7 藍牙通信電路圖
因球型機器人控制系統具有非線性、不穩定的特點,相應的軟件設計就成為了關鍵。根據系統要求,軟件主要任務是完成系統的初始化設置、球體姿態信息采集、卡爾曼濾波、角速度檢測、電機雙閉環PID控制以及藍牙通信等。系統軟件流程如圖8所示。由于篇幅限制,在此重點介紹球形機器人的雙閉環PID控制和藍牙通信。

圖8 系統軟件流程圖
當球型機器人運動時,球體姿態隨之改變,為了保證球體自身平衡,需設計相應的控制方法,這里采用工程實踐中應用最為廣泛的增量式PID控制算法,分別設計球體的姿態PID控制和球體速度PID控制。
2.1.1 球體姿態PID控制
球體姿態檢測采用MPU-6050六軸傳感器裝置,該裝置將陀螺儀傳感器和加速度傳感器集成一體。由于陀螺儀和加速度計在測量時存在噪聲干擾和隨機漂移誤差,故采用卡爾曼濾波算法對測量數據進行融合,算出球體傾角的最優估計值[6-7]。將最優估計值通過I2C通信協議發送給單片機;然后經姿態控制算法增量式PID調節,調節后得到的參數來調整電機PWM的占空比值。球體姿態增量式PID控制的設計子程序流程圖如圖9所示。為了確保球型機器人平穩行走,不傾倒,必須實時調節球體姿態偏角,保證球體重心在垂直方向被限制在一定夾角內。

圖9 球體姿態PID控制子程序流程圖
2.1.2 球體速度PID控制
球體速度PID閉環控制系統框圖如圖10所示,給定轉速信號與反饋轉速信號比較后的轉速變化量送給速度控制器PID,通過PWM1控制電機轉速,構成速度閉環控制[8]。

圖10 球型機器人速度閉環PID系統框圖
速度PID控制子程序流程圖如圖11所示。當球體運動時,霍爾元件對電機AB相測速,單片機定時器中斷,每10ms對編碼器進行一次檢測,獲取角速度數值,經增量式PID調節,最終使角速度達到期望值,實現球體勻速運動,達到穩定控制效果。速度增量式PID部分程序如圖12所示。

圖11 速度PID控制子程序流程圖
球型機器人的控制指令僅通過手機APP發給球型機器人控制單元。當藍牙模塊接收到手機APP發送的控制指令后,將該指令轉發到單片機的串口3,單片機串口3的波特率設置為9600 bps,1位起始位、8位數據位、1位停止位、無校驗[4]。當中斷標志位為“1”時,單片機進入中斷,等待接收藍牙HC-05模塊發來的數據;當單片機接收數據之后,接收標志位為“1”,單片機停止接收新的數據,并對數據算法優化,然后將優化后的數據發給球型機器人控制單元。部分藍牙數據通信接收程序如圖13所示,串口中斷函數為void USART3_IRQHandler(void)。

圖12 速度增量式PID部分程序

圖13 部分藍牙數據接收程序
本文設計的球型機器人控制系統,可自主調整球型機器人行走過程中的姿態,確保行走平穩,解決了球型機器人運動過程中自平衡能力差的問題。本文的實現方案對設計和研究非線性、多變量、強耦合的控制系統具有一定的借鑒作用,為非線性系統的控制提供了一種解決方法。但是,目前的研究工作僅通過較為經典的增量式PID控制算法來驗證實現方案的可行性,要真正在非線性系統中體現控制算法的價值,還需要繼續研究其他控制算法在非線性系統的應用,才能更好地利用控制算法優化非線性控制系統。