· 剧本 = [{t 秒, action:{type:'gesture', name:手势名}}] 时间轴,按 t 派发到既有手势 管线(50Hz 步进+限速+互锁;预备/跟随开关照常生效)。预置时间轴数据、清洗排序与游标派发口径同 bionic_arm/gesture_script.py(check_alignment 锁定);预置节拍满足"无抢占"约束(相邻手势间隔 ≥ 前一手势完整时长,单测锁定),手动编辑允许抢占(同手势按钮语义)。急停或任何手动操作即打断。 JSON 可改可复制(无下载)。节点侧编排归联调按需(如实标注)。
· 同步步进 = sync_step_toward 同式:T = maxj(|err_j|/max_dps_j),
全关节按 min(1, dt/T) 同比例推进 —— 同时启动、同时到达,每关节速度 |err_j|/T ≤ 限速(不变量内建)。
开关默认关 = 现状逐关节限速步进。
· 预备/跟随 = enhance_gesture 同式:首个运动段前插反向 8% 蓄力帧(+0.25s 平移后续),
末段到位后插 5% 过冲帧(+0.30s)+ 回稳帧(+0.48s),再经 fit_to_speed 逐段拉伸超速段;
播完仍停在原末位姿(语义不变)。开关默认关 = 原始关键帧。
· 颈部 yaw/pitch 指针与表情徽章 = neck_hint / FACE_HINTS 的叠加偏置建议(数据契约):
消费方 = 表情引擎颈部通道 / 情绪意图,由消费方自行限幅,联调归后续;yaw 正 = 向左,pitch 正 = 抬头。
· 诚实边界:预备/跟随参数与提示角为演示层工程值(非动捕标定);
左侧火柴人不画颈,颈部提示只以本仪表显示。
· 常量(COORD/NECK_HINTS/FACE_HINTS)逐值镜像自 bionic_arm/motion_coordination.py。
· 限速步进与 arm_control.step_toward 同式:逐关节 step = clamp(err, ±MAX_DPS·dt),
手势与手动共用此层;dt = 真实时钟差钳 [0, 0.1s]。
· 手势按 sample_gesture 同式驱动目标(相邻关键帧线性插值,缺省关节补中位),播完停在末位姿;
拖任一滑杆即手动接管。
· 急停(0xC3 ARG=1)冻结当前位姿并忽略指令;恢复(ARG=0)后保持冻结位姿(hold),
直到第一个新指令(拖滑杆/点手势/镜像/回中)才恢复跟随 —— 语义同固件。
· 镜像 = mirror_pose:左右换边、数值不取反(物理方向相反由装配/标定侧极性处理)。
· 常量(关节表/软限位/限速/手势库/NODE_HZ/ARM_ID_OFFSET)逐值镜像自
bionic_arm/arm_control.py,由 check_alignment 门禁锁定。