模块接口定义¶
活跃文档
本页是系统设计的核心约定。任何模块修改输出格式前,须先在此更新接口定义并通知上下游负责人。
接口总览¶
各模块之间通过明确定义的 Python 数据结构传递信息,不直接引用对方的内部实现。
语音输入
│
▼
[NLP 模块] ──→ InstrumentCommand
│
[感知模块] ──→ GraspTarget
│ ↘
└──────→ [决策模块 / VLA] ──→ ActionSequence
│
[执行模块]
│
CR5AF 机械臂
接口定义¶
InstrumentCommand¶
来源: NLP 模块 消费方: 决策模块
@dataclass
class InstrumentCommand:
instrument_name: str # 标准化器械名,来自词库(如 "持针器_大")
instrument_id: str # 词库编号(如 "INS-031")
confidence: float # 识别置信度,< 0.85 时触发二次确认
raw_text: str # ASR 原始文本,用于调试
timestamp: float # Unix 时间戳
约束:
instrument_name必须是instrument_vocab.json中的合法值,不允许自由文本confidence < 0.85时决策模块应暂停并请求护士确认,不得直接执行
GraspTarget¶
来源: 感知模块 消费方: 决策模块、执行模块
@dataclass
class GraspTarget:
instrument_name: str # 与 InstrumentCommand 对齐
instrument_id: str # 与 InstrumentCommand 对齐,用于交叉验证
grasp_point: np.ndarray # shape (3,),机械臂坐标系下的夹取点 [x, y, z],单位 mm
grasp_orientation: float # 夹爪旋转角,单位 deg,范围 [0, 180]
delivery_side: str # "handle_to_doctor"(把手朝向医生)| "tip_to_doctor"
confidence: float # 检测置信度
bbox: list # [x1, y1, x2, y2],图像像素坐标,调试用
depth_mm: float # 目标中心点深度,单位 mm
timestamp: float
约束:
grasp_point须经过手眼标定矩阵变换,不得直接使用像素坐标delivery_side默认"handle_to_doctor",特殊器械(如剪刀)由词库配置覆盖- 执行前须检查
grasp_point是否在机械臂工作空间内(见全局安全约束)
ActionSequence¶
来源: 决策模块 消费方: 执行模块
@dataclass
class ActionStep:
action_type: str # "move_to" | "grasp" | "release" | "home"
target_pose: np.ndarray # shape (6,),[x, y, z, rx, ry, rz],单位 mm / deg
speed: float # 速度百分比,范围 (0, 1],默认 0.3
force_threshold: float # 力控阈值,单位 N,超出则触发急停
@dataclass
class ActionSequence:
steps: list[ActionStep]
source: str # "vla" | "rule_based"(规则兜底路径)
estimated_duration: float # 预估总时长,单位 s
timestamp: float
约束:
speed在医院现场模式下上限为0.4,实验室模式为0.8(由config.py中SCENE_MODE控制)force_threshold默认5.0N,夹取金属器械时不得超过8.0N- VLA 输出的动作序列须经执行模块的路径安全校验(见全局安全约束)后才可下发
跨模块验证机制¶
感知模块与 NLP 模块的输出须进行交叉验证,防止误识别导致错误执行:
def validate_cross_module(cmd: InstrumentCommand, target: GraspTarget) -> bool:
"""
返回 False 时状态机进入 Parse 状态重新确认,不进入 Execute。
"""
if cmd.instrument_id != target.instrument_id:
return False # 语音识别与视觉识别的器械不一致
if cmd.confidence < 0.85 or target.confidence < 0.7:
return False # 任一置信度不足
if not workspace_check(target.grasp_point):
return False # 夹取点超出工作空间
return True
二维码增强验证(规划中)
现场测试问题 #6 提出在器械上打印二维码,届时增加第三重验证:
qr_code_id == cmd.instrument_id == target.instrument_id
变更记录¶
| 日期 | 变更内容 | 影响模块 | 责任人 |
|---|---|---|---|
| 2026-03-18 | 初版接口定义,统一 instrument_id 字段 |
全部 | 任松 |