2. 实验机器人系统组成与任务抽象
实验机器人不是一台“会动的仪器”,而是一套由多个可独立描述、又必须协同工作的子系统构成的执行体。要把实验流程交给机器人自动完成,第一步不是写调度算法,而是把物理系统拆成清晰的组成单元,再把实验意图翻译成调度器能理解的任务、操作、资源与约束。本节先建立系统组成的对象视图,再给出任务抽象的方法。
一、五个核心子系统及其职责边界
典型的实验机器人系统可划分为五类组成对象,它们各自承担不同的物理职责,也对应不同的调度资源类型。
- 机械臂:提供空间定位与姿态调整能力,负责在仪器、料架、工位之间搬运样品、耗材或工具。关键参数包括自由度、工作空间、重复定位精度、负载与末端接口类型。它通常是多任务共享的稀缺资源。
- 移动平台:扩展机器人的可达范围,负责在实验台、仪器区、存储区之间转移。关键参数包括定位方式(激光/视觉/磁条)、停靠精度、载重与续航。移动平台与机械臂常构成“底盘+臂”的复合体。
- 末端执行器:直接与实验对象接触的部件,如夹爪、吸盘、移液枪、旋盖头、扫码器等。它决定了机器人“能做什么操作”,是操作类型与工具资源绑定的关键。
- 实验仪器:完成真实实验过程的设备,如天平、离心机、PCR仪、光谱仪、培养箱。它们有各自的就绪条件、运行时长和占用状态,是典型的独占型资源。
- 感知系统:包括相机、力传感器、条码/RFID、温度与液位传感器等,用于确认对象身份、位置与状态,为任务执行提供反馈与校验依据。
这五类对象并非并列堆叠,而是通过“任务”被组织起来:机械臂与移动平台提供运动能力,末端执行器提供操作能力,仪器提供实验能力,感知系统提供确认能力。调度器真正管理的,是这些能力在时间上的占用与释放。
二、从实验流程到任务抽象的四步方法
把一段实验流程变成调度输入,需要经过“分解—绑定—约束—成图”四个动作。下面以一个教学示例说明:某实验要求“从料架取一支离心管,加入2 mL缓冲液,放入离心机以3000 rpm离心5分钟,取出后放到检测台”。
第一步,任务分解。把实验目标拆成有明确起止条件的操作序列。上述流程可分解为:取管、开盖、移液加液、关盖、装载入离心机、设置并启动离心、等待完成、取出、放置到检测台。每个操作应能对应到一个可执行动作,而不是“处理样品”这类模糊描述。
第二步,资源绑定。为每个操作指定所需资源。取管需要机械臂+夹爪+料架位;移液需要移液末端+缓冲液容器;离心需要离心机;放置需要检测台工位。绑定后即可看出哪些操作会争用同一资源,例如多支样品都要用同一台离心机。
第三步,约束标注。约束分为四类:时序约束(开盖必须在加液前)、空间约束(机械臂不能同时占用两个工位)、状态约束(离心机门关闭才能启动)、安全与精度约束(移液前需确认管到位)。约束是调度可行性的边界,缺一条就可能导致碰撞或实验失败。
第四步,生成任务图。把操作作为节点,把时序与资源依赖作为有向边,形成有向无环图。调度器在此基础上做资源分配与排序。
三、任务、操作、资源、约束的字段化描述
为了让调度器可计算,抽象结果需要落到结构化字段。以下是一份可直接参考的任务描述示例(参数为教学假设值,非实测结果):
task_id: T01
goal: 完成样品离心前处理
operations:
- op_id: OP1 type: pick_tube
resource: arm01 + gripper_A + rack_slot_03
duration: 8s precondition: tube_present
- op_id: OP2 type: open_cap
resource: arm01 + gripper_B
duration: 5s precondition: OP1.done
- op_id: OP3 type: pipette
resource: arm01 + pipette_tip + buffer_bottle
volume: 2.0 mL duration: 12s precondition: OP2.done
- op_id: OP4 type: load_centrifuge
resource: arm01 + centrifuge_01
duration: 10s precondition: OP3.done and centrifuge_01.door_open
- op_id: OP5 type: run_centrifuge
resource: centrifuge_01
params: {speed: 3000 rpm, time: 300 s}
precondition: OP4.done and door_closed
constraints:
- OP1 before OP2 before OP3 before OP4 before OP5
- centrifuge_01 exclusive
- arm01 exclusive
- buffer_bottle capacity >= 2.0 mL
这份描述的价值在于:调度器不需要理解“离心”的化学含义,只需读取资源名、时长、前置条件和互斥关系,就能判断能否并行、何时启动、冲突如何消解。例如 OP5 占用离心机300秒,期间机械臂可去执行另一支样品的 OP1~OP3,这就是并行机会的来源。
四、抽象质量如何影响调度结果
抽象不是一次性翻译,而是决定调度上限的设计动作。若把“取管—加液—离心—取出”整体写成一个不可分割的任务,调度器只能串行执行,多支样品无法重叠,吞吐量被锁死。反之,若拆得过细,例如把“移动机械臂到料架上方”也作为独立操作,节点数量膨胀,约束图复杂,调度开销反而上升。
合理的做法是:以“资源占用边界”为拆分依据。资源切换点、仪器启动点、感知确认点,都是天然的拆分位置。同时,感知系统的校验结果应作为操作的后置条件写入约束,例如“扫码确认管号正确”通过后,才允许进入加液操作,这样任务抽象不仅描述动作,也描述可信状态。