dk●DuckKing
语音 × 强化学习 · 被动跷跷板

走一步,世界也跟着动。

用脚步压低一端,让自由配重滑向红色停靠区;再反向调整,把它刹住。环境的下一步,由小鸭这一脚改变。

真实 MuJoCo 接触 · 板面与配重均无电机、无预设轨迹看看它怎样学会 ↓
正在自动准备跷跷板,完成后可发出第一条指令…

语音指挥左鸭

连接灵矽后,按住说话,松开执行;也可按住空格。

说“向前走”“后退一秒”“站住”;首条移动指令会开始 PK。

声音与连接设置

灵矽负责识别和回复。

接入模块准备中

可先播放本地提示音,检查手机声音。

声音诊断
尚未初始化声音
连接诊断 ↗

你来控制 · 左鸭

语音 / 方向键 / 按钮

等候实际运动测量

正在自动准备场景,完成后可开始挑战…

左侧实测

倾角 —仿真 0.0 s支撑 —配重中心 —

等待准备

你来控制左鸭

准备后可直接说“向前走”,或点击前进/后退开始 PK。

← 前进、→ 后退,每次 2 秒;↓ 站定。按钮与方向键操作相同。长按不连发,编辑输入框时保留原有按键功能;语音可指定 1–3 秒。新指令替换旧指令;辅助站定开启时,到时小步纠偏保持当前位置。识别期间比赛继续,右鸭不暂停;两侧各有 18 秒仿真时间。

所选策略

PPO / 规则控制

右侧控制器 · 等候指令

正在自动准备场景,完成后可开始挑战…

右侧实测

倾角 —仿真 0.0 s支撑 —配重中心 —

等待准备

赭色端 · 后退 −X深色中线 · 支点绿色端 · 前进 +X

左鸭听你指挥,右鸭由 PPO 自主控制。两侧从相同初态出发,目标都是把配重送回红色区并停稳;方向不随视角改变。

目标:橙色块的中心进入红色双刻线之间(±4 cm),低速停稳至少 1 秒。

橙色配重 · 280 g

赭色端 −X 绿色端 +X

配重位置 —配重速度 —重力合力矩 —区内停稳 0.0 / 1.0 s
① 发出的动作站定0 cm/s 指令
② 相对支点的位置—实际位置,正值在绿色端
③ 板面响应—等候实际接触
④ 配重随坡滑动—引导它滑动,再反向制动

同一初态,脚步改变了配重的去向

本轮最多 18 秒

实线为右侧,赭色虚线为左侧;配重图中的红色带是停靠区。两侧从同一位置出发,配重曲线的分岔来自鸭子不同的动作。曲线均来自物理实测。

为什么走一步,板面就会动?

脚步改变鸭子相对支点的位置,接触力矩让板面倾斜。重力沿斜坡推动配重;配重位置变化又改变板面受力。鸭子需要根据新状态,提前反向调整。

板面响应来自:鸭脚接触力矩 + 配重经导轨传递的力矩 − 阻尼力矩 + 限位力矩

板面和 280 g 配重均无电机,也没有按时间预设的运动轨迹。配重滑轨阻尼 1 N·s/m,板面阻尼 10 N·m·s/rad,均只阻碍运动,不会自动回中;板角限位约 ±6°。红色区只是标记,不吸附、不锁定配重。重力合力矩不等于脚部接触力矩。

从尝试到策略

环境会回应,所以要学着调整。

PPO 每 0.1 秒选择站定、前进或后退;官方步态把指令变成关节目标;真实接触改变板面,形成下一次观察。

奖励函数:什么值得再做一次?

点击任意项查看系数和含义。实时贡献使用右侧最新物理状态;不是预先绘制的分数。

什么时候才算成功?

完整经历 18 秒且无跌倒、触板、触地、脚部越界或连续 0.4 秒无支撑。最后连续 1 秒:配重中心在红色区 ±4 cm 内、速度低于 2.5 cm/s,板角小于 2°、角速度小于 4°/s 且有支撑。经过红色区但未停稳不算成功;鸭子站在中心也不算。点击停止属于暂停,不计成功。

哪些是学来的,哪些是工程先验?

新 PPO 学习何时前进、站定和后退。固定步速为 +0.25、0、−0.35 m/s;横向位置与朝向由工程反馈控制。底层官方步态已训练过。人工配平规则使用重力合力矩加倾角反馈,不规划配重到停靠区;回中规则只关注鸭子位置。两者单独报告,不算 PPO。

观察来自 MuJoCo 真值,未使用摄像头。板面是被动铰链,阻尼为 10 N·m·s/rad,倾角限位约 ±6°。配重滑轨无执行器。高阻尼使过程便于观察,不代表所有真实跷跷板。

17 个输入 · 实时值

CPU 训练实测

正在读取训练记录…

训练参数与实验身份
查看原始实测记录 ↗

每次验证的平均回报

更新幅度 · KL 散度

PPO 限制一次更新的幅度,避免新策略突然偏离采样策略。成功率、回报与 KL 不等价;高回报也可能没通过最后的保持条件。

对话与实际执行