測試 spoonBot#
spoonBot 是一台簡單的差動驅動機器人,它有一支連接至伺服機的湯匙,讓它能夠平移與傾斜。關於打造 spoonBot 的資訊,請參閱 spoonBot-Construction 頁面。隨最新 cc3 發行版附帶的範例程式包含示範如何移動 spoonBot 以及執行 spoonBot 示範模式的範例程式碼。spoonBot 示範模式與 CMUcam2 示範模式類似,只是它使用 spoonBot 來進行平移與傾斜。
校準 spoonBot#
在使用 spoonBot 之前,您需要校準伺服設定。這是透過在 main 頂部設定以下資料結構來完成:
// SpoonBot Calibration Points
// Assume Left = Servo 0
// Assume Right = Servo 1
// Assume Spoon = Servo 2
my_cal.left_mid = 71;
my_cal.right_mid = 77;
my_cal.spoon_down = 100;
my_cal.spoon_mid = 202;
my_cal.spoon_up = 255;
my_cal.left_dir = 1;
my_cal.right_dir = -1;
my_cal.spoon_dir = 1;
// Set the calibration points
spoonBot_calibrate (my_cal);
將 cmucam2 模擬韌體燒錄至相機
開啟 CMUcam3 Frame Grabber 或終端機程式
使用 Frame Grabber,前往「Settings」面板並拖曳伺服機滑桿以變更數值
在終端機中,輸入「sv <servo-id> <servo-value>」以設定伺服機,例如:
:sv 0 77 ACK
透過調整伺服機 0 與 1 直到輪子停止,找出它們的中間位置
my_cal.left_mid = <來自 servo 0 的值>
my_cal.righ_mid = <來自 servo 1 的值>
現在您需要找出方向的正負號
從後方觀察 spoonBot(湯匙朝向您),嘗試降低伺服機 0 的數值,那應該是左輪
如果伺服機順時針/向後(朝向您)旋轉,則 left_dir 應設為 1
如果伺服機逆時針旋轉,left_dir 應設為 -1
對伺服機 1 重複此步驟(從 spoonBot 的視角來看,那應該是右輪)
如果伺服機順時針/向後(朝向您)旋轉,則 right_dir 應設為 1
如果伺服機逆時針旋轉,right_dir 應設為 -1
通常,應將其中一個伺服機設為負值!
現在透過調整伺服機 2,找出湯匙的 Min、Middle 與 Max 位置
Min 應該是將湯匙往下推、進而使 spoonBot 向前傾斜的最小值
相應地設定 spoon_down
Max 通常是 255,應使 spoonBot 盡可能地朝上看
相應地設定 spoon_up
Middle 是使伺服機保持水平的值
相應地設定 spoon_mid
如果 Min 與 Max 看起來相反,請將 spoon_dir 變更為 -1
校準完成後,重新編譯專案並燒錄 CMUcam3。spoonBot 會先執行一連串腳本化的動作,以確保伺服機設定正確。接著 spoonBot 會等待按鈕按下以開始追蹤某個色彩。文字會透過序列埠顯示,通知您各個操作階段。
編寫好的動作腳本應如下:
靜止不動
向下看
向上看
回到中間位置
順時針旋轉(從上方看)
逆時針旋轉
相機準備就緒時紅色 LED 熄滅
準備好追蹤時紅色 LED 亮起
如果這看起來正確,那麼試著在相機前方幾英寸處拿著一個顏色鮮豔的物體,然後按下按鈕。當您將物體拉遠時,spoonBot 應該會朝向它旋轉。請使用顏色盡可能均勻的鮮豔物體。像鮮紅色布料這樣的物體會很合適,因為它反射的光線非常少(純紅色除外)。請確保房間內有足夠的照明。試著擷取一個畫格,看看環境條件看起來如何。
注意:若您希望在不拔除伺服機的情況下停用它們,請斷開伺服電源跳線(servo-power-jumper)。