岳井玉
【摘 要】在虛擬機器人軟件環(huán)境中使用計算機程序算法,設計出虛擬環(huán)境的獨輪小車富有趣味性和探究性。本文的獨輪車算法應用到了工程控制理論中的PID原理,讓虛擬機器人軟件作為中小學生學習復雜程序算法和仿真工程原理的直觀工具,是一種有效嘗試。
【關鍵詞】虛擬機器人;獨輪車;PID;陀螺儀;仿真
【中圖分類號】G434 【文獻標識碼】B
【論文編號】1671-7384(2017)05-0086-02
獨輪車是只有一個輪子的小車,在電機馬達的驅動下能夠平穩(wěn)地在地面上行走而不摔倒。本文中的獨輪車采用蘿卜圈3D仿真機器人軟件的免費功能模塊來實現(xiàn)。
獨輪車原理
簡單獨輪車的平衡運動狀態(tài)主要有三種情況:后傾、直立、前傾(如圖1)。如果狀態(tài)是后傾,則車身需要一個向后的力才能讓其回到直立狀態(tài),即電機馬達需要加速向后轉動;如果狀態(tài)是前傾,則車身需要一個向前的力才能讓其回到直立狀態(tài),即電機馬達需要加速向前轉動;對于直立狀態(tài),電機馬達速度為零即可。
仿真軟件里有陀螺儀傳感器,能夠反饋機器人與地面的傾斜角度值。對于安裝在車身頂部的陀螺儀傳感器而言(如圖2),根據(jù)陀螺儀傳感器的說明書可知,車身向后傾時,傳感器值為負值;車身向前傾時,傳感器值為正值;車身直立時,值為0。而且傾斜越厲害,值越大,如果獨輪車向前倒了,值為90;反之,如果向后倒了,值為-90。因此,對獨輪車而言,陀螺儀傳感器的取值范圍是-90到+90(數(shù)學區(qū)間表達式為[-90,90])。進一步,假定獨輪車向前傾斜5度,則應當用P×5的電機速度向前加速才能維持其豎直(P是比例常量);假定向后傾斜-5度,則應當用P×(-5)的電機速度向后加速讓其豎直;并且,當傾斜的角度很大時,就應當用更大的電機馬達速度進行平衡糾正。因此,將陀螺儀傳感器的當前值反饋成機器人的電機馬達數(shù)據(jù),就可以設計出獨輪車。
獨輪車結構
設計獨輪車結構時,要考慮重心位置在豎直中軸線上,圖2是一款獨輪車:在車的頂端安裝陀螺儀傳感器,并指定端口號為31。輪子兩側是兩個電機馬達,而且只有一個電機馬達與輪子進行連接,并指定端口號為1;另一個電機馬達不指定端口編號,只用來保持重心的結構對稱。
獨輪車程序
獨輪車在行走時,機器人的車身狀態(tài)(傾斜狀態(tài))應當反饋到電機馬達中進行平衡糾正,從而保持車身直立而不摔倒。這個過程可以用循環(huán)語句來實現(xiàn)。
圖3是用Python語言完成的獨輪車虛擬機器人控制程序。第14行代碼表示用端口號為31的陀螺儀傳感器獲取獨輪車的傾斜角度值。第16行代碼表示將傾斜角度進行數(shù)學比例放大。根據(jù)虛擬機器人軟件教程,10倍電機正轉的轉速范圍是0到1000(數(shù)學區(qū)間表達式為[0,1000])或反方向轉速范圍是-1000到0([-1000,0]),由于電機的馬達值不能無限大,因此第19行到22行代碼表示對超出范圍的數(shù)據(jù)進行過濾。第25行代碼表示將最終的數(shù)據(jù)賦值給端口號為1的電機馬達,從而驅動獨輪車保持平衡。第28行表示采樣時間為20ms,即間隔一段時間后再進行下一次的循環(huán)。在調試中,還需要讓獨輪車在啟動時打破“靜止”狀態(tài),即需要有一定的初速度,因此第5行和第6行代碼將完成這項功能。
虛擬仿真
找一張?zhí)摂M機器人場景圖,將上述程序和機器人加載進來,就可以在仿真界面里觀察和調試獨輪車的運行狀態(tài)。對于圖3中的控制程序,主要有兩個地方可以調試。
第一處是第8行的比例值,假定陀螺儀取值是[0,5],而期望電機馬達值為[0,100],對于線性變化,可以這樣求出變化比例P=(100-0)/(5-0)=20。如果獨輪車前后擺動過于活躍而出現(xiàn)“摔倒”情況,就減小P值。
第二處是第28行的采樣時間,采樣間隔時間可短可長:如果太短,與計算機執(zhí)行一條指令的時間長短等性能有關;如果太長,表現(xiàn)為獨輪車摔倒后才糾正,顯然為時過晚。讓學生在思考中進行調試,并與現(xiàn)實情況進行比較,會發(fā)現(xiàn)控制程序的魅力。
算法拓展
PID控制(比例、積分、微分)是一種常用的用于機械裝置(如車輛、機器人、火箭)中的控制技術。用好PID控制,并不是一件容易的事,需要有相當?shù)母叩葦?shù)學基礎和控制技術基礎,對于小學、初中的學生來說,還是有些過于復雜,但通過簡單的代碼和虛擬仿真技術讓學生從小了解和學習PID,對提升學生的科學素養(yǎng)有益處。PID有三部分,在圖3中,實現(xiàn)了P控制,即比例控制,文中還給出了調試方法和取值方法。對于積分和微分控制,讀者可以參考機器人PID巡線等算法進行獨輪車平衡算法的深入研究。
參考文獻
中文樂高翻譯團隊. 用于樂高機器人的PID控制器[DB/OL]. [2011-8-28]. http://bbs. cmnxt. com/thread-5688-1-1. html.
孔祥宣. 自主式雙輪動態(tài)平衡移動機器人的控制系統(tǒng)研究[D]. 上海交通大學,2007.
霍亮. 兩輪自平衡電動車的關鍵技術研究[D]. 哈爾濱工程大學,2010.
蘿卜圈仿真入門教程[DB/OL]. http: //www. irobotq. com/website2/dl. aspx.
(作者單位:浙江寧波市北侖區(qū)泰河中學)