把存储的 yaw 上限归一到 ±180
yaw 台转 ±180,实测点的第二组精确解落在 118° 之外:旧文件里的 ±90 会让求解器把位姿算成可达、运动守卫却拒绝这段 yaw,操作员看到的就是“到不了”。加载时把求解器与守卫两种写法的 yaw 上限一起归一,pitch 包络此前已按同一理由处理。
This commit is contained in:
@@ -322,6 +322,13 @@ def load_preferences() -> dict[str, Any]:
|
||||
# Yaw travel is ±180. The same-sign pitch solution sits near ±150° of yaw,
|
||||
# and a stored ±90 drops it, leaving the opposite pitch sign on one side.
|
||||
prefs["finger_yaw_limit_deg"] = float(defaults["finger_yaw_limit_deg"])
|
||||
# The solver's envelope and the move guard's are one bench fact written twice: a
|
||||
# measured point has two exact solutions, the second past 118° of yaw, and a file
|
||||
# saved on the old ±90 would have the solver call a pose reachable while the guard
|
||||
# refused the 118° the move needs. Normalise both spellings, as the pitch envelope
|
||||
# above is normalised, so "cannot reach" can only mean the stage really cannot.
|
||||
if isinstance(limits, dict):
|
||||
limits["max_yaw_deg"] = float(defaults["safety_limits"]["max_yaw_deg"])
|
||||
# A hand-edited task number must not reach the controller as typed.
|
||||
prefs["bas_task"] = clamp_bas_task(prefs.get("bas_task"))
|
||||
prefs = _migrate_axis_roles(prefs)
|
||||
|
||||
Reference in New Issue
Block a user