修补 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。
这可能表明固件中的逆运动学求解器存在错误。