贴面后不再抬回悬高;MoveL 切回关节后不再把整段位移当前进速度。

搜孔开局会抬到悬高再落回 hole_hover_z_m,螺纹还没咬合臂就离开孔口。没有接触传感器,到位只认 final_gap 算出的法兰高度,贴面后停在这个 Z。09:25 厂家 MoveL 切回 NRT_JOINT_POSITION 的第一拍把整段关节差算成 1.686 rad/s,前瞻再推 0.07 rad,光心从 5 mm 冲到 276 mm 后急停。切回后钉住结束瞬间的关节角并清零速度,JTC 还指着出发前的关节时不放行。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
arm_dev
2026-10-19 11:30:49 +08:00
parent 8c4dccccb1
commit 7af9e3d4b6
103 changed files with 5594 additions and 2498 deletions
+2 -8
View File
@@ -42,13 +42,7 @@ def load_site(path: Path | None = None) -> dict:
data = yaml.safe_load(text) or {}
if not isinstance(data, dict):
raise ValueError(f"无效的 site.yaml: {path}")
# 相对路径按仓库根展开。site.yaml 里不再写 /home/某用户/ros2。
src = str(_root() / "src" / "arm_application")
if src not in sys.path:
sys.path.insert(0, src)
from arm_application.site_io import absolutize_site_paths
return absolutize_site_paths(data, _root())
return data
def list_robots(data: dict) -> list[dict]:
@@ -947,7 +941,7 @@ def servo_overrides(data: dict) -> dict:
if "d435_handback_sec" not in servo:
raise RuntimeError(
"servo.d435_handback_sec 必须显式写"
"(厂家 MoveL 到位后,再确认多久才交回 D405)。不许用代码默认秒数。"
"(厂家 MoveL 结束后,法兰停稳多久才打开 D405 框心)。不许用代码默认秒数。"
)
if "wrist_align_sec" not in servo:
raise RuntimeError(