• 沒有找到結果。

分類機器人程式流程圖

在文檔中 中 華 大 學 (頁 46-54)

第三章 樂高積木分類機器人之軟體架構

3.3. 分類機器人程式流程圖

本研究之自主式樂高積木分類機器人,內部包含有: 所需要的編輯程式硬體描 述語言 (Verilog HDL),也就是本人所撰寫的程式,用來下達指令給自主式樂高積 木分類機器人做所需要完成的動作,以成功達成預期的結果,其程式流程圖,如 圖3.4 所示。

當開啟電源時,首先是主程式會讓系統初始化,也就是系統會先自我偵測檢 查,從頭到尾全部運作一遍,若有任何環節發生問題時,系統將自動停止運作;

圖3.3 Quartus II 應用軟體主畫面[21] 

若沒有問題,則進入待機狀態。接下來,完成系統初始化的主程式會呼叫馬達控 制程式,然後再由馬達控制程式下達指令給步進馬達(1)動作,使得步進馬達(1)旋 轉兩圈半後,此時因受到樂高積木機構連桿的作用,擺放顏色積木的籃框開始上 下搖晃,隨後將預先擺放有顏色積木的籃框中的任一顏色積木隨機導入軌道中固 定位置等待被判讀識別而後放下。此時,等待放有顏色積木的籃框穩定後,接著 安裝在放有顏色積木的籃框的軌道上方的顏色感測器開始運作讀値,開始辨識分 析在隨機被導入軌道中定位等待放下的顏色積木的顏色;同時發光二極體 (LED) 也會被啟動 (ON) 點亮,做為輔助辨識分析在隨機被導入軌道中定位等待放下的 顏色積木的顏色讀值可以更精確。隨後,馬上判讀出正確的顏色積木的顏色數值,

經由這個判讀出的正確顏色積木的顏色數值比對後再去呼叫主程式,再下達指令 給馬達控制程式運作,接續再由馬達控制程式下達指令給步進馬達(2)動作,使得 步進馬達(2)旋轉接放顏色積木的籃框轉盤轉到顏色積木被判讀後的相同顏色積木 (在隨機被導入軌道中定位等待放下的顏色積木的顏色)的當然相對應(1)的位置等 待接收顏色積木;等待接收顏色積木的籃框轉盤穩定後,再由馬達控制程式下達 指令給步進馬達(1)動作,使得步進馬達(1)再旋轉半圈,將在隨機被導入軌道中定 位等待放下的顏色積木放下,這樣顏色積木便會落入了等待接收顏色積木籃框轉 盤正確的當然相對應(1)的位置中。倘若,顏色積木沒有被導入軌道中固定位置等 待被判讀識別,亦或被導入軌道中的顏色積木沒有被辨識分析成功,這表示顏色 積木分類目地沒有完成;這個時候主程式會再呼叫馬達程式,馬達程式會再下達 指令給步進馬達(1)或(2)動作;如此周而復始的反覆運作,一直到所有擺放在籃框 中的顏色積木有被導入軌道中固定位置等待被判讀識別,亦或被導入軌道中的顏 色積木有被辨識分析成功完成為止,而停止運作。就以上敘述說明,這樣的運作

模式會一直被重覆循環,直到所有被預先放在籃框中的顏色積木都被導入軌道中 且被辨識成功並放下到當然相對應的正確位置的接收藍框中而完成分類為止,再 關閉電源停止運作。

顏色感測器讀值 (辨識分析顏色積木)

顏色判讀 (比對數值) 啟動

系統初始化 (主程式)

Delay (等轉盤穩定) 馬達(1)旋轉兩圈半 (將顏色積木導入軌道中)

馬達(1)旋轉半圈 (放下,

被導入軌道中顏色積木)

馬達(2)旋轉到顏色 積木相對應(1)位置

Delay (等轉盤穩定)

接下來,對步進馬達在運作時的副程式做進一步更詳盡的解析,其程式流程 圖如圖3.5 所示。當馬達旋轉副程式接收到來至主程式的呼叫後,馬達旋轉副程式 會開始做馬達角度值讀取;接著,開始計算判斷讀取的馬達角度值是否等於預先 設定的角度值;如果被讀取的馬達角度值之誤差值大於零時,則下達指令給步進 馬達,使得步進馬達正轉;反之,若被讀取的馬達角度值之誤差值小於零時,則 下達指令給步進馬達,使得步進馬達反轉;當然,當被讀取的馬達角度值之誤差 值等於零時,則下達指令給步進馬達,使得步進馬達停止轉動(結束馬達運作)。步 進馬達在接收到指令運作時,步進馬達旋轉(正轉/反轉)速度的快、慢或停止,則 取決於被讀取的馬達角度值相對於誤差值;被讀取的馬達角度值相對於誤差值愈 大,則步進馬達旋轉(正轉/反轉)的速度就愈快。反之,被讀取的馬達角度值相對 於誤差值愈小,則步進馬達旋轉(正轉/反轉)的速度就愈慢。如此,一直反覆上述 的運作,直到步進馬達停止旋轉;即表示被讀取的馬達角度值相等於誤差值。否 則,再一直重複上述動作,一直到被讀取的馬達角度值相等於誤差值時,步進馬 達才停止運作。

