你是否曾經讓機器人轉 90 度,結果卻看著它轉到了 95 或 100 度?這種過衝問題是 VEX IQ 程式設計中最令人沮喪的挑戰之一。
在本指南中,我們將教你一種叫做動量補償的技術,讓你的機器人精確停在你想要的位置。
為什麼我的機器人會過衝?
當你讓馬達停止時,機器人不會立即凍結。它有動量 - 運動物體繼續運動的趨勢。以下是發生的情況:
- 機器人正在向 90 度旋轉
- Brain Inertial 讀數為 90 度 - 該停止了!
- 你發送停止命令
- 但機器人仍在運動…它滑行到了 95 度
你的機器人越重,轉速越快,過衝就越嚴重。
解決方案:提前停止
技巧很簡單:在到達目標之前停止,讓動量帶你走完剩餘的路程。
如果你的機器人通常過衝 10 度:
- 目標:90 度
- 停止於:80 度
- 動量帶你到:約 90 度
這個「提前停止」的量就是我們所說的動量值。
轉向函式
這是一個帶有動量補償的自訂積木,可以讓機器人轉到任意角度:
每個參數的作用
| 參數 | 控制內容 |
|---|---|
rotation | 目標角度(從起始位置算起的角度) |
velocity | 轉向速度(0-100%) |
momentum | 提前停止的角度數 |
轉向邏輯如何運作
函式首先透過比較目標位置(rotation)和目前位置(BrainInertial rotation)來判斷轉向方向:
右轉(目標 > 目前):
- 左馬達向前轉
- 右馬達向後轉
- 機器人順時針旋轉
左轉(目標 < 目前):
- 左馬達向後轉
- 右馬達向前轉
- 機器人逆時針旋轉
動量計算
假設你想右轉到 90 度,動量 = 10:
沒有動量補償:
停止於:BrainInertial = 90
機器人滑行到:約 100 度(過衝了 10 度!)
有動量補償:
停止於:BrainInertial = 90 - 10 = 80
機器人滑行到:約 90 度(完美!)
對於左轉,我們加上動量值而不是減去(因為左轉時 Brain Inertial 減小)。
完整程式
這是一個示範轉向的完整程式:
這個程式:
- 校準慣性感測器(保持機器人靜止!)
- 右轉到 90 度
- 轉回 0 度(中心)
- 左轉到 -90 度
- 回到中心
調整動量值
正確的動量值取決於你機器人的重量、輪子抓地力和轉向速度。每個機器人都不同!
| 動量 | 行為 |
|---|---|
| 太低 | 機器人過衝目標 |
| 剛好 | 機器人精確停在目標位置 |
| 太高 | 機器人在目標前停下 |
如何調整:
- 機器人過衝?→ 增加動量值
- 機器人提前停下?→ 減小動量值
速度也很重要
轉得越快,動量越大,所以需要更高的補償。如果你改變轉向速度,你可能需要重新調整動量值。
常見問題和解決方法
機器人轉向過衝
- 增加你的動量值
- 嘗試降低速度
機器人在目標前停下
- 減小你的動量值
機器人轉向方向錯誤
- 檢查裝置設定中的馬達方向
- 確保 LeftMotor 和 RightMotor 在正確的一側
轉向精度不一致
- 確保 Brain Inertial 已校準(啟動時機器人必須靜止)
- 檢查電池電量 - 低電量會影響馬達效能
- 清潔輪子 - 打滑會導致結果不一致
與直線行駛結合
現在你可以將轉向與我們之前指南中的直線行駛函式結合使用:
這創建了一個 L 形路徑:
- 前進(航向 0°)
- 右轉 90°
- 前進(航向 90°)
- 再右轉 90°
- 前進(航向 180°)
快速參考表
| 問題 | 最可能的原因 | 快速解決 |
|---|---|---|
| 轉向過衝 | 動量值太低 | 增加動量值 |
| 提前停下 | 動量值太高 | 減小動量值 |
| 轉向方向錯誤 | 馬達方向錯誤 | 檢查裝置設定 |
| 結果不一致 | 校準問題 | 啟動時保持靜止 |
下一步
掌握動量轉向後,你可以:
- 建構複雜的自主程式,結合行駛和轉向
- 學習比例轉向以獲得更平滑的旋轉
- 探索 PID 控制以達到競賽級別的精度
動量補償技術被各級別的 VEX 競賽隊伍使用。掌握這些基礎知識,你將擁有應對任何自主挑戰的建構模組!
專業提示:保持一個調參日誌!記錄下哪些動量和速度值最適合你的機器人。如果你修改了機器人的重量或輪子配置,這些值會改變。