雙輪移動(dòng)式自平衡機器人的控制系統設計
引 言
移動(dòng)式機器人在各行各業(yè)具有廣泛的應用,而輪式移動(dòng)機器人由于具有結構簡(jiǎn)單、可控性強、成本低等優(yōu)點(diǎn),成為移動(dòng)式機器人研究的一個(gè)主要方向。自平衡機器人采用水平布置的兩輪結構,本身是一個(gè)不穩定體。也就是說(shuō),自平衡機器人在靜止狀態(tài)下,不能保持平衡,車(chē)體總是要向前或向后傾倒;而在運動(dòng)狀態(tài)下,可以通過(guò)一定的控制策略使它達到動(dòng)態(tài)平衡。
由于自平衡機器人具有內在不穩定性和結構靈活性,國內外機器人愛(ài)好者設計了多種結構、外觀(guān)各異的自平衡機器人,嘗試采用各種控制策略使其達到自平衡控制。通常這類(lèi)機器人采用姿態(tài)傳感器檢測機器人車(chē)體的傾倒角度和傾倒角速度,根據當前機器人姿態(tài)控制伺服電機驅動(dòng)電壓的轉向和轉速,從而使機器人保持平衡。該方式制作的自平衡機器人雖然控制性能良好,但成本高,不適合廣泛推廣。本文設計的機器人嘗試采用紅外測距傳感器測量車(chē)體與地面的距離,通過(guò)計算獲取機器人的姿態(tài)信息,進(jìn)而實(shí)現機器人的自平衡。
1 系統結構
本文設計的自平衡機器人系統主要由機械行走裝置、控制系統和傳感器3部分組成,如圖1所示。
機械行走裝置主要由車(chē)體平臺、電機驅動(dòng)器、直流無(wú)刷電機、齒輪減速機構和車(chē)輪組成。機器人采用48 V電池供電,通過(guò)DC-DC模塊轉換為5 V和24 V電壓。其中,5 V提供給控制系統和傳感器,24 V提供給電機驅動(dòng)器??刂葡到y以ATmega128單片機為主控制芯片,通過(guò)SJA1000擴展CAN總線(xiàn)與電機驅動(dòng)器通信。紅外測距傳感器的輸出是與距離成正比的模擬電壓值,輸入到單片機的A/D采樣端口進(jìn)行處理,從而得到距離信息。機器人的系統結構框圖如圖2所示。
2 姿態(tài)信息獲取
機器人的姿態(tài)信息包括傾倒的角度和角速度。如圖3所示,機器人左右兩側水平位置各安裝有1個(gè)紅外測距傳感器,可以測量與地面之間的距離d1和d2。當機器人在豎直狀態(tài)時(shí),左右傳感器距離差為零。當機器人傾倒時(shí),距離差與傾倒角度θ成函數關(guān)系如下:
sin θ=(d2-d1)/D
其中,D為傳感器之間的距離。機器人在豎直動(dòng)態(tài)控制時(shí)傾倒角度范圍較小,此時(shí)sinθ≈θ,即可由傳感器的距離信息得到機器人的傾倒角度。角速度可以通過(guò)θ對時(shí)間求導獲得。
選用的紅外測距傳感器為Sharp公司的GP2D12,輸出為0.4~2.4 V的模擬信號,對應的測量距離為10~80 cm。在同一溫度下,傳感器的輸出與測量結果呈良好的線(xiàn)性關(guān)系,可以滿(mǎn)足自平衡機器人的要求。
3 控制系統設計
3.1 機器人平衡控制原理
當車(chē)體偏離平衡位置(豎直位置)向前傾斜時(shí),傳感器采集信息并傳送到單片機進(jìn)行計算和判斷,車(chē)輪隨之作出響應向前運動(dòng),將車(chē)體向平衡位置調整;同樣當車(chē)體向后傾斜時(shí),車(chē)輪將向后運動(dòng)。這樣機器人一直處在傾斜判斷、運動(dòng)調整的動(dòng)態(tài)過(guò)程中,使車(chē)體始終保持在平衡位置附近,達到一種動(dòng)態(tài)平衡。
3.2 控制系統硬件設計
控制系統主芯片選用Atmel公司基于RISC結構的8位單片機ATmega128。它采用低功耗CMOS工藝;具有豐富的片上資源,包括4個(gè)定時(shí)器、4 KB的數據SRAM、128 KB的程序Flash、可外擴至64 KB的E2PROM和8個(gè)10位ADC通道;擁有UART、SPI、I2C、JTAG接口,方便外部擴展和傳感器的接入。
3.2.1 傳感信息輸入電路
傳感器信號通過(guò)放大器引入,通過(guò)設置反饋電阻(R1和R2)和輸出端電阻(R3和R4)的阻值可以使輸入的電壓值在要求的范圍內。具體硬件電路如圖4所示。
3.2.2 擴展CAN通信電路
單片機與電機控制器采用CAN總線(xiàn)通信,CAN接口采用Philips公司的CAN物理層和鏈路層接口芯片SJA1000和PCA82C250。單片機直接控制SJA1000的AD0~AD7、ALE、INT引腳。SJA1000工作在Intel模式下,MODE腳接高電平,片選腳CS接地,始終處于選通狀態(tài)。擴展CAN通信電路如圖5所示。單片機對SJA1000的操作主要是對寄存器的操作:一方面,對SJA1000的模式寄存器、命令寄存器、狀態(tài)寄存器、中斷寄存器、中斷允許寄存器、總線(xiàn)定時(shí)寄存器、輸出控制寄存器、時(shí)鐘分頻計數器進(jìn)行設置和檢測;另一方面,對收發(fā)緩沖區進(jìn)行讀寫(xiě),從而和CAN設備交換數據。
3.3 控制系統軟件設計
自平衡機器人的控制系統需要實(shí)現以下功能:傳感器信息處理和機器人姿態(tài)信息計算,電機控制PID算法實(shí)現和CAN口的數據處理。系統控制流程如圖6所示。系統上電后從主函數開(kāi)始執行。主函數負責初始化控制器的I/O口、CAN口、控制周期定時(shí)器、A/D轉換器、各個(gè)中斷接收數據和發(fā)送數據模塊等。初始化完畢,控制周期定時(shí)器時(shí)間到后,傳感器信息輸入到A/D轉換器中進(jìn)行轉換,計算機器人的傾倒角度和傾倒角速度;然后調用PID算法計算電機控制數據,并通過(guò)CAN口輸出給電機驅動(dòng)器。
3.4 速度PID控制算法
機器人采用經(jīng)典的PID算法進(jìn)行平衡控制??刂葡到y采用典型的雙閉環(huán)控制結構和前饋控制方法。速度環(huán)路設計有利于提高電機輸出速度精度。前饋控制主要是為了補償電機轉軸與車(chē)輪轉動(dòng)軸以及傳動(dòng)系統的間隙誤差,這些誤差是穩定的、可以測量的。當電機在正反轉變換時(shí),控制系統可以檢測到變換方向,經(jīng)過(guò)位置誤差環(huán)節調整后把確定的偏差補償量疊加到驅動(dòng)器輸出端。這樣電機轉動(dòng)的角度在原理基礎上增加了補償量,機械誤差得以修正。
采用PID控制算法公式如下:
其中,u(k)為當前調節器輸出量;u(k-1)為上一次調節器輸出量;△u(k)為當前控制增量;e(k)為當前控制誤差量;Kp為比例系數;KI為積分系數;Kd為微分系數。PID控制算法流程如圖7所示。圖中,ε為調試過(guò)程中設定的誤差值。
4 實(shí) 驗
利用該控制方法,對原理樣機進(jìn)行了多次實(shí)驗。實(shí)驗中,在機器人正上方水平位置安裝陀螺儀,以采集機器人的傾倒角度數據。實(shí)際測量角度信息隨時(shí)間變化的曲線(xiàn)如圖8所示。通過(guò)測得數據分析可以看到,機器人大致可以穩定在0°附近,最大偏差為±2°。
結 語(yǔ)
本文設計了以ATmage128單片機為控制核心,采用紅外測距傳感器監控的雙輪自平衡機器人,并搭建實(shí)驗平臺進(jìn)行了控制試驗。實(shí)驗結果表明,該機器人可以通過(guò)有效的控制保持在豎直狀態(tài),并且在一定的角度范圍內達到平衡。
伺服電機相關(guān)文章:伺服電機工作原理
評論