馬達角度讀取

誤差 > 0 馬達旋轉副程式

誤差 = 設定角度-讀取角度值

反轉 正轉

轉速相對於誤差

結束

誤差 < 0

Yes No

No Yes

另外,當步進馬達在運轉時,如何得知接收顏色積木的籃框轉盤需要旋轉到 哪一個當然相對應的正確位置,等待接收被隨機導入軌道的顏色積木呢? 而被隨 機導入軌道的顏色積木,何時要被放下呢? 這些都是要靠顏色感測器副程式來達 成這個目標,做一個顏色辨識判別與讀值分析而判斷完成的,其程式流程圖,如 圖3.6 所示。

當電源開啟後,感測器元件開始先初始化,全部元件歸零重置,等待接收由 主程式呼叫而下達的指令,亦即馬達程式會回應主程式是否已經有顏色積木隨機 被導入於軌道中了? 當接收到由主程式呼叫而下達的指令後,表示軌道中已經有 了顏色積木;所以,首先讀取的是被設定的紅色模式,假如接收到讀取的是紅色 模式設定值的正緣訊號時,即表示在隨機被導入於軌道中的顏色積木是紅色的積 木;否則(即表示: 可能是藍色或綠色),返回重新讀取紅色模式設定值的正緣訊 號;此時若是讀取到紅色模式設定值的正緣訊號,即開始進入計數紅色周期(脈波 頻率);接著,自動將紅色周期(脈波頻率)的數值記錄作比對,若數值相等則判定 為紅色的積木,如此才完成紅色的積木分類。若感測器元件不是讀取到紅色模式 的設定值的正緣訊號,則重複上述動作。倘若在隨機被導入於軌道中的顏色積木 是綠色的積木;否則(即表示: 可能是藍色或紅色),顏色感測器讀值副程式,會進 入綠色模式讀值設定,接著判斷綠色訊號讀值是否為正緣訊號,是正緣訊號則進 入計數綠色周期,再接著將綠色周期數值自動作記錄比對,相符合則做放下顏色 積木的動作,而接收顏色積木籃框轉盤也已待命在正確當然相對應顏色積木的位 置等著接收顏色積木。假如在隨機被導入於軌道中的顏色積木是藍色的積木;否

則(即表示: 可能是紅色或綠色),顏色感測器讀值副程式,會進入藍色模式讀值設 定,接著判斷藍色訊號讀值是否為正緣訊號,是正緣訊號則進入計數藍色周期,

再接著將藍色周期數值自動作記錄比對,相符合則做放下顏色積木的動作,而接 收顏色積木籃框轉盤也已待命在正確當然相對應顏色積木的位置等著接收顏色積 木。就這樣如此重覆動作,周而復始的由紅、綠和藍色的積木都放下而落入了當 然相對應顏色積木的接收籃框內,一直到全部的顏色積木成功的完成分類為止。

在此要特別加以說明的是,為何皆隻字未提到黃色的顏色積木的分類運作呢? 這 是因為本研究設定若非紅色、綠色或藍色,即為黃色的顏色積木(因為,黃色是由 RGB 三原色之中的顏色組合而成的顏色);所以在本研究就應用排除法,將之歸類 為黃色的顏色積木,再加以重覆上述非紅色、綠色和藍色之外的讀值,而完成黃 色的顏色積木分類的運作即可。

在上一段提到,感測元件在初始化後,在讀取顏色模式設定時,會同時讀取 紅色、綠色和藍色模式設定值,進而判斷讀取顏色積木的訊號是否符合該顏色的 正緣訊號;若沒有符合該顏色的正緣訊號,則繼續重新讀取,直到讀取該顏色的 正緣訊號為止;再接著繼續進入計數該顏色周期(脈波頻率),然後,將該顏色周期 (脈波頻率)的數值記錄作比對,若數值相等則判定為該顏色積木,才算完成該顏色 積木的分類運作,如圖3.6 所示。

顏色感測器 讀值副程式

感測器元 件初始化

訊號正緣

Yes

No

No

讀取紅色 模式設定

訊號正緣

計數紅色 周期

計數綠色 結束 周期 綠色數值

記錄 讀取藍色 模式設定

計數藍色 周期

藍色數值 記錄

Yes

紅色數值 記錄

讀取綠色 模式設定

訊號正緣

Yes

No

圖3.6  顏色感測器讀值副程式流程圖 

在文檔中 中 華 大 學 (頁 46-54)

相關文件