diff --git a/src/api/resource/visionCalibration.js b/src/api/resource/visionCalibration.js new file mode 100644 index 0000000..7e9728b --- /dev/null +++ b/src/api/resource/visionCalibration.js @@ -0,0 +1,55 @@ +import request from '@/utils/request' + +const base = '/vision/calibration' + +export function listCalibrationProfiles(params) { + return request({ url: `${base}/profiles`, method: 'get', params }) +} + +export function getCalibrationProfile(id) { + return request({ url: `${base}/profiles/${id}`, method: 'get' }) +} + +export function updateCalibrationCorrection(id, data) { + return request({ url: `${base}/profiles/${id}/correction`, method: 'put', data }) +} + +export function activateCalibrationProfile(id, forced = false) { + return request({ url: `${base}/profiles/${id}/activate`, method: 'put', data: { forced } }) +} + +export function invalidateCalibrationProfile(id) { + return request({ url: `${base}/profiles/${id}`, method: 'delete' }) +} + +export function startHandEyeCalibration(data) { + return request({ url: `${base}/sessions/hand-eye`, method: 'post', data }) +} + +export function startToolCalibration(data) { + return request({ url: `${base}/sessions/tool`, method: 'post', data }) +} + +export function startCalibrationVerification(id) { + return request({ url: `${base}/profiles/${id}/verify`, method: 'post' }) +} + +export function calibrationHeartbeat(id) { + return request({ url: `${base}/sessions/${id}/heartbeat`, method: 'post' }) +} + +export function getCalibrationSession(id) { + return request({ url: `${base}/sessions/${id}`, method: 'get' }) +} + +export function stopCalibrationSession(id) { + return request({ url: `${base}/sessions/${id}/stop`, method: 'post' }) +} + +export function recordToolPivot(id) { + return request({ url: `${base}/sessions/${id}/tool/pivot`, method: 'post' }) +} + +export function recordToolDirection(id) { + return request({ url: `${base}/sessions/${id}/tool/direction`, method: 'post' }) +} diff --git a/src/views/flow/chatPrompt.js b/src/views/flow/chatPrompt.js new file mode 100644 index 0000000..0e1db9b --- /dev/null +++ b/src/views/flow/chatPrompt.js @@ -0,0 +1,34 @@ +export const DEFAULT_CHAT_SYSTEM_PROMPT = `【系统人设·固定设定】 +你是长安汽车龙兴工厂总装车间智能巡检轮式人形机器人小安,常驻车间、负责巡检、物流辅助、智能讲解、员工日常闲聊陪伴。 +你的人设:温柔、乖巧、智能、话不多余、活泼不油腻、专业但接地气。 +你不是冰冷AI,是车间里的「智能小工友」,懂生产、懂设备、懂车间工艺、也会轻松闲聊。 +【知识绑定·必须精通】 +你100%熟记长安龙兴总装车间全部参观路线、所有点位工艺、技术、设备、党建、安全、智慧系统: +- 车间数字大屏、MES/SCADA系统、一屏观全局 +- 核心零部件、模块化生产、轮式人形机器人应用场景 +- 车间产能、柔性共线、生产节拍、红色车间、党建攻坚、SOS三级安全体系、EHS管理 +- 自动化小分装、ECU自动刷写 +- AI视觉检测、防错技术EP、螺栓拧紧大数据系统 +- 智慧立体库、AGV配送、Kitting物流、5G追溯 +- 班组文化、党员传帮带、员工人文关怀看板 +- L2++自动驾驶、ICA智能领航、多传感器融合 +- 自动车门/座椅装配、安辰云检整车检测 +- 轮胎自动装配、高精度液体加注 +- 智慧绿色照明、节能智造体系 +用户问任何车间技术、工艺、设备、参观讲解、工厂知识,你都能精准、简洁、专业讲解。 +【闲聊风格·核心规则】 +1. 日常闲聊:轻松、简短、温柔、可爱、像车间小机器人工友,不官话、不论文、不啰嗦。 +2. 可以聊天、唠嗑、安慰、解压、陪聊、开玩笑、温柔互动。 +3. 被问专业问题:立刻切换工厂讲解员模式,清晰、标准、正式、贴合官方解说词。 +4. 说话语气:干净、年轻化、自然、不机械、不AI味。 +5. 禁止:生硬模板、过度搞笑、油腻、网络烂梗、夸张情绪化。 +【可聊范围】 +- 车间日常、机器人工作、巡检、物流、设备状态 +- 工厂技术、智能制造、自动化、数字工厂 +- 员工解压、日常闲聊、心情陪伴、轻松对话 +- 参观讲解、点位介绍、路线答疑 +- 科普、生活、工作、放松对话全覆盖 +【输出要求】 +• 闲聊短句为主,不超长段落 +• 专业提问自动切换正式讲解 +• 始终保持:智能、温柔、靠谱、车间专属机器人人设` diff --git a/src/views/flow/components/params/ChatParams.vue b/src/views/flow/components/params/ChatParams.vue new file mode 100644 index 0000000..904cb8e --- /dev/null +++ b/src/views/flow/components/params/ChatParams.vue @@ -0,0 +1,165 @@ + + + + + + + {{ labels.directInput }} + {{ labels.quoteOutput }} + + + + + + + + cascaderChange(value, textParam)" + /> + {{ labels.quoteHint }} + + + + + {{ labels.fixedPrompt }} + {{ labels.customPrompt }} + + + + + {{ labels.promptHint }} + + + + {{ labels.ttsHint }} + + + + + + + + diff --git a/src/views/flow/components/params/VisionLocateParams.vue b/src/views/flow/components/params/VisionLocateParams.vue new file mode 100644 index 0000000..0ea1543 --- /dev/null +++ b/src/views/flow/components/params/VisionLocateParams.vue @@ -0,0 +1,437 @@ + + + + 视觉定位执行 + 拍摄彩色和深度图,识别目标位置,并换算为机械臂可以使用的末端坐标。 + + + + + + {{ configModeDescription }} + + + 执行设备 + + + + + 请先在开始节点添加一个机器人角色。 + + + + + + + + 当前机器人角色没有相机用途,可暂时输入设备 ID,建议在开始节点统一配置。 + + + + + + + + 当前机器人角色没有机械臂用途,可暂时输入设备 ID,建议在开始节点统一配置。 + + + + + + + 运行时按实际机器人和机械臂自动使用该工具的当前启用 TCP。 + + 尚无工具档案,请先到机器人管理中的视觉标定管理新增并启用工具 TCP。 + 打开标定管理 + + + + 定位任务 + + + 直接描述目标即可,系统会自动要求模型返回可计算的坐标。 + + + + + 描述找图 + 精确找图 + + 精确找图需要一张目标小图,例如方形标记码;小图和 RGBD 彩色图在本次执行中一起匹配。 + + + + + + + + 最佳匹配 + 指定序号 + + + + + 输入 + 引用 + + + + + + + + + + + + + + + {{ analysisModeDescription }} + + + + + 先到达手机表面法向外侧的安全位置,范围 1–20 mm。 + + + + + 在理论接触面基础上继续前进的距离,默认 0 mm。 + + + + + + 当前高级参数 + 查看和修改 + + 手眼标定运行时自动选择 + 工具 TCP{{ selectedToolLabel || '尚未选择' }} + 输出方式接近位姿 + 接触位姿 + + + + + + + + + + + + + + + 使用目标周围深度点拟合手机平面和法向。目标靠近边缘时减小范围。 + + + + + + + + + + + + + + + 标定与工具 TCP + 自动选用 + + + + 打开视觉标定管理 + + + + + + 计算结果相对当前法兰超过此距离时直接报错,防止错误识别产生异常位姿。 + + 恢复推荐参数 + + + + + 节点输出 + + + {{ item.name }}{{ item.desc }} + + + + + + + + diff --git a/src/views/resource/visionCalibration/index.vue b/src/views/resource/visionCalibration/index.vue new file mode 100644 index 0000000..8aa7267 --- /dev/null +++ b/src/views/resource/visionCalibration/index.vue @@ -0,0 +1,371 @@ + + + + + 视觉标定管理 + 管理每台机器人的手眼标定和末端工具 TCP。工作流自动使用当前启用版本。 + + + 新建手眼标定 + 新增工具 TCP + + + + + + + + + + 刷新 + + + + + + {{ row.profileName }} + {{ row.profileType === 'HAND_EYE' ? '手眼标定' : `工具 · ${row.toolCode}` }} + + + + + {{ robotName(row.robotId) }} + 机械臂 {{ row.armDeviceId }} + 相机 {{ row.cameraDeviceId }} + + + V{{ row.versionNo }} + + + + 最大 {{ Number(row.maxErrorMm).toFixed(2) }} mm + + 待验证 + 平均 {{ Number(row.meanErrorMm).toFixed(2) }} mm + + + + + {{ statusLabel(row.status) }} + 人工启用 + + + {{ row.verifiedTime || '-' }} + + + 微调 + 验证 + 启用 + 失效 + + + + + + + + + + + + + + + + + + + + + + + + + + + mm + ° + + mm + + + + 取消 + 开始标定 + + + + + + + {{ session.message }} + {{ sessionStatusLabel }} + + + 已记录 {{ session.sampleCount || 0 }} 组 · 步骤 {{ session.currentStep || 0 }}/{{ session.totalSteps || 0 }} + + + + + + + + + + + + + + 绿色边框为识别结果;黄色十字是工具定点标定统一使用的规范角点。 + + + + + 1 + 定点旋转使用示教按钮让工具中心对准标定码规范角点,每次明显改变末端角度。 + 记录当前位姿 + + + 2 + 安全方向样本足够后,让工具垂直贴合标定码平面,再记录工具工作朝向。 + 记录方向并完成 + + + + + 平均误差{{ formatError(session.meanErrorMm) }} + 最大误差{{ formatError(session.maxErrorMm) }} + 方向误差{{ Number(session.directionErrorDeg).toFixed(2) }}° + + + 停止并保持当前位置 + 完成 + + + + + + + 位置修正(毫米) + + 角度修正(度) + + + 取消保存并等待验证 + + + + + + +
{{ item.name }}
管理每台机器人的手眼标定和末端工具 TCP。工作流自动使用当前启用版本。
使用示教按钮让工具中心对准标定码规范角点,每次明显改变末端角度。
样本足够后,让工具垂直贴合标定码平面,再记录工具工作朝向。