教你輕鬆學會讓自動小車追蹤彩球

這次的教程中,我們要示範如何運用威盛Pixetto視覺感測器和一個Arduino開發板,打造以顏色引導的無人車。這台小車將會追隨特定顏色的物體自動行駛。


這裡會省略一些事前準備步驟,例如:將Pixetto連接到個人電腦。詳細說明請上威盛Pixetto官網, 並參考先前的[基礎安裝]輔助教程

此說明中主要包含三個步驟:設定威盛Pixetto視覺感測器、以程式積木編輯Pixetto程式、以及把程式上傳到自動小車上的Arduino開發板。

步驟一

我們先將視覺感測器設定為辨識紅色與黃色。開啟威盛Pixetto Utility,在右方“功能”選項設定“顏色辨識”,並勾選您希望威盛Pixetto辨識追蹤的顏色 — 紅與黃。

完成後,即可測試Pixetto是否能順利偵測紅色和黃色。偵測成功時,畫面會顯示偵測物體的顏色標籤。

現在您的Pixetto已完成紅色與黃色的顏色辨識設定,接下來可以開始以程式積木編輯Pixetto囉!

步驟二

首先,打開威盛Pixetto Junior應用程式。

我們要編輯程式積木使無人車跟隨黃球以及停止於紅球前。

A.第一層程式積木

首先,從控制程式內選出第一層程式積木 -“初始化” 積木。

插入視覺感測器類別的 “初始化視覺感測器RX# () TX# ()” 積木。這個積木會將資料傳遞至Pixetto,RX代表接收,TX代表傳送。

這個設定將連結Arduino開發板與視覺感測器。我們建議使用0與1這組數值比較穩定。

接下來,在變數程式內選擇“宣告i為整數賦值”積木。

辨識物體時,我們需要兩個整數來控制舵機馬達的方向。整數“x”用來定位物體位置,“dx”定位物體由左至右的位置。

在“i”下拉選項中選取“建立一個變數”來建立“x”整數。

輸入“x”然後點選“OK”。

這樣我們就建立了“x”整數。

接下來,使用一樣的步驟建立“dx”整數。

這樣就完成兩個整數的設定。

最後,選擇“轉動舵機管腳()角度(0~180°)”積木插入“宣告dx為整數賦值”下方,來使舵機馬達的起始角度永遠從90度開始。

選擇管腳9,因為舵機馬達連接於Grove連接器D9,然後將角度設定為90度。這個步驟會確保舵機馬達與Arduino開發板之間相互溝通。

B.第二層程式積木

現在,我們來編輯讓舵機馬達左右轉動,並跟隨黃色物體的程式積木。

選取 “如果()那麼” 積木來創造一個活動。然後插入“識別到物體”積木使Pixetto回報透過Arduino 板傳來的指令偵測一件物體。如果這個條件成立,內在積木會啟動這個活動。

為使得以上成立,再重複插入一個 “如果()那麼” 積木到先前的積木建立一個子活動。

選取一個邏輯積木然後從視覺感測器程式類別輸入一個 “物體類別” 積木,設置等號,

再從視覺感測器積木類別加一個 “黃色” 積木。這會使Pixetto回報偵測到黃色的物體。

接下來,我們要編輯控制舵機馬達方向的程式積木。確保當Pixetto偵測到黃色物體時,無人車的旋轉角度在一定範圍內。

我們還要另外建立“x” 和“dx” 整數積木。“x”整數積木會使Pixetto偵測並辨識物體的寬度與大小。

第一,選取“將變量i設為()” 積木,點選“i”下拉選項中的“x”。然後從數學程式類別選取兩個積木串聯起來,再插入變數積木中。

在數學積木中插入“物體座標x” 和“物體寬度” 積木,將公式設定為 “加號” 和 “除號”,最後數值設為2來追蹤物體的中心。

第二,選取“將變量i設為()” 積木,點選“i” 下拉選項中的“dx”。然後從數學程式類別選取一個積木插入變數積木中,再加入一個“x” 積木。最後設定公式為“減號”、數值為“50”。

這個設定將確保偵測物體在一定範圍與尺寸內,以利Pixetto辨識與追蹤。

