修補 SR6 韌體
修補 SR6 韌體檔案
如果你使用 SR6,可能需要修補韌體以防止某個錯誤發生。
資訊
以下內容僅適用於使用 SR6 機械手臂的情況。
修補
在 SR6-Alpha5_ESP32.ino 的第 429 行,SetPitchServo 函式中,將以下這行:
float beta = acos((csq + 5625 - bsq)/(150*c)); // Angle between c-line and servo arm
替換為:
float beta = acos(constrain((csq + 5625 - bsq)/(150*c), -1, 1)); // Angle between c-line and servo arm
接著,依照 SR6 的使用說明書將韌體上傳到你的裝置。
原因
在開發本軟體的過程中,我們發現該韌體存在一個錯誤,會導致向伺服馬達傳送無效的數值。
當機械手臂被指示移動到一個不尋常的位置時,就會發生這個錯誤,而在虛擬空間中,這樣的位置是實際上可能達到的。
這個錯誤的指令會使伺服馬達做出錯誤的反應,移動到一個極端位置。
因此,如果你使用 SR6,我建議你修補韌體。
備註
技術原因:一個大於 1 的值(例如 1.153)被傳入了 acos 函式。這會回傳 NaN。
這可能表示韌體中的逆向運動學求解器存在錯誤。