摘 要:人類在科技的發展史上,一直在嘗試著想要創造出一個具有肢體、感官、腦力等綜合一體的智能機器人,而電腦鼠就是一個很能夠用來詮釋肢體、感官及腦力綜合工作的基本實例,這也是當初電腦鼠被發明的理由,希望能夠借助電腦鼠的創作來研究與發明更加復雜的機械。
關鍵詞:電腦鼠;ARM Cortex-M3處理器;LM3S615;紅外傳感器
研究目的:電腦鼠是一個具備自主運動能力的機器人,它能在一個由16X16個單元格組成的迷宮中,從起點出發,自主搜尋迷宮的終點,并進而利用搜尋過程中搜集到的迷宮資料找出從起點到終點的最佳路徑。
應用價值:自主機器人有著很廣泛的應用,比如嗅探炸彈,從廢墟中搜索傷員到家庭的自動化,再到自動駕駛。設計者們面臨的主要問題是可靠的電源支撐和敏銳的感知機制,因此像電腦鼠這種對未知環境探索的機器人常常給予工程師們靈感。不僅如此,電腦鼠更結合了機械、電機、電子、控制、光學、程序設計和人工智能等多方面的科技知識。人們希望借助電腦鼠促進更加復雜機械的研究與發明[1]。
文章所做的工作:(1)電腦鼠直走時的姿勢控制及姿勢修正:利用紅外傳感器接收到的障礙物的數據來編碼調整馬達的轉動以達到姿勢控制及修正的目的;(2)電腦鼠在行走時能夠實時的掌握障礙物的信息:掌握紅外傳感器的工作原理并編程通過控制系統計數器每隔一段時間調用紅外傳感器探測障礙物的信息;(3)編碼實現電腦鼠行走的驅動庫,包括前進、左轉、右轉、加速及位置修正等:通過控制相應引腳的信號達到對馬達的控制,利用兩邊各自獨立的馬達實現了不同方式的運動;(4)電腦鼠在迷宮內速度的提升和減小:將剩余的路程與電腦鼠當前速度進行比較,做出加速或是減速的判斷,再通過改變系統計時器的調用間隔從而達到對速度的控制;(5)將一些重要信息或調試信息通過八段數碼管顯示出來:通過控制ZLG7289B芯片驅動8個8段共陰數碼管。
1 電腦鼠底層驅動庫的設計與實現
1.1 底層驅動庫的總體介紹
電腦鼠的底層驅動庫包括電腦鼠在迷宮內的左轉、右轉、180度轉向,加速和減速、姿勢的控制和修正及紅外傳感器對墻壁的探測。(1)電腦鼠的加減速:因為推動步進電機前進一步的功能是由系統中斷超時服務函數來完成的,因此,對電腦鼠加速或減速的控制就是控制中斷超時計數器的數值,從而控制調用中斷超時服務函數的調用頻率,達到控制對步進電機步進一步的頻率;(2)紅外傳感器的控制及對墻壁信息的偵測:紅外傳感器由LM3S615的PWM模塊的輸出驅動,不同的驅動頻率使得紅外的偵測距離不同。系統中斷周期的分別使能五個方向的紅外傳感器,達到對墻壁信息實時的偵測;(3)姿勢的控制及修正:姿勢的控制及修正通過讀取墻壁的信息,分析電腦鼠當前所處的位置信息,判斷是否要對電腦鼠的姿勢進行修正,如果需要,該模塊通過控制相應的步進電機當前暫停一步,達到對姿勢的控制及修正。
1.2 加速及減速的設計與實現
為了減少電腦鼠在迷宮當中搜尋階段及沖刺階段的時間,一個很有效的方法就是加快電腦鼠在迷宮當中的速度,因此智能的加快及減慢電腦鼠的速度就成了完善上述功能的一個必須解決的問題。
1.3 加速的原理
加減速實時算法的核心是使用系統定時器中斷,當系統定時器發生超時中斷時,系統超時中斷服務函數推動電機走下一步,然后計算出下一步將要維持的時間,并賦值給系統定時器的計數器,作為下一次計數器的計數值。當下一次中斷來臨時,再推動一步,并設置在下一步的時間。如此下去,就可以通過對定時器賦值達到對步進電機轉速的控制,從而控制電腦鼠的速度。
步進電機的轉動不是時時刻刻的,而是在某一段很短的時間內(遠遠小于實際所設置的定時器的時間)轉動一步,然后停止等待下一次的定時器超時中斷,然后再走下一步,然而由于這段時間發生的極快,肉眼幾乎無法感知步進電機的轉動實際上是“量化的”。因此對于某一時間點步進電機轉速的求解應該轉化為在某一段時間內步進電機轉速的平均值W'。不失一般性,在此我們假設這段時間為以該時間點為中心,前后兩次系統超時中斷設置的時間加上該時間段系統超時中斷設置的時間,那么總的時間就為T=tn-2+tn-1+tn+tn+1+tn+2。
步進電機每轉動一步,所轉過的角度是相同的,在此我們假設該角度為μ。那么W'=(5*μ)/T。當某一個時間點tm,諾tn-2>tm-2,tn-1>tn-1,tn>tm,tn+1>tm+1,tn+2>tm+2,顯而易見,Tn>Tm,Wn' 以上便是電腦鼠加減速度的原理。 2 系統計數器的設置 以下我們通過控制系統計數器的值來模擬電腦鼠進行勻加速運動。 假設我們現在要將電腦鼠的加速度設置為a,某一時刻電腦鼠的速度取在該系統中斷超時時間段內的平均值V'。由一次超時中斷服務函數推動步進電機走一步,可知V'=1/Tn(步/秒),Tn表示該時間點所在的系統計數器設置的時間,Tn=cn/f,cn是當前系統計數器的數值,f是提供給系統計數器的時鐘頻率。 最后,我們只需要在每次系統超時中斷執行的時候,將下一次系統超時中斷的計數器設置為根據公式計算出來的值,就可以保證該過程是均勻變速的運動了。 3 姿勢控制及修正的意義 電腦鼠要在前進的過程中不斷調整姿勢,以免碰到擋板,電腦鼠在迷宮中的理想姿勢是處于迷宮格的中心,且前進方向平行于擋板。但是因為電腦鼠左右兩輪的運動特性并非完全吻合,所以電腦鼠必須要能協調地配合微控制器、紅外傳感器,來控制左右兩顆步進電機,對當前的狀態進行調整。這中間包含為了避免電腦鼠撞上墻壁,并且知道自己的所在位置,所以必須要修正電腦鼠自己的認知與實際情況的三種誤差。有趣的是橫向與朝向角度的誤差可以同時修正。 4 姿勢控制及修正的方法 4.1 使用斜角紅外修正姿勢的范圍 例如,電腦鼠處在一個單元格2中,而斜角的紅外傳感器探測的卻是另一個單元格中的墻壁信息,但是這時的墻壁信息卻還未探明(因為探測墻壁的有無主要是使用左方,前方,右方的三個紅外,而不是斜角紅外),所以如果使用這時斜角紅外傳回的資訊,很可能會引起程序出現判斷錯誤。因此,我們只在一定的范圍內使用斜角的紅外。而在該有效范圍以外的區域,我們使用左方和右方的紅外傳感器傳回的近距離是否有障礙物的信息作為判斷姿勢是否正確的依據。 4.2 使用外側紅外姿勢修正的范圍 在斜角的兩個紅外傳回無效信息的范圍內,使用外側紅外傳回的信息對姿勢進行修正,這段有效距離從電腦鼠的斜角紅外探測到下一個迷宮格的墻壁到外側的紅外探測到下一個迷宮格的墻壁信息。 以上,我們討論了多種情況下利用不同紅外傳回的資訊對電腦鼠姿勢控制的方法,雖然沒辦法包括所有的情形,但是從電腦鼠實際的行走來看,效果還是不錯的,因為我們以上考慮的都是發生概率比較大的情形,因此產生的效果是可以令人接受的。