设置偏执距离
This commit is contained in:
@@ -405,7 +405,7 @@
|
|||||||
"row_residual": "Alignment residual",
|
"row_residual": "Alignment residual",
|
||||||
"row_frames": "Frame mapping",
|
"row_frames": "Frame mapping",
|
||||||
"tool_xy": "Tool X / Y",
|
"tool_xy": "Tool X / Y",
|
||||||
"tool_hint": "Where the tool is in the table frame, straight above the table origin by default. The table move is what carries the contact to this point. Measure it on the real setup.",
|
"tool_hint": "Where the tool is in the table frame. With Y at 3 mm, every point's table Y is the solved move plus 3 mm, so the sensor shell tail stays on the platform centre axis.",
|
||||||
"sensor_xy": "Sensor X / Y",
|
"sensor_xy": "Sensor X / Y",
|
||||||
"sensor_zy": "Sensor Z / yaw",
|
"sensor_zy": "Sensor Z / yaw",
|
||||||
"setup_hint": "How the sensor actually sits on the stack with the machine at zero: X/Y/Z translation and a yaw about Z. Z is the mounting plate, shims included — there is no separate plate field. Measure it on the real setup.",
|
"setup_hint": "How the sensor actually sits on the stack with the machine at zero: X/Y/Z translation and a yaw about Z. Z is the mounting plate, shims included — there is no separate plate field. Measure it on the real setup.",
|
||||||
|
|||||||
@@ -405,7 +405,7 @@
|
|||||||
"row_residual": "对齐残差",
|
"row_residual": "对齐残差",
|
||||||
"row_frames": "坐标映射",
|
"row_frames": "坐标映射",
|
||||||
"tool_xy": "刀具 X / Y",
|
"tool_xy": "刀具 X / Y",
|
||||||
"tool_hint": "刀具在工作台坐标系中的位置,默认在原点正上方;工作台的移动量就是把接触点送到此处所需的位移。请按实际安装测量填写。",
|
"tool_hint": "刀具在工作台坐标系中的位置。Y 为 3 mm 时,每个测点的工作台 Y 都会在解算结果上再加 3 mm,使传感器壳体尾部与平台原中心同轴。",
|
||||||
"sensor_xy": "传感器 X / Y",
|
"sensor_xy": "传感器 X / Y",
|
||||||
"sensor_zy": "传感器 Z / yaw",
|
"sensor_zy": "传感器 Z / yaw",
|
||||||
"setup_hint": "传感器在转台零位时相对工作台原点的实际安装位姿:X/Y/Z 平移与绕 Z 的偏摆。Z 即安装板厚度(含垫片),无需另填。请按实际安装测量填写。",
|
"setup_hint": "传感器在转台零位时相对工作台原点的实际安装位姿:X/Y/Z 平移与绕 Z 的偏摆。Z 即安装板厚度(含垫片),无需另填。请按实际安装测量填写。",
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ def default_preferences() -> dict[str, Any]:
|
|||||||
#: against it, so it is what makes the reported move match the bench. A tool
|
#: against it, so it is what makes the reported move match the bench. A tool
|
||||||
#: tip offset belongs here — it used to be a separate field, and having two
|
#: tip offset belongs here — it used to be a separate field, and having two
|
||||||
#: of them is what let the picture and the numbers disagree.
|
#: of them is what let the picture and the numbers disagree.
|
||||||
"finger_tool_xy_mm": [0.0, 0.0],
|
"finger_tool_xy_mm": [0.0, 3.0],
|
||||||
#: Stage travel, degrees. Confirmed at the bench: the vertical stage turns
|
#: Stage travel, degrees. Confirmed at the bench: the vertical stage turns
|
||||||
#: a full half-turn either way (±180), and the horizontal stage turns
|
#: a full half-turn either way (±180), and the horizontal stage turns
|
||||||
#: continuously. An earlier value of 90 was wrong and made half the patch
|
#: continuously. An earlier value of 90 was wrong and made half the patch
|
||||||
|
|||||||
@@ -120,10 +120,9 @@ class MultipointPanel(QWidget):
|
|||||||
layout.addLayout(buttons)
|
layout.addLayout(buttons)
|
||||||
extra = QHBoxLayout()
|
extra = QHBoxLayout()
|
||||||
extra.setSpacing(8)
|
extra.setSpacing(8)
|
||||||
self.import_button = QPushButton(page)
|
|
||||||
self.align_button = QPushButton(page)
|
self.align_button = QPushButton(page)
|
||||||
self.reacquire_button = QPushButton(page)
|
self.reacquire_button = QPushButton(page)
|
||||||
for button in (self.import_button, self.align_button, self.reacquire_button):
|
for button in (self.align_button, self.reacquire_button):
|
||||||
extra.addWidget(button, 1)
|
extra.addWidget(button, 1)
|
||||||
layout.addLayout(extra)
|
layout.addLayout(extra)
|
||||||
|
|
||||||
@@ -201,7 +200,6 @@ class MultipointPanel(QWidget):
|
|||||||
self.remove_button.clicked.connect(self._remove)
|
self.remove_button.clicked.connect(self._remove)
|
||||||
self.up_button.clicked.connect(lambda: self._move(-1))
|
self.up_button.clicked.connect(lambda: self._move(-1))
|
||||||
self.down_button.clicked.connect(lambda: self._move(1))
|
self.down_button.clicked.connect(lambda: self._move(1))
|
||||||
self.import_button.clicked.connect(self._import_finger)
|
|
||||||
self.align_button.clicked.connect(self._align)
|
self.align_button.clicked.connect(self._align)
|
||||||
self.reacquire_button.clicked.connect(self._reacquire)
|
self.reacquire_button.clicked.connect(self._reacquire)
|
||||||
self.source.currentIndexChanged.connect(lambda _index: self._refresh())
|
self.source.currentIndexChanged.connect(lambda _index: self._refresh())
|
||||||
@@ -247,7 +245,6 @@ class MultipointPanel(QWidget):
|
|||||||
self.remove_button.setText(t("multipoint.remove"))
|
self.remove_button.setText(t("multipoint.remove"))
|
||||||
self.up_button.setText(t("multipoint.up"))
|
self.up_button.setText(t("multipoint.up"))
|
||||||
self.down_button.setText(t("multipoint.down"))
|
self.down_button.setText(t("multipoint.down"))
|
||||||
self.import_button.setText(t("multipoint.import_points"))
|
|
||||||
self.align_button.setText(t("multipoint.align"))
|
self.align_button.setText(t("multipoint.align"))
|
||||||
self.reacquire_button.setText(t("multipoint.reacquire"))
|
self.reacquire_button.setText(t("multipoint.reacquire"))
|
||||||
self.source_label.setText(t("multipoint.source"))
|
self.source_label.setText(t("multipoint.source"))
|
||||||
@@ -420,26 +417,6 @@ class MultipointPanel(QWidget):
|
|||||||
"""The right-hand confirm button records the current multi-point step."""
|
"""The right-hand confirm button records the current multi-point step."""
|
||||||
self._confirm()
|
self._confirm()
|
||||||
|
|
||||||
def _import_finger(self) -> None:
|
|
||||||
def go():
|
|
||||||
if self._finger is None or not hasattr(self._finger, "acquisition_points"):
|
|
||||||
raise RuntimeError(t("multipoint.no_finger"))
|
|
||||||
points = self._finger.acquisition_points()
|
|
||||||
if not points:
|
|
||||||
raise RuntimeError(t("multipoint.no_finger_points"))
|
|
||||||
force = self._max_force()
|
|
||||||
lower = self._min_force()
|
|
||||||
for point in points:
|
|
||||||
uv = point.get("u_px"), point.get("v_px")
|
|
||||||
self.campaign.add_solved_site(
|
|
||||||
point["site_id"], point["x"], point["y"], point["z"],
|
|
||||||
(point["nx"], point["ny"], point["nz"]), point["pose"],
|
|
||||||
self._levels(), self._hold(), self.repeats.value(),
|
|
||||||
max_force_n=force, min_force_n=lower,
|
|
||||||
uv_px=None if uv[0] is None else (float(uv[0]), float(uv[1])),
|
|
||||||
)
|
|
||||||
self._run(go)
|
|
||||||
|
|
||||||
def _align(self) -> None:
|
def _align(self) -> None:
|
||||||
if not self._selected:
|
if not self._selected:
|
||||||
self.message.setText(t("multipoint.align_select"))
|
self.message.setText(t("multipoint.align_select"))
|
||||||
@@ -524,7 +501,7 @@ class MultipointPanel(QWidget):
|
|||||||
self.wrench_box.setVisible(wrench)
|
self.wrench_box.setVisible(wrench)
|
||||||
for widget in (
|
for widget in (
|
||||||
self.add_button, self.update_button, self.remove_button, self.up_button,
|
self.add_button, self.update_button, self.remove_button, self.up_button,
|
||||||
self.down_button, self.import_button, self.simulate_button, self.start_button,
|
self.down_button, self.simulate_button, self.start_button,
|
||||||
self.site_id, self.repeats, self.frame, self.max_force, self.min_force, self.source,
|
self.site_id, self.repeats, self.frame, self.max_force, self.min_force, self.source,
|
||||||
):
|
):
|
||||||
widget.setEnabled(not active)
|
widget.setEnabled(not active)
|
||||||
|
|||||||
Reference in New Issue
Block a user