4. 实验流程到机器人动作的映射
实验机器人工作站能否稳定复现实验,关键不在于机械臂本身有多快,而在于“实验意图”能否被无损地翻译成“机器人动作”。实验协议、SOP、工艺卡片描述的是实验目的与操作要求,而机器人需要的是带坐标、带参数、带时序、带条件判断的动作序列。本节讨论这条映射链的拆解方法与结构化表达方式。
一、三类输入文档的语义差异
实验协议通常来自科研文献或方法学描述,语言偏目的性,例如“将样品在 80 ℃ 孵育 15 min 后离心”。SOP 是实验室内部的操作规范,强调步骤顺序、安全与合规,但往往省略精确坐标和体积。工艺卡片则更接近制造现场,包含工位、耗材、节拍、参数上下限。三者共同构成映射的输入,但粒度不同:协议给“做什么”,SOP 给“按什么顺序做”,工艺卡片给“在哪个工位、用什么参数做”。
映射的第一步不是写代码,而是建立“动作原子库”。动作原子是机器人可执行的最小语义单元,例如 MoveTo、Pick、Place、Dispense、Aspirate、Incubate、Centrifuge、Read。每个原子绑定一组参数:目标位姿、速度、加速度、体积、温度、时间、容差。只有把协议中的动词与动作原子对齐,后续拆解才有依据。
二、从自然语言到结构化动作序列
以“取 200 μL 样品加入 96 孔板 A1 孔,混匀后 37 ℃ 静置 10 min”为例。拆解时先识别对象:样品管、移液枪、96 孔板、温控模块。再识别动作:取液、放液、混匀、转移、静置。最后绑定参数:体积 200 μL、孔位 A1、混匀次数 3、温度 37 ℃、时间 10 min。结构化表达可采用 JSON 或 YAML,便于版本管理和校验。
{
"step_id": "S03",
"source": "sample_tube_01",
"target": "plate_96_A1",
"actions": [
{"op": "Aspirate", "volume_uL": 200, "tip": "T200"},
{"op": "Dispense", "volume_uL": 200, "blowout": true},
{"op": "Mix", "cycles": 3, "volume_uL": 150},
{"op": "MoveTo", "device": "incubator", "slot": "A1"},
{"op": "Incubate", "temp_C": 37, "duration_min": 10}
],
"precondition": "plate_96_A1_empty",
"postcondition": "plate_96_A1_loaded"
}
这种表达把“实验语义”与“设备指令”分离:上层是实验步骤,下层由工作站编排引擎翻译成具体设备的运动指令。分离的好处是,当移液枪型号更换时,只需替换设备驱动层,实验步骤不变。
三、映射中的关键约束与判断
映射不是一对一翻译,而是带约束的规划问题。常见约束包括:空间约束(机械臂可达性、孔位间距)、时间约束(孵育与离心的先后顺序)、资源约束(移液枪头数量、温控模块占用)、逻辑约束(先加样后混匀)。这些约束在结构化表达中应显式记录,例如用 depends_on 表示前置步骤,用 resource 表示占用设备。
另一个关键点是“可观测性”。机器人执行动作后,系统需要知道是否成功。因此每个动作原子应绑定一个可观测结果,例如移液后液面高度、抓取后夹爪力矩、孵育后温度反馈。没有观测的动作等于不可验证的动作,在实验场景中风险很高。
expected_result 字段,例如“A1 孔液面上升 200 μL”或“夹爪闭合到位信号为 1”。这为后续异常检测和复盘提供依据。四、结构化表达的层级与图示
完整的映射链可以分成四层:实验意图层、步骤语义层、动作原子层、设备指令层。下图展示了从实验协议到机器人动作序列的拆解关系,以及每层的关键对象与输出形式。
图中四层之间不是单向瀑布,而是带反馈的闭环:设备指令层执行后产生的传感器数据会回传到动作原子层,用于判断 expected_result 是否满足;若不满足,编排引擎可触发重试、跳过或报警。这种反馈机制是实验机器人区别于普通工业机器人的重要特征。
五、实操中的拆解检查清单
在实际项目中,建议按以下顺序检查映射是否完整。第一,协议中的每个动词是否都能找到对应动作原子;第二,每个动作原子是否都有明确的参数来源(来自工艺卡片还是人工输入);第三,步骤之间是否存在未声明的依赖;第四,每个步骤是否有可观测结果;第五,异常情况下是否有回退路径。以下是一份可直接使用的拆解检查表。
| 检查项 | 判断标准 | 示例 |
|---|---|---|
| 动作原子覆盖 | 协议动词均有对应原子 | “混匀” → Mix(cycles=3) |
| 参数完整性 | 体积、温度、时间、坐标齐全 | 200 μL / 37 ℃ / 10 min / A1 |
| 依赖显式化 | 前置步骤用 depends_on 标注 | S04 depends_on S03 |
| 可观测结果 | 每步有 expected_result | 液面上升 200 μL |
| 异常回退 | 定义重试或跳过条件 | 移液失败 → 换枪头重试 1 次 |
结构化表达的最终产物是一份可执行动作序列文件,它既是编排引擎的输入,也是实验记录的一部分。建议在文件中保留 source_doc 字段,记录该步骤来自哪份协议或 SOP 的哪一条,便于追溯和审计。当实验方案变更时,只需修改对应步骤,而不必重写整个流程。
从实验协议到机器人动作的映射,本质上是把“实验知识”转化为“可执行知识”的过程。动作原子库是词汇表,结构化序列是语法,约束与观测是语义校验。三者齐备,实验机器人才能从“能动”走向“可信地动”。