測試 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)。