SPIKE Prime 循線一加速就抖、過彎就脫線?5 個原因與解法

練 WRO 或 FLL 的同學,幾乎都遇過這個狀況:慢速循線好好的,速度一調高,機器人就開始左右甩頭,遇到急彎直接衝出去。

這通常不是程式寫錯,而是感測方式、控制方法、校準和安裝位置其中一個環節出了問題。下面整理 5 個最常見的原因,以及對應的解法。


原因 1:只用一顆顏色感應器,機器人「看不到」線在哪一邊

原廠顏色感應器一次只看地面上的一個點,它只知道「現在看到的有多黑」,卻不知道線是在左邊還是右邊。所以程式只能沿著黑白交界走,一偏就修正、修正過頭又偏回來,速度越快,甩得越厲害。

解法:

  • 兩顆感應器夾著線走:可以判斷線往哪邊偏,但會多佔一個孔位。
  • 改用多通道循線陣列:一次看一整排的點,直接算出「線在正中央還是偏左、偏右多少」。例如 循行者 8 路 會直接輸出 −100(線在右)到 +100(線在左)的位置,只佔 1 個孔。

原因 2:只用 P 控制,Kp 調太大

大多數入門程式只用「比例控制(P)」:偏多少就轉多少。Kp 小,反應慢、過彎跟不上;Kp 大,反應快,但會一直修正過頭,變成左右抖動。

解法:加上 D(微分)項。 D 會看「偏差變化得多快」,在快要修正過頭時先踩煞車,抖動會明顯變小。完整說明與程式,請看 SPIKE Prime 循線 PID 教學。

原因 3:程式迴圈太慢,速度卻太快

機器人每讀一次感應器、算一次馬達速度,中間會跑一段距離。迴圈越慢、車速越快,每次修正之間跑掉的距離就越長,線早就偏掉了。

解法:

  • 迴圈裡不要放 print 或其他耗時的指令,每 10 ms 左右讀一次就好。
  • 進階選手可以改用 Pybricks(MicroPython),通常比官方 App 的積木程式反應更快。

原因 4:沒有在比賽場地上校準

不同場地的燈光、地圖材質、反光程度都不一樣。在家裡練習時調好的數值,到了比賽現場常常失準,尤其是 WRO 花俏的彩色地圖。

解法:每次到新場地,先在地圖上校準一次。 用原廠感應器的話,先量白色和黑色的反射值,取中間當目標值;用循行者系列的話,按一下按鈕、在黑線上左右掃 5 秒就完成,數值會存在感應器裡。

原因 5:感應器裝太高、太後面,或高度會晃動

  • 裝太高:光點變大、變暗,黑白對比不明顯。
  • 裝在驅動輪後面:輪子已經轉彎了,感應器才看到線,反應永遠慢半拍。
  • 固定不牢:車子晃一下,讀值就跟著跳。

解法: 感應器盡量靠近地面、裝在驅動輪前方,並用積木確實固定,讓高度不會變。


✅ 快速檢查清單

檢查項目 做到了嗎
感應器靠近地面、在驅動輪前方、固定不晃 ☐
到比賽場地先校準 ☐
程式迴圈約 10 ms,沒有多餘的 print ☐
控制有加上 D 項,而不是只有 P ☐
感應器看得到線在左還是右(兩顆或陣列) ☐

想讓循線又快又穩?

循行者 8 路 和 循行者 16 路 一次看 8/16 個點、直接輸出線的位置和十字路口資訊,支援 SPIKE 官方積木與 Pybricks。不確定該選哪一款,看 選購指南 或 LINE 問我們。

LINE 詢價選購指南