徐妍
摘 要 輪式機器人具有機動性高,并且在狹小空間運動靈活的特點,雙輪自平衡機器人是一個非線性的欠驅(qū)動系統(tǒng),即一個基于輪式倒立擺模型的實際應(yīng)用系統(tǒng),平衡機器人系統(tǒng)主要由機械行走裝置、控制系統(tǒng)和傳感器三部分組成。本文主要以雙輪自平衡機器人作為研究對象,設(shè)計其試驗樣機,對雙輪自平衡機器人的行走裝置的電動機和機器人的控制方式進行研究。經(jīng)過研究和設(shè)計確定使用直流一體化的伺服電動機和單片機控制系統(tǒng),并在機器人設(shè)計中增加陀螺儀,增強它的平衡性。
關(guān)鍵詞 雙輪自平衡機器人 電動機 單片機控制 陀螺儀
中圖分類號:TP242 文獻標(biāo)識碼:A 文章編號:1007-0745(2022)01-0001-03
1 雙輪自平衡機器人的設(shè)計條件
自動機器人是完全自主的(無需無線通訊)平衡機器人,其設(shè)計要求平衡機器人所有輪子與地面接觸點必須在一條直線上,履帶形式的運動機構(gòu)不在平衡機器人的定義范圍內(nèi),即雙輪自平衡機器人。自動機器人的尺寸最大范圍為500mm長×500mm寬×500mm高,重量不超過15kg。在能源上,機器人的電源額定電壓不得超過24V,如果用壓縮空氣氣壓不得超過0.8MPa。
2 雙輪自平衡機器人行走的設(shè)計構(gòu)想
雙輪自平衡機器人的機械行走裝置主要由車體平臺、電機驅(qū)動器、電機、齒輪減速機構(gòu)和車輪組成。機器人兩個輪子的運行需要發(fā)電機供給動力以達到機器人底盤運動的需求。
為了解決機器人行走裝置的前進問題,需要研究其動力系統(tǒng)即電機的選擇與使用,該設(shè)計的第一步是選擇合適的電機搭配電池讓機器人“動起來”。
在電機的選型方面,首先考慮的是電動機的驅(qū)動負載能力。直流電動機的優(yōu)點是可以方便地改變電壓調(diào)節(jié)轉(zhuǎn)速,并可以提供較大的轉(zhuǎn)矩,其調(diào)速性能和啟動性能比較好,但是其結(jié)構(gòu)較復(fù)雜,一旦發(fā)生故障,維修較困難。直流電動機適用于需要頻繁調(diào)節(jié)轉(zhuǎn)速負載的工況。
異步電機的優(yōu)點在于結(jié)構(gòu)簡單、性能穩(wěn)定、維護方便、價格便宜且制造工藝簡單,但調(diào)試性能較差。但隨著變頻技術(shù)的發(fā)展,交流電機也可以通過改變頻率來實現(xiàn)調(diào)節(jié)轉(zhuǎn)速,不過從經(jīng)濟性原則來說,交流電動機的調(diào)試需要增加變頻器等設(shè)備,會使其成本增加不少[1]。
其次考慮的是電動機的功率和效率問題。相關(guān)調(diào)查報告顯示,在功率一定的情況下,裝配一臺直流電動機的所用時間相當(dāng)于兩臺同步電動機或者四臺異步電動機,因此異步電機在工業(yè)中得到了最廣泛的應(yīng)用。然而異步電動機的工作是交流電源接定子繞組建立旋轉(zhuǎn)磁場,最后驅(qū)動轉(zhuǎn)子繞組的轉(zhuǎn)軸進行運動。整個工作過程中,繞組屬于電感性元件,其不做功只消耗電網(wǎng)的功率。所以異步電動機如果要滿足大功率負載使用,需配備無功功率補償裝置,而同步電動機則可通過勵磁裝置向電網(wǎng)提供無功功率,功率越大同步電動機的優(yōu)勢就越明顯。
異步電動機的優(yōu)點明顯,但從設(shè)計條件來說,機器人的供電電壓不超過24V,因此選用交流異步電動機需要利用整流器等設(shè)備,無疑將設(shè)計過程變得繁瑣,且可操作性差,增加制造成本。
綜上所述,為了讓機器人動起來,選擇控制電動機而非普通電動機,控制電動機的選擇對象有伺服電動機和步進電動機兩種[2]。該設(shè)計從定位精度、低頻特性、過載能力、運行能力、速度響應(yīng)能力和效率指標(biāo)六個方面著手,發(fā)現(xiàn)伺服電動機在后端設(shè)計旋轉(zhuǎn)編碼器,定位精度遠遠高于進行細分的步進電動機。步進電動機由于電脈沖信號的工作方式,其低速時振動現(xiàn)象較明顯,其振動頻率是電動機空載頻率的一半,這種情況對于機器人運動是不利的,因此需要增加阻尼器來克服振動問題,無疑增加了成本。一般情況下,步進電動機不具備過載能力,而伺服電動機具有較強的過載能力,但是機器人在運動過程中,可能因為自重等自身因素和外在因素產(chǎn)生慣性力矩,因此如果選用步進電動機,要想克服慣性力矩,則需要選擇較大轉(zhuǎn)矩的電動機,但是機器人在正常工作期間不需要那么大的轉(zhuǎn)矩,這就導(dǎo)致出現(xiàn)浪費力矩的現(xiàn)象,無疑也增加了購買電動機的成本。伺服電機的效率指標(biāo)和速度響應(yīng)能力也遠超步進電動機,步進電動機從靜止加速到工作轉(zhuǎn)速,需要200~400ms;伺服電動機從靜止加速到額定轉(zhuǎn)速可能僅需要幾毫秒。步進電動機的效率一般為其額定效率的60%以下,而伺服電動機的效率遠比步進電動機要好,在其額定效率的80%以上,其溫升的性能也比步進電動機好。但從成本上考慮,如果在步進電動機條件適合的情況下,機器人的行走裝置仍然可以選擇步進電動機。
按照機器人的設(shè)計條件,其最大重量為15kg,額定電壓24V,選擇直流一體化力矩伺服電動機。該設(shè)計初步?jīng)Q定選用伺服電機57D2R1010,該電動機不僅滿足步進電動機的低成本要求,也比之前的步進電動機的過載能力以及效率性能要優(yōu)良。其具體的參數(shù)PN為100w,UN為24~36V,IN為4.4A,NN為1500rpm,PN為0.96N.m,EN為32768p,其默認(rèn)一圈脈沖為8192p。初步選用電機后,便可以做出基本的硬件構(gòu)建簡單搭建出機器人的底盤。
3 雙輪自平衡機器人控制方式的設(shè)計構(gòu)想
解決好合適的電機及電源這些動力系統(tǒng)“動起來”的問題后,接下來我們考慮的便是“怎么動”。
基于此設(shè)計條件,我們初設(shè)所需要的控制策略是:通過Arduino軟件編寫串口通信程序通信單片機,使用I2C設(shè)備連接,以達到雙輪自平衡機器人的閉環(huán)運行,為了使雙輪小車能夠自平衡,我們需要一個陀螺儀去實現(xiàn)。陀螺儀的原理就是一個旋轉(zhuǎn)物體的旋轉(zhuǎn)軸所指的方向在不受外力影響時是始終不變的,因此人們用這個原理保持運動方向的平衡。采用多種方法信息讀取軸所指示的方向,并將其數(shù)據(jù)信號傳給控制系統(tǒng)。我們騎自行車其實也是利用了這個原理,輪子轉(zhuǎn)得越快越?jīng)]那么容易倒,是因為車軸有一股保持水平的力量?,F(xiàn)在陀螺儀可以準(zhǔn)確地確定運動物體的方位,它在航空、航海、航天和國防工業(yè)中作為一種慣性導(dǎo)航儀器被廣泛使用。傳統(tǒng)的慣性陀螺儀主要部分有機械式的陀螺儀,而機械式的陀螺儀對工藝結(jié)構(gòu)的要求很高。70年代提出了現(xiàn)在光纖陀螺儀的基本設(shè)想,到80年代以后,光纖陀螺儀就獲得了非常迅速的發(fā)展,激光諧振陀螺儀也得到很大的發(fā)展。光纖陀螺儀具有結(jié)構(gòu)緊湊、靈敏度高、工作安全可靠的特點。光纖陀螺儀在很多的領(lǐng)域已經(jīng)完全取代了機械式的傳統(tǒng)陀螺儀,成為現(xiàn)在導(dǎo)航儀器中的關(guān)鍵部件。
目前自平衡機器人的底盤上裝有陀螺儀傳感器,其是一種簡單輕巧的電子傳感器,可以用于設(shè)備的自由移動,即跟隨設(shè)備的移動而移動,還可以用在定位和控制系統(tǒng)上。傳統(tǒng)的陀螺儀傳感器用于直升機的模型上,以控制直升機的平衡[3],現(xiàn)在的科技讓陀螺儀傳感器也利用于手機等移動設(shè)備上,以實現(xiàn)重力感應(yīng)和體感觸發(fā),陀螺儀傳感器還會產(chǎn)生諸如控制設(shè)備實行遠程同步控制光標(biāo)等。陀螺儀傳感器類似陀螺,旋轉(zhuǎn)的物體無論是否受到外力影響,本身旋轉(zhuǎn)軸的方向是不會改變的,所以陀螺會一直保持著直立,陀螺儀傳感器也會利用這一點保持物體的方向。物體可以通過某些方式讀取可以產(chǎn)生旋轉(zhuǎn)軸的旋轉(zhuǎn)方向,并且進行數(shù)據(jù)傳輸,將方向數(shù)據(jù)傳給控制系統(tǒng),讓設(shè)備實現(xiàn)一定的反應(yīng)。陀螺儀傳感器的靈敏度很高,工作穩(wěn)定可靠、體積小巧、功能強大,因此陀螺儀的方向很重要,如無法計算正確的角度,機器人將無法工作。通過動力系統(tǒng)的“加持”后,我們的機器人可以動起來,但是目前沒有目標(biāo)、沒有方向,它只會漫無目的地動。那么接下來我們便開始想辦法“告訴”它應(yīng)該怎么動,給予它一個目標(biāo)讓它去實現(xiàn),這便是一個與機器通信的過程[4]。
機器人的姿態(tài)信息包括傾倒的角度和角速度,這是它可以“告訴”我們的信息。那么我們首先想要它保持平衡就要用角度來指揮它應(yīng)該在一個什么樣的狀態(tài)。這時,通過ardiuno連接單片機進行串口通信,配合陀螺儀便能很好的幫助我們達到平衡的目的。在ardiuno中進行變量等基本設(shè)置后,該控制方式以9600kbps的速率啟動串行端口,以主控模式啟動I2C總線并將I2C時鐘速度設(shè)置為400kHz。為了創(chuàng)建用于控制步進電機的可變脈沖,需要創(chuàng)建一個定時器,該定時器將每20us執(zhí)行一段代碼(子程序)。
在默認(rèn)情況下,MPU-6050處于睡眠狀態(tài),所以我們必須喚醒它。通過地址開始通信,將寫入寄存器的位置設(shè)置為00000000以激活陀螺儀并設(shè)置一些篩選以改進原始數(shù)據(jù)。設(shè)置pin口,創(chuàng)建500個循環(huán),每15圈改變一次LED的狀態(tài),使LED快速閃爍,啟動與陀螺儀的通信,開始讀取寄存器(75h),結(jié)束通信。從陀螺儀請求兩個字節(jié),將兩個字節(jié)合并為一個整數(shù),等待3700微秒以模擬主程序循環(huán)時間,將總值除以500,得到平均陀螺儀偏移量,在下一個循環(huán)結(jié)束時間設(shè)置loop_timer變量[5]。
接下來便是主程序循環(huán),如果有串行數(shù)據(jù)可用,將接收到的串行數(shù)據(jù)加載到received_byte變量中,重置receive_counter變量,接收到的字節(jié)對25個有效程序循環(huán)(100毫秒),100毫秒后刪除接收到的字節(jié)。將蓄電池電壓加載到 battery_voltage變量,并對二極管進行電壓補償。與陀螺的角度啟動通信,從寄存器3F開始讀取,添加加速計校準(zhǔn)值,通過將acc數(shù)據(jù)限制在+/-8200,防止被零除[6]。
根據(jù)加速度計計算當(dāng)前角度,設(shè)置啟動變量以啟動PID控制器,添加陀螺校準(zhǔn)值。并非所有陀螺儀都安裝在與機器人軸100%水平的位置,這可能是由于制造分接板時未對準(zhǔn)造成的。因此,機器人將不會在完全相同的位置旋轉(zhuǎn),并開始形成越來越大的圓圈。為了補償這種行為,當(dāng)機器人旋轉(zhuǎn)時,需要非常小的角度補償,先嘗試0.0000003或-0.0000003,看看是否有改進。使用PID控制器計算,平衡機器人由角度驅(qū)動。首先計算所需角度(設(shè)定點)和實際角度(過程值)之間的差值,自動更改自平衡pid設(shè)定點變量,以確保機器人始終保持平衡。計算PID出輸出值,將PI控制器限制為最大控制器輸出。為下一個循環(huán)存儲誤差值,當(dāng)機器人處于平衡狀態(tài)時,創(chuàng)建一個誤差來停止電機。如果機器人翻倒或啟動變量為零或電池為空,將PID控制器輸出設(shè)置為0,以便電機停止移動,通過這樣兩個誤差的設(shè)置來確保機器人循環(huán)出錯的安全性[7]。
通過控制計算,將控制器輸出復(fù)制到左側(cè)電機的pid_output_left變量,將控制器輸出復(fù)制到右側(cè)電機的pid_output_right變量,如果設(shè)置了接收字節(jié)的第一位,則更改left和right變量以向左轉(zhuǎn)動機器人,增加左馬達轉(zhuǎn)速,降低右馬達轉(zhuǎn)速。如果設(shè)置了接收字節(jié)的第二位,則更改left和right變量以向右轉(zhuǎn)動機器人,降低左馬達轉(zhuǎn)速,增加右馬達轉(zhuǎn)速。如果設(shè)置了接收字節(jié)的第三位,則更改left和right變量,使機器人向右移動,緩慢改變設(shè)定點角度,使機器人開始向前傾斜。如果設(shè)置了接收字節(jié)的第四位,則更改left和right變量以向右轉(zhuǎn)動機器人,緩慢改變設(shè)定點角度,使機器人開始向后傾斜。如果未發(fā)出向前或向后指令,則緩慢將設(shè)定點降至零。如果PID設(shè)定值大于0.5,則每次循環(huán)將設(shè)定值降低0.05。如果PID setpoint小于-0.5則setpoint每次循環(huán)增加0.05。如果PID設(shè)定點小于0.5或大于-0.5,則將設(shè)定點設(shè)置為0。當(dāng)平衡小車沒有向前或向后移動時,可調(diào)整自平衡點。這樣,機器人總能找到平衡點,如果setpoint是0度,機器人仍在向前移動,則增加self_balance_pid_setpoint;如果機器人仍在向后移動,則降低self_balance_pid_setpoint。之后用電機脈沖計算,為了補償步進電機的非線性行為,需要進行以下計算以獲得線性速度行為。計算左右步進電機控制器所需的脈沖時間,將脈沖時間復(fù)制到throttle變量,以便中斷子程序可以使用它們。角度計算調(diào)整為4毫秒的循環(huán)時間,確保每個循環(huán)正好是4毫秒。通過將loop_timer變量設(shè)置為每個循環(huán)+4000微秒來創(chuàng)建等待循環(huán),如果throttle_left_motor_memory為負,將輸出5設(shè)置為低,以反轉(zhuǎn)步進控制器的方向,反轉(zhuǎn)throttle_left_motor_memory變量,將5號輸出引腳拉高來控制步進電機正向旋轉(zhuǎn),將輸出設(shè)置為6高,為步進控制器創(chuàng)建脈沖,將輸出6設(shè)為低,因為脈沖只需持續(xù)20us,如果throttle_right_motor_memory為負,將3號輸出引腳拉低來控制步進電機反向旋轉(zhuǎn),反轉(zhuǎn)throttle_right_motor_memory變量,將步進電機正向的輸出3設(shè)置為高,將輸出4設(shè)置為高,為步進控制器創(chuàng)建脈沖,將輸出4設(shè)置為低,因為脈沖只需持續(xù)20us。
由此,我們可以達到機器人的自我平衡以及差速轉(zhuǎn)向,實現(xiàn)機器人的自我調(diào)整平衡和底盤運動控制,這便是我們所謂的機器人能自我知曉“怎么動”。
4 總結(jié)
通過上述的研究確定了雙輪自平衡機器人的電動機控制方式以及程序構(gòu)想。但在后期的程序編寫階段,需要對雙輪機器人的整體重量,輪距以及陀螺儀的放置位置進行計算校核,才能保證在電動機額定的轉(zhuǎn)矩下,完成雙輪及其人的自平衡問題。
參考文獻:
[1] 茅力非.兩輪自平衡移動機器人建模與控制研究[D].武漢:華中科技大學(xué),2013.
[2] 王曉宇.兩輪自平衡機器人的研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.
[3] 葉聰紅.本質(zhì)不穩(wěn)定兩輪車輔助平衡裝置的智能控制[D].西安:西安電子科技大學(xué),2006.
[4] 趙書尚,韓建海,李濟順,等.平行雙輪電動車及其控制系統(tǒng)的研究[J].機電工程,2005(01):12-15.
[5] 武俊峰,孫雷.兩輪自平衡機器人的控制方法研究[J].哈爾濱理工大學(xué)學(xué)報,2014,19(06):5.
[6] 方輝.基于LMI的兩輪自平衡機器人控制器設(shè)計[J].黑龍江科技學(xué)院學(xué)報,2015(03):333-335.
[7] 馬傳翔,楊名利.雙輪自平衡機器人的滑模變結(jié)構(gòu)控制研究[J].微計算機信息,2011,27(01):3.