接下來,選取“內建LED狀態()” 積木設定為“高”來使主要馬達啟動。然後選取“寫入脈衝寬度調變管腳()賦值()” 積木設定管腳號碼為5,賦值為55。

在下方加入 “如果()那麼” 積木建立一個動作項目。

從邏輯類別選取第一個積木然後加入變數“dx”積木,將公式設為“<” 符號。然後從數學類別中選取第二個積木,加入“物體寬度” 積木,設定符號為“除號”、數值為“-2”。

接下來,選取“轉動舵機”積木,設定管腳為9,加入“約束數值” 積木,再加入一個數學積木(如下圖)

下一步,我們將“舵機角度管腳()” 積木插入,管腳設為9。數學公式設為“減號”。

繼續從數學類別插入一個“映射數值” 積木,其中第一部分加入一個“dx” 積木,後面數值設定為從“0~-50” 到“1~4”。最後,輸入約束數值在“45” 度到“135” 度之間來限制無人車左轉的範圍。

下一步,點擊“如果()那麼” 旁的圖標,從滾動表單中拖曳“否則如果” 積木加在下方,來建立下一個動作項目。

首先,從邏輯類別選取第一個積木然後加入變數“dx” 積木,將公式設為“ >” 符號。然後從數學類別中選取第二個積木,加入“物體寬度” 積木,設定符號為“除號”、數值為“2”。

接下來,選取“轉動舵機”積木,設定管腳為9,加入“約束數值” 積木,再加入一個數學積木,公式設為“減號” (如下圖)。

繼續從數學類別插入一個“映射數值”積木,其中第一部分加入一個“dx” 積木,後面數值設定為從“0~50” 到“1~4”。最後,輸入約束數值在“45” 度到“135” 度之間來限制無人車右轉的範圍。

接下來將這串積木組合插入“如果()那麼” 積木中,這樣就完成無人車左右行駛的設計了。

C.如何做出讓無人車停止的程式積木

第一,點擊第二層的“如果()那麼” 積木旁圖標,打開滾動選單。

第二,拖曳“否則如果” 積木加入下方。

再來,選擇一個邏輯積木,加入“物體類別” 積木,設定公式為“=” 等號,然後加入“紅” 積木。

這部分將使無人駕駛汽車在辨識到一個紅色物體的時候停止行駛。

接下來,選取“轉動舵機管腳()角度(0~180°)”積木,管腳設為9、角度設為90度。這樣舵機馬達停止時,前輪會停在90度的角度。

最後,選取“內建LED狀態()” 積木設定為“低”來將主要馬達關機。然後選取“寫入脈衝寬度調變管腳()賦值()” 積木設定管腳號碼為5,賦值為0。

最後,放入“延時(20)毫秒” 積木在尾端來設置主馬達的計時器。

這樣我們就完成所有的積木了!

步驟三

現在,我們要來檢驗做好的程式積木。將代碼上傳至Arduino板。

A.如何上傳程式

將無人車上的Arduino開發板連接至PC。

接下來,點擊在Pixetto Junior應用程式裡左上方的“選個硬件”下拉表單,選擇“Arduino UNO”開始建立連接。

點擊“沒有連接” 下拉箭頭,在彈出窗口點擊“連接”按鈕以建立連接。如果PC沒有找到USB連接,您可以使用重新整理按鈕。COM端口應該設置為COM4。 (COM端口可能依PC而不同。)

連接後,點擊“回到編輯器”按鈕回到威盛Pixetto Junior應用程式。

點擊右上角“上傳”按鈕將程式上傳到無人車。看到上傳完成訊息後即可拔下連接線。

B.如何保存您的專題項目

上傳後,我們可以將這個項目存起來。首先,點擊“項目”旁圖標打開滾動選單。選擇“保存項目”。

在彈出視窗中,我們可以將這個專案取名為“跟隨物體”或是任何您喜歡的命名。

可以建立或選擇一個資料夾專門儲存您所有的專案項目。

步驟四

現在可以使用兩個設定好的顏色(黃與紅)對無人車進行運行測試。

這樣就完成囉!

祝您玩得愉快,別忘了分享創作的同時,記得標註#VIAPixetto喔!

分享貼文!

Share on linkedin
Share on twitter
Share on facebook

This Post Has One Comment

  1. Julia

    這個小車感覺很有趣!

Leave a Reply