徐書晗
我在第18屆山東省青少年機器人競賽中獲得了機器人綜合技能項目的冠軍,并作為該項目山東省的唯一代表參加了全國大賽,最終獲得二等獎。
要想在機器人綜合技能大賽中取得優(yōu)異的成績,出色的編程能力必不可少。以下是我的一些“秘訣”。
“熟”字當先
很多人認為,要讓機器人靈活地前進、后退、左轉(zhuǎn)或右轉(zhuǎn),只要在編程軟件中輸入相應的代碼就可以了。事實上,機器人編程非??简灳幊陶邔C器人以及程序的熟悉度。
比如,綜合技能中有一項放乒乓球的任務,機器人需脫線后用馬達控制前進的距離。問題來了:機器人馬達要用怎樣的速度才能更準、更快地完成任務?如果機器人的兩個馬達運行速度不一樣,編程時要如何設置速度差才能使兩個馬達實際運行時速度一樣?
如果不熟悉機器人的性能,比賽時就只能一點一點編程、調(diào)試,而且程序還不一定寫得好。機器人調(diào)試不好,編程時間被大量耗費,最終成績自然不會太理想。因此,只有熟悉機器人的性能才能在賽場上靈活貫通,準確、迅速地編寫最適合機器人性能的程序。
再比如,機器人完成所有任務所用的程序中,有時要求機器人轉(zhuǎn)彎必須轉(zhuǎn)正,以更好地完成后面的任務,所以比賽時一定要保證馬達轉(zhuǎn)彎的精確度,當發(fā)現(xiàn)機器人轉(zhuǎn)彎角度偏小或偏大時要微調(diào)轉(zhuǎn)彎的子程序??扇绻幊陶邔φ壮绦虿皇煜?,只知道這個模塊可以轉(zhuǎn)彎卻不知道如何修改模塊后面的子程序,機器人的運行就難以精準。
所以,無論是綜合技能還是其他需要編程的項目,編程者要對機器人以及程序非常熟悉,“熟”是編程者取勝的最基本的條件。
“穩(wěn)”字把關
對機器人及程序十分熟悉后,我們要追求機器人運行時的“穩(wěn)”。機器人的獨特魅力在于它的不穩(wěn)定性,同一個程序、同一個機器人在同一種環(huán)境中運行,第一次成功后一定要試第二次、第三次,因為有可能每一次的結果都不一樣。
如何提高機器人運行的穩(wěn)定性?一是完善硬件,比如經(jīng)常擦輪子或根據(jù)情況改造機器人。二是從編程角度,多試、多練、多修改,最大可能地排除因程序問題造成的機器人運行不穩(wěn)定。
參加全國大賽之前的一段時間,我每天都會練習。第一天我只編寫了一個循跡板循一個七路口的程序就直接走完了一個板塊,并且試了幾次都很成功。但是第二天,有一兩次機器人循線后車頭的方向是歪的,這就導致之后機器人馬達走線都會走歪,所以必須修改程序。我把以前的路口循線改成了慢速時間模塊循線,使每次循線后機器人的方向都一樣,最后用馬達轉(zhuǎn)正,以此保證機器人運行的穩(wěn)定性。
“技”字決勝
這里的“技”并不是技術,而是技巧。我總結了兩個技巧:一是建立子程序。綜合技能是完成幾個任務,每個任務的走線可能不同,但做某個任務時機器人各個伺服、馬達運行的角度、速度、先后順序等都一樣。因此,可提前編好每個任務的程序,再把這些任務做成子程序,每次用到時直接提取并簡單微調(diào),既節(jié)省時間又準確。
二是根據(jù)情況靈活變通。比如我編程時會編寫兩個程序,一個求穩(wěn)一個求快,根據(jù)其他選手機器人的運行情況以及自己機器人的總體發(fā)揮情況靈活選擇。
再比如,我會利用比賽中重試的規(guī)則編寫兩三個程序,有的只做第二個任務,有的只做第三個任務,機器人第一個任務失敗后,重試時我就啟動機器人只做第二個任務的程序,這樣能節(jié)省時間,完成更多任務。
運用這些技巧,在棋逢對手時就會比對方有更大的把握取勝。因此,伯仲之間,“技”字決勝。