王凱正,林 棻,張華達,張會琪
(南京航空航天大學 車輛工程系, 南京 210016)
?
基于Arduino的輪式移動機器人速度控制模式比較
王凱正,林 棻,張華達,張會琪
(南京航空航天大學 車輛工程系, 南京 210016)
目前對于Arduino平臺的輪式移動機器人的控制都是基于硬件自帶的IDE環(huán)境,但在該環(huán)境下程序可讀性差、調(diào)試困難,且很難采用高級控制算法。針對以上問題,提出了2種基于Arduino平臺的輪式移動機器人速度控制模式。第1種控制模式為離線模式,即將上位機中的控制模型下載至Arduino控制器進行離線運算,并將返回的數(shù)據(jù)通過Simulink的圖形處理界面進行實時監(jiān)控;第2種控制模式為在線模式,即將Arduino控制器采集的速度等信號返回上位機處理運算,將經(jīng)過處理運算的數(shù)據(jù)反饋至Arduino控制器對輪式移動機器人進行在線控制。通過PID算法對2種控制模式進行了實車試驗對比。結果表明:此兩種模式均能對速度進行精確控制,在線模式具有更好的速度跟蹤精度和響應速度。
輪式移動機器人;Arduino;速度控制;PID算法
輪式移動機器人可以工作在各種惡劣危險環(huán)境中,具有成本低、試驗方便、試驗重復性好、不易受到外界環(huán)境的干擾等優(yōu)點,在許多領域得到了廣泛應用[1]。因此,為了使輪式移動機器人在最佳狀態(tài)工作,研究其速度控制方法是非常有必要的[2]。Arduino是一款便捷靈活、方便上手的開源電子原型平臺,其顯著特點是價格低廉,并具有豐富的功能引腳,能夠簡單地與各類傳感器、電子元件和諸多擴展功能模塊結合,實現(xiàn)系統(tǒng)級應用[3-4]。
通常輪式移動機器人對速度的控制是應用脈沖寬度調(diào)制(pulse width modulation,PWM)技術和PID控制策略直接編寫成程序代碼來實現(xiàn)的。這種方法對編程能力和邏輯思維能力要求高,存在控制算法復雜、程序調(diào)試不便、容易出錯等缺點。Matlab已有高級算法集成工具箱,采用Matlab來編寫控制算法,無需編程人員從底層編寫。此外,Matlab強大的數(shù)據(jù)處理和監(jiān)控功能也是IDE環(huán)境所不能比擬的。Matlab可以離線仿真調(diào)試,還可以硬件在環(huán)調(diào)試,提高了研究效率、縮短了開發(fā)周期,可快速完成設計任務。從2013版Matlab開始可以從官網(wǎng)下載Arduino支持包,這使得將Simulink作為Arduino的軟件開發(fā)平臺變得更加便捷和規(guī)范[5]。
利用Simulink和Arduino,將Simulink控制系統(tǒng)框圖下載至Arduino控制器,使框圖在控制器中獨立進行離線運算,自行對速度進行控制,并將返回的數(shù)據(jù)通過Simulink的圖形處理界面進行實時監(jiān)控。本文稱這種方法為離線模式。第2種方法是采用Arduino控制器采集速度等數(shù)據(jù),并通過串口返回數(shù)據(jù)至上位機,利用Simulink進行運算處理。將經(jīng)過運算處理的數(shù)據(jù)反饋至Arduino控制器對輪式移動機器人進行在線控制。本文稱這種方法為在線模式。本文應用這兩種思路,分別設計出了適合于兩種處理器的速度PID控制框圖,并進行了實物調(diào)試。
本文采用的控制器為Arduino UNO。該控制板的I/O接口分為數(shù)字和模擬兩種,有專門的PWM輸入和輸出,可以與Matlab進行交互式聯(lián)合仿真,從而可以將復雜控制系統(tǒng)模型下載至控制器芯片中進行離線控制。
1.1 電機正反轉判定
輪速控制可以通過測速傳感器實現(xiàn)。本設計所使用的是光電編碼器,所以這里僅介紹增量式編碼器。增量式編碼器的工作原理:將角位移轉換成周期性的電信號,再把電信號轉變成計數(shù)脈沖,用脈沖的個數(shù)表示位移的大小。增量式編碼器輸出為方波脈沖相位差90°的A、B相,根據(jù)兩相脈沖的上升下降沿可方便判斷出電機旋轉的方向。
在Simulink中建立如圖1所示的離線模式控制系統(tǒng)框圖。電機通過Enable Motors模塊控制。H型全橋式電路是最常見的、也是相對簡單的直流電機驅(qū)動控制電路。當使用L293D 芯片來對直流電機進行驅(qū)動時,可通過施加電壓的方向和電流的方向?qū)崿F(xiàn)電機正反轉,因此電機控制模塊包含4個數(shù)字輸出端口,通過給定的高電壓和低電壓來進行電機正反轉控制。
1.2 輪速測量模塊設計
離線模式控制系統(tǒng)框圖有2個輸入信號,分別對應電機的2個相位轉速傳感器信號,通過轉速傳感器傳回的相位差判斷電機的正反轉。經(jīng)過反復測試,Arduino支持包提供的算例中測速模塊有較大的誤差[6],因此本文采用自主編寫的encoder 測速模塊來采集固定時間的脈沖數(shù),如圖2所示。由于相位轉速傳感器有2個,因此可以采用平均值來減小誤差。若采集的時間過短,采集周期內(nèi)所采集的脈沖數(shù)過少,隨著速度變化,脈沖數(shù)變化幅度比較小甚至不變,導致脈沖數(shù)和PWM值對應關系不明確,容易產(chǎn)生較大誤差;若采集周期過大,則無法滿足機器人對速度的實時性的要求。因此,經(jīng)過反復嘗試,本文采集0.1 s內(nèi)的脈沖個數(shù)[7]。
圖1 離線模式控制系統(tǒng)框圖
圖2 encoder測速模塊
由于硬件傳感器以及外界擾動等因素,轉速傳感器和控制器采集的0.1 s內(nèi)的脈沖數(shù)會在穩(wěn)定值附近波動。此誤差會因多級轉換運算而被放大,造成控制器難以對速度進行精確跟蹤,輪速控制也無法快速收斂到穩(wěn)定值。另外,輪速測量會產(chǎn)生毛刺,使控制器重新參與速度運算,造成轉速頻繁抖動。
為了使小車能平穩(wěn)運行和變速,本研究增加了change模塊(如圖3所示),濾除掉幅值為1的波動誤差,旨在不影響機器人自主數(shù)據(jù)采集以及數(shù)據(jù)運算精度的前提下,減小甚至消除處理器采集脈沖數(shù)據(jù)時產(chǎn)生的誤差。
圖3 誤差消除change模塊
1.3 輪速控制與實時監(jiān)控
通過脈沖數(shù)和PWM對應轉化模塊計算出相應的PWM數(shù)值輸入到Arduino控制器的PWM引腳。直流電機的PWM控制是通過調(diào)節(jié)驅(qū)動送到電機電樞電壓的幅值達到改變直流電機轉速的目的。PWM的取值范圍為0~255,當輸入為0時,輸出占空比為0的PWM信號;當輸入為255時,輸出占空比為1的PWM信號。在驅(qū)動過程中,通過改變PWM占空比等參數(shù)即可實現(xiàn)車速大小、方向的改變,從而實現(xiàn)對車速的控制。
由Simulink編寫的控制系統(tǒng)框圖可完全在Arduino控制器中運行,并通過Arduino支持包里自帶的Serial Transmit模塊[8]將控制器的數(shù)據(jù)通過串口發(fā)送至上位機。由于控制器傳回的數(shù)據(jù)為當前速度對應的PWM值,并非速度值,所以需要進行相應的轉化。上位機將數(shù)據(jù)進行接收后轉化為對應的速度在示波器中顯示,并存儲數(shù)據(jù)以便后期處理,如圖4所示。由此可實現(xiàn)對電機轉速的實時監(jiān)控。
2.1 PID控制原理
PID控制[9]是發(fā)展較為成熟的控制策略之一,它將偏差的比例(P)、積分(I)和微分(D)通過線性組合綜合構成控制量,對被控對象進行控制。在控制系統(tǒng)建模仿真中,該算法簡單實用,并有較高的可靠性,因此在生產(chǎn)過程中是一種普遍采用的控制方法。PID 控制系統(tǒng)原理如圖5所示。
圖4 上位機數(shù)據(jù)接收框圖
圖5 PID 控制系統(tǒng)原理框圖
1) 比例部分的作用是為了及時成比例地反映控制系統(tǒng)的偏差信號,以最快速度產(chǎn)生控制作用,使偏差減小。
2) 積分部分的作用主要是為了保證被控量在穩(wěn)態(tài)時對設定值的無靜差跟蹤。
3) 微分部分的作用主要是為了改善閉環(huán)系統(tǒng)的穩(wěn)定性和動態(tài)響應的速度。
以微處理器為硬件核心的控制系統(tǒng)為離散時間控制系統(tǒng)。PID控制采用的差分方程表示如下:
(1)
式中:u(n)為第N采樣周期時的輸出;en為第N采樣周期的偏差;N為采樣周期。
令Δen=en-en-1,則有
(2)
令Ki=Kp/Ti,Kd=Kp/Td,則有
(3)
為了避免在求取控制量u(t)時對偏差求和運算,在實際應用中通常采用增量式:
Δu(n)=u(n)-u(n-1)
(4)
由于
并且
Δen=en-en-1
Δen-1=en-1-en-2
所以有
Δu(n)=Kp(en-en-1)+KiTen+
(5)
也可以寫作
(6)
2.2 PID控制模型調(diào)試
本文研究的輪式移動機器人如圖6所示,由Arduino控制器、直流減速電機、超聲波傳感器、速度傳感器等幾個部分組成,只需要將Simulink中的相關控制程序下載至Arduino控制器中,就可以離線驅(qū)動小車進行前進、后退、轉彎、避障、循跡等。
圖6 輪式移動機器人實物模型
需要注意的是,實物中設置的采樣時間和Simulink串口接收模塊必須保持一致,并且上位機和控制器必須采用同樣的通信串口。本文選取0.005 s作為的Arduino控制器和Simulink控制系統(tǒng)的采樣時間,即控制器端和上位機每隔0.005 s傳輸和接收1次數(shù)據(jù),因此選取離散化的PID控制器。將Arduino控制器與Simulink進行仿真交互,實時監(jiān)控串口返回的數(shù)據(jù),改變PID參數(shù)進行調(diào)試。經(jīng)反復嘗試,當參數(shù)P=10,I=35,D=0時,控制效果最好。
圖7和圖8為當參數(shù)P=10,I=35,D=0時的PWM曲線和對應的速度曲線。
圖7 離線模式下PWM曲線
圖8 離線模式下速度曲線
由圖7和圖8可以看出:采用離線模式能對電機轉速進行良好的控制。本文預設PWM參數(shù)穩(wěn)定值為200,對應速度值為0.838 m/s。在此參數(shù)下PWM峰值為209,對應速度值為0.855 m/s。電機在0.4 s時間內(nèi)從靜止達到預定的轉速并保持穩(wěn)定,最終穩(wěn)定值為196,對應速度為0.821 m/s,超調(diào)量為6.63%,穩(wěn)態(tài)誤差為2%。由此可見,此控制器將0.1 s作為脈沖數(shù)的采集周期,符合圖7和圖8所示的每0.1 s速度發(fā)生變化的曲線規(guī)律。
3.1 數(shù)據(jù)采集模塊設計
因上位機和Arduino采用不同的處理器進行運算,并且涉及到串口接收和發(fā)送數(shù)據(jù)的同步問題,在該模式下,控制器采集數(shù)據(jù),上位機處理數(shù)據(jù)。針對這種情況設計如圖9所示的控制結構在上位機中進行運算,同時設計控制器信息接收模塊僅用于接收和傳遞數(shù)據(jù),如圖10所示。該部分仍需下載至控制器。
圖9 上位機處理PID控制系統(tǒng)原理框圖
圖10 控制器信息接收模塊框圖
在線模式下處理PID控制系統(tǒng)模型與離線模式下有區(qū)別,因此串口接收模塊采用能讀取二進制數(shù)據(jù)的Serial Receive和Serial Send模塊進行數(shù)據(jù)傳輸。由于上位機和Arduino控制器默認字符類型分別為double(雙精度十進制)和unit8(無符號二進制),所以將數(shù)據(jù)傳入串口前需要進行字符類型轉換[10]。同時因為uint8字符類型的范圍為0~255,所以為了防止數(shù)據(jù)溢出,要在數(shù)據(jù)傳輸之前進行相應減小,并在控制器接收數(shù)據(jù)后進行還原。
根據(jù)圖10中的Serial Receive串口接收數(shù)據(jù)模塊的使用特性,當有數(shù)據(jù)輸入時,Status口判定為1,Data口輸出串口數(shù)據(jù);當無數(shù)據(jù)輸入時,Status口判定為0,Data口輸出255。上位機選取的采樣時間為0.005 s,數(shù)據(jù)傳輸并非連續(xù),且在真值和255之間跳動,如圖11所示。這主要是因為上位機和控制器建立連接需要時間,以及數(shù)據(jù)的測量精度問題。
圖11 未處理的接收數(shù)據(jù)
當Status狀態(tài)為0時,需要將Data口輸出的255濾掉,防止干擾對正確速度的判斷和計算。處理后的數(shù)據(jù)如圖12所示。
圖12 處理后的輸入數(shù)據(jù)
3.2 PID控制模型調(diào)試
將圖10中的控制系統(tǒng)框圖下載至控制器中進行實車試驗。確認采樣時間相同、串口匹配,將Arduino與上位機相連,改變PID參數(shù)進行調(diào)試。為方便比較,本方法采用與離線模式相同的參數(shù),即P=10,I=35,D=0,采樣時間為0.005 s。圖13和14分別為在線模式下PWM值和對應轉換的速度。
圖13 在線模式下PWM曲線
圖14 在線模式下速度曲線
由圖13和圖14可以看出:采用在線模式能對電機轉速進行良好的控制。在線模式與離線模式采用同樣的參數(shù),即 PWM參數(shù)穩(wěn)定值為200,對應轉速為0.838 m/s。在線模式在此參數(shù)下的PWM峰值為207,對應速度值為0.838 m/s,能使機器人在0.4 s時間內(nèi)從靜止達到預定的轉速并保持穩(wěn)定,最終穩(wěn)定值為199.98,對應速度為0.838 m/s,超調(diào)量為3.5%,穩(wěn)態(tài)誤差為0.01%由此可見,此控制器將0.1 s作為脈沖數(shù)的采集周期,符合圖13和圖14所示的每0.1 s速度發(fā)生變化的曲線規(guī)律。
將圖7和圖13以及圖8和圖14對比可以看出:在相同參數(shù)下離線模式和在線模式均能在0.4 s 達到穩(wěn)定速度;但是在線模式下超調(diào)量僅為3.5%,低于離線模式下的6.63%,且靜態(tài)誤差只有0.01%。與離線模式相比,在線模式更能精確地對速度進行控制。
由于采用在控制器獨立運行的方法,存在每次參數(shù)調(diào)整都要重新對框圖進行下載燒錄以及控制器對Matlab個別框圖支持不到位的缺點,使得用上位機進行運算處理的方法更勝一籌。隨著算法研究的不斷深入和控制框圖容量的增大,對處理器性能要求也逐漸增加,因此采用上位機進行在線運算處理的方法對大型控制算法的運算能力要強于Arduino處理器單獨運算的方法。
本文提出了2種基于Arduino的輪式移動機器人速度控制模式,即離線模式和在線模式。以輪式移動機器人速度為控制對象,分別編寫兩種模式下的PID控制框圖,并進行實車對比和驗證。
實驗結果表明:采用相同控制參數(shù),在線模式對于速度控制的超調(diào)量更小、穩(wěn)態(tài)誤差也低于離線模式。因此,在線模式具有更好的速度跟蹤精度和響應速度。
采用此兩種方法,只須將精力放在控制算法上,大大縮短設計和調(diào)試周期,有著傳統(tǒng)c語言程序編寫算法無法比擬的巨大優(yōu)勢,可為以后更高級的控制算法開發(fā)奠定基礎。
[1] 陳懂.輪式移動機器人運動控制系統(tǒng)的研究與實現(xiàn)[D].南京:東南大學,2005.
[2] YU H,KARIMIH R,ZHU X.Research of smart car’s speed control based on the internal model control[J].Abstract and Applied Analysis,2014(7):1-5.
[3] 蔡睿妍,Arduino的原理及應用[J].電子設計工程,2012(16):155-157.
[4] ALESSANDRO D’Ausilio.Arduino:A low-cost multipurpose lab equipment[J].Behavior Research Methods,2012,44(2):305-313.
[5] BARBER R,HORRA M,CRESPO J.Control Practices using Simulink with Arduino as Low Cost Hardware[J].IFAC Proceedings Volumes,2013,46 (17):250-255.
[6] Mathworks Corp.User’s Guide R2013a[Z].2013.
[7] 李山,王民慧.智能車車速檢測與控制模塊設計[J].工業(yè)控制計算機,2013, 26(9):135-136.
[8] 梁湘,基于MATLAB的數(shù)據(jù)實時采集與處理的實現(xiàn)[J].科技信息,2008(9):44-45.
[9] 李曉丹.模糊PID控制器的設計研究[D].天津:天津大學,2005.
[10] 劉秀,用Matlab實現(xiàn)硬件端口采集的方法[J].兵工自動化,2003,22(3):58-60.
(責任編輯 劉 舸)
Comparison of Speed Control Modes of Wheeled Mobile Robot Based on Arduino
WANG Kai-zheng, LIN Fen, ZHANG Hua-da, ZHANG Hui-qi
(Department of Automotive Engineering, Nanjing University of Aeronautics and Astronautics, Nanjing 210016,China)
Currently the control of wheeled mobile robot based on Arduino is dealt with the IDE programming environment. Under the environment, the program is difficult to read and debug, and it is also complex to use the advanced control algorithm. In order to overcome the above defects, two kinds of speed control modes are proposed. The first mode is offline mode, and the control model of host computer is downloaded to the Arduino controller for operation, and the returned data is monitored in real time through the graphical interface of Simulink. The second mode is online mode, the speed and other signals collected from the Arduino controller are returned to the host computer to process. The processed data is fed back to the Arduino controller to control the wheeled mobile robot. Two control modes are compared by PID algorithm under real robot condition. Test results show that the speed can all be accurately controlled in the two modes, online mode has better speed tracking accuracy and response speed.
wheeled mobile robot;Arduino;speed control;PID algorithm
2017-02-21
中央高?;究蒲袠I(yè)務費專項資金資助項目(NS2015015);中國博士后科學基金資助項目(2016M601799);南京航空航天大學研究生創(chuàng)新基地(實驗室)開放基金資助項目(kfjj20160207,20170215)
王凱正(1992—),男,山東青島人,碩士,主要從事車輛動力學與控制,E-mail:653935270@qq.com;通訊作者 林棻(1980—),男,江蘇南京人,博士,副教授,主要從事車輛動力學與控制研究,E-mail:flin@nuaa.edu.cn。
王凱正,林棻,張華達,等.基于Arduino的輪式移動機器人速度控制模式比較[J].重慶理工大學學報(自然科學),2017(6):70-77.
format:WANG Kai-zheng, LIN Fen, ZHANG Hua-da,et al.Comparison of Speed Control Modes of Wheeled Mobile Robot Based on Arduino[J].Journal of Chongqing University of Technology(Natural Science),2017(6):70-77.
10.3969/j.issn.1674-8425(z).2017.06.010
TP273
A
1674-8425(2017)06-0070-08