added motion trajectory simulation

This commit is contained in:
ykcheungab
2026-09-23 09:58:00 +08:00
parent f1bec62ca4
commit 3347d17a20
25 changed files with 5198 additions and 1762 deletions
+23 -6
View File
@@ -210,20 +210,37 @@
"row_sensor_normal": "Surface normal",
"row_platform_point": "Platform point (mm)",
"row_pose": "Pose X / Y / yaw / pitch",
"row_table_move": "Table move X / Y",
"row_residual": "Alignment residual",
"row_frames": "Frame mapping",
"row_bundle": "Bundle",
"bundle_summary": "{vertices} vertices · {triangles} triangles · {extent} mm · {scale} mm per unit",
"plate_thickness": "Mounting plate",
"tool_offset": "Tool offset x,y,z",
"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.",
"sensor_xy": "Sensor X / Y",
"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.",
"clear_points": "Clear points",
"remove_selected": "Remove selected",
"move_up": "Move up",
"move_down": "Move down",
"selected_count": "{count} selected",
"table_hint": "Tick a row to select it, double-click a sensor coordinate or normal to edit it. The pose columns are solved from those, so they update themselves.",
"edit_not_a_number": "That cell needs a number; the previous value was kept.",
"point_count": "{count} points",
"residual_value": "{residual}° — {verdict}",
"reachable": "this normal can be aligned with Z",
"unreachable": "this normal cannot be aligned with Z (yaw travel limit)",
"reach_summary": "Alignable surface vertices {aligned}/{vertices} ({share}%), worst {worst}°",
"preview_legend": "Surface colour = alignment residual (green aligned, red not) · yellow is the tool axis · X/Y are the table, Z the tool travel",
"preview_legend": "What the colours mean: green→red is the surface's alignment residual · the red/green/blue triad is the table's X/Y/Z, at the origin · yellow line is the tool axis (+Z, at the tool's own X/Y) · orange dot is the table origin · amber outline is the sensor base plane, at the sensor's Z offset (the mounting plate) · cyan line is the planned path (stage arc, then table move) · the violet ring is the table's pose now and the faint one is where it finishes, against the fixed grid that is where it started · red dot is the point selected in the table · white dot with blue line is the picked contact and its normal.",
"preview_legend_short": "green→red = alignment residual · red/green/blue = table X/Y/Z · yellow = tool axis (+Z) · orange = origin · amber box = base plane · cyan = planned path · violet ring = table pose · white dot = contact",
"show_axes": "Show motion axes",
"show_table": "Show table origin plane",
"show_trajectory": "Show tool path",
"path_summary": "Planned path: travels {reach} mm; arc radius {radius} mm about the table origin.",
"landing": "lands X/Y {x} {y} mm",
"tool_at": "tool X/Y {x} {y} mm",
"landing_on_tool": "✓ on the tool",
"landing_off_tool": "✗ off the tool by {gap} mm",
"preview_legend_table": "The grey lines crossing at one origin are the two rotation axes. The grid is the initial state and does not move; the violet ring is the table's own frame, which the move carries away from it.",
"sim_play": "Play motion",
"sim_stop": "Stop",
"sim_hint": "Play the solved motion: the stages rotate the normal onto the tool axis, then the XY table moves. Pick a point first.",
@@ -234,7 +251,7 @@
"col_nx": "nx", "col_ny": "ny", "col_nz": "nz",
"col_X": "X", "col_Y": "Y", "col_Z": "Z",
"col_yaw": "yaw", "col_pitch": "pitch", "col_residual": "residual(°)",
"loaded": "Bundle loaded: {vertices} vertices · {extent} mm",
"loaded": "Bundle loaded: {vertices} vertices · {triangles} triangles · {extent} mm · {scale} mm per unit",
"load_failed": "Load failed: {error}",
"picked": "Picked: residual {residual}° · yaw {yaw}° · pitch {pitch}°"
},
+23 -6
View File
@@ -210,20 +210,37 @@
"row_sensor_normal": "曲面法向",
"row_platform_point": "平台坐标 (mm)",
"row_pose": "位姿 X / Y / yaw / pitch",
"row_table_move": "工作台移动 X / Y",
"row_residual": "对齐残差",
"row_frames": "坐标映射",
"row_bundle": "导出包",
"bundle_summary": "{vertices} 顶点 · {triangles} 三角面 · {extent} mm · 每单位 {scale} mm",
"plate_thickness": "安装板厚度",
"tool_offset": "工具偏移 x,y,z",
"tool_xy": "刀具 X / Y",
"tool_hint": "刀具在工作台坐标系中的位置,默认在原点正上方;工作台的移动量就是把接触点送到此处所需的位移。请按实际安装测量填写。",
"sensor_xy": "传感器 X / Y",
"sensor_zy": "传感器 Z / yaw",
"setup_hint": "传感器在转台零位时相对工作台原点的实际安装位姿:X/Y/Z 平移与绕 Z 的偏摆。Z 即安装板厚度(含垫片),无需另填。请按实际安装测量填写。",
"clear_points": "清空标定点",
"remove_selected": "删除所选",
"move_up": "上移",
"move_down": "下移",
"selected_count": "已选 {count} 点",
"table_hint": "勾选复选框选中该点;双击传感器坐标或法向即可修改。位姿列由这些数值解算得出,会自动更新。",
"edit_not_a_number": "该单元格需要数字,已保留原值。",
"point_count": "共 {count} 点",
"residual_value": "{residual}° — {verdict}",
"reachable": "该点法向可与 Z 轴对齐",
"unreachable": "该点法向无法与 Z 轴对齐(受 yaw 行程限制)",
"reach_summary": "曲面可对齐顶点 {aligned}/{vertices}({share}%),最差 {worst}°",
"preview_legend": "表面颜色 = 对齐残差(绿=对齐,红=不可对齐)· 黄色为工具轴 · X/Y 为工作台,Z 为工具行程",
"preview_legend": "颜色含义:绿→红=表面对齐残差;红/绿/蓝三色轴=工作台 X/Y/Z(位于原点);黄色直线=刀具轴(+Z 目标方向,位置即刀具 X/Y);橙色圆点=工作台原点;黄色方框=传感器安装基面(高度=传感器 Z,含安装板);青色线=规划路径(先转台圆弧、后工作台直线);紫圈=转台当前姿态,浅紫圈=动作结束时的姿态,与不动的方格网对比即可看出整个变换;红点=表中选中点;白点+蓝线=取点接触点及其法向。",
"preview_legend_short": "绿→红=对齐残差 · 红/绿/蓝=工作台 X/Y/Z · 黄线=刀具轴(+Z) · 橙点=原点 · 黄框=安装基面 · 青线=规划路径 · 紫圈=转台姿态 · 白点=接触点",
"show_axes": "显示运动轴",
"show_table": "显示转台原点平面",
"show_trajectory": "显示刀具路径",
"path_summary": "规划路径:行程 {reach} mm;绕转台原点的圆弧半径 {radius} mm。",
"landing": "落点 X/Y {x} {y} mm",
"tool_at": "刀具 X/Y {x} {y} mm",
"landing_on_tool": "✓ 已对准",
"landing_off_tool": "✗ 未对准(差 {gap} mm)",
"preview_legend_table": "灰细线=两个旋转轴(穿过同一个原点);转台坐标系固定不动,传感器随动作相对它移动。",
"sim_play": "播放动作",
"sim_stop": "停止",
"sim_hint": "播放该点的求解动作:先由转台把法向转到工具轴上,再由 XY 工作台移动。请先取点。",
@@ -234,7 +251,7 @@
"col_nx": "nx", "col_ny": "ny", "col_nz": "nz",
"col_X": "X", "col_Y": "Y", "col_Z": "Z",
"col_yaw": "yaw", "col_pitch": "pitch", "col_residual": "残差(°)",
"loaded": "已载入导出包:{vertices} 顶点 · {extent} mm",
"loaded": "已载入导出包:{vertices} 顶点 · {triangles} 三角面 · {extent} mm · 每单位 {scale} mm",
"load_failed": "载入失败: {error}",
"picked": "已选点:残差 {residual}° · yaw {yaw}° · pitch {pitch}°"
},