# 给机器人做商演编程：从动作捕捉到现场调参的完整链路

> 客户租了机器人，接下来要让它跳一段舞、踢一场球、或者做一套迎宾动作。这篇文章把从动作采集、轨迹编辑、仿真验证到现场调参的完整链路拆开，附我们踩过的坑。

### TLDR

- **四种内容生产路径**：动捕采集、示教复现、轨迹编辑器手key、买现成内容包。按预算和工期选，不要一上来就动捕。
- **动捕不是万能的**：人做的动作直接映射到机器人上会摔，因为人的重心控制和机器人不一样。中间要有一步「重定向 + 稳定性校验」。
- **仿真先跑一遍**：上真机前先在仿真里跑 20 遍，能提前暴露 80% 的摔倒点。这一步省不得。
- **现场调参的四个必调项**：地面摩擦系数、步态周期、重心高度、动作幅度缩放。
- **一定要留的兜底**：任何自动程序都必须能一键切手动遥控。

### SRC

本文为神机百炼自有项目的执行流程总结，流程与参数为我们团队的实际做法，非厂商官方教程。不同平台（加速进化、宇树、智元）的工具链差异很大，本文描述的是通用流程，具体命令与工具请参考各家官方文档。文中标注的工期为我们的项目经验，随动作复杂度浮动。

### BODY

<div class="sec"><div class="eyebrow"><span class="num">1</span>路径选择</div>
<h2>先别急着上动捕</h2>

<p>机器人商演的内容生产有四条路，成本和工期差了一个数量级。选错路径是新手最常见的浪费。</p>

<div class="jx">
  <div class="jx-h"><span>四种内容生产路径</span><span class="jx-note">我们的项目经验</span></div>
  <table class="jx-mx">
    <tr><th>路径</th><th>适用</th><th>工期</th><th>成本</th><th>灵活度</th></tr>
    <tr><th>买现成内容包</th><td>标准舞蹈、常规迎宾</td><td>1–2 天</td><td>低</td><td>低，撞动作概率高</td></tr>
    <tr><th>轨迹编辑器手key</th><td>简单摆臂、定点动作</td><td>2–5 天</td><td>低</td><td>中</td></tr>
    <tr><th>示教复现</th><td>抓取、递物、上半身动作</td><td>3–7 天</td><td>中</td><td>中高</td></tr>
    <tr><th>动捕采集</th><td>复杂舞蹈、定制编排</td><td>1–3 周</td><td>高</td><td>高</td></tr>
  </table>
  <div class="cap">判断标准很简单：如果这段动作「换个机器人也能用」，就不值得动捕。动捕的价值在于动作本身是定制资产。</div>
</div>

<div class="keypoint">
  <strong>我们的默认做法：</strong>70% 的项目用「现成内容包 + 轨迹编辑器微调」就够了。只有客户明确要求「这段舞是为我们定制的」，才上动捕。<strong>不要用技术难度去证明报价合理性</strong>，客户要的是效果，不是你用了多少技术。
</div>
</div>

<div class="sec"><div class="eyebrow"><span class="num">2</span>完整链路</div>
<h2>从采集到上场的六个环节</h2>

<div class="jx">
  <div class="jx-h"><span>商演内容生产 · 标准流程</span></div>
  <div class="jx-tl">
    <div class="jx-tl-row"><div class="jx-tl-t">1 · 编排</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#6d3fd4">确定动作脚本与音乐节拍对齐</div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">2 · 采集</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#2563eb">动捕 / 示教 / 手key 生成原始轨迹</div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">3 · 重定向</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#b85c0a">把人体骨骼映射到机器人自由度<span class="m">关键步</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">4 · 稳定性</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#0a749a">校验重心轨迹，修掉会摔的帧<span class="m">最耗时</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">5 · 仿真</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#4b5f8a">在仿真里连续跑 20 遍</div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">6 · 现场</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#0d8a5f">场地标定 + 四参数调整 + 彩排</div></div></div>
  </div>
  <div class="cap">第 3 步和第 4 步占了整个工期的 60% 以上。很多人以为动捕完就结束了，其实真正的工作量在后面。</div>
</div>

<div class="analogy">
  <div class="h">打个比方</div>
  <p>这像把一首钢琴曲改编成管弦乐。音符是现成的（动捕数据），但每种乐器的音域、音色、能演奏的速度都不一样。你不能直接把钢琴的指法抄给小提琴。改编的工作量，往往比理解原曲还大。<br><br>
  机器人的「音域」就是它的自由度、扭矩上限和重心约束。人能做的动作，机器人不一定做得到。</p>
</div>
</div>

<div class="sec"><div class="eyebrow"><span class="num">3</span>为什么摔</div>
<h2>人的重心控制和机器人不是一回事</h2>

<p>这是动捕路线最大的坑：<strong>直接把人的关节角度映射到机器人上，几乎一定会摔</strong>。</p>

<div class="jx">
  <div class="jx-h"><span>重定向要处理的四件事</span></div>
  <table class="jx-mx">
    <tr><th>问题</th><th>原因</th><th>处理方式</th></tr>
    <tr><th>比例不同</th><td>人的腿长/身高比和机器人不同</td><td>按实际连杆长度做逆解，不能直接抄角度</td></tr>
    <tr><th>脚掌不同</th><td>人有脚踝和足弓，机器人多是平板脚</td><td>落地相位要重算，接触点要重设</td></tr>
    <tr><th>重心不同</th><td>人靠前庭和肌肉实时调整，机器人靠算法</td><td>校验 ZMP / 重心投影是否落在支撑多边形内</td></tr>
    <tr><th>速度不同</th><td>人能做的瞬时加速度超过电机上限</td><td>对轨迹做动力学可行性裁剪</td></tr>
  </table>
  <div class="cap">第三项是导致摔倒的最主要原因。人的重心晃动能靠小脑自动修正，机器人要靠控制器算，算不过来就摔。</div>
</div>

<div class="keypoint">
  <strong>实用技巧：</strong>先做「动作幅度缩放」。把原始轨迹的幅度整体乘 0.7–0.8，稳定性通常会大幅提升，而观众几乎看不出差别。这个 20% 的余量，就是摔倒和不摔的分界。
</div>
</div>

<div class="sec"><div class="eyebrow"><span class="num">4</span>现场</div>
<h2>四个必调参数，和一个必留兜底</h2>

<div class="jx">
  <div class="jx-h"><span>现场调参清单</span><span class="jx-note">我们的标准动作</span></div>
  <table class="jx-mx">
    <tr><th>参数</th><th>调整依据</th><th>调错的表现</th></tr>
    <tr><th>地面摩擦系数</th><td>地胶 / 草地 / 大理石差异很大</td><td>打滑（设高了）或步子发黏（设低了）</td></tr>
    <tr><th>步态周期</th><td>场地大小和观众距离</td><td>周期太短会晃，太长显得慢</td></tr>
    <tr><th>重心高度</th><td>决定稳定性与观赏性的平衡</td><td>太低显得蹲着，太高容易摔</td></tr>
    <tr><th>动作幅度缩放</th><td>场地边界与安全距离</td><td>幅度大会越界或撞人</td></tr>
  </table>
  <div class="cap">这四个参数在现场一定都要重新过一遍。实验室标定好的值，换个场地八成不能用。</div>
</div>

<div class="jx">
  <div class="jx-h"><span>必须留的兜底</span></div>
  <div class="jx-tl">
    <div class="jx-tl-row"><div class="jx-tl-t">兜底 1</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#0a749a">一键切手动遥控<span class="m">自动程序出问题时的唯一出路</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">兜底 2</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#b85c0a">简化版动作脚本<span class="m">去掉高难度段落的备份版本</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">兜底 3</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#4b5f8a">全场急停按钮<span class="m">物理按钮，不依赖软件</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">兜底 4</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#0d8a5f">备机热待命<span class="m">数量 = 上场数 ÷ 3</span></div></div></div>
  </div>
  <div class="cap">第 1 条最重要。再稳的程序，也要假设它会出问题。</div>
</div>

<div class="srcline">
  <div class="h">这份教程的边界</div>
  本文描述的是通用流程，<strong>不同厂商的工具链差异极大</strong>——加速进化、宇树、智元各自的动作编辑软件、文件格式、仿真环境都不互通，学会一家不等于会另一家。<br><br>
  另外要提醒：<strong>涉及二次开发时，先确认你的做法不违反保修条款</strong>。有些厂商对修改底层控制参数有明确限制，改了之后出问题不保修。这笔账要在动手前算清楚——省下的内容制作费，可能还不够赔一台机器。
</div>
</div>

---

*来源：神机百见-具身解读 · https://www.shenjibailian.com/jiedu/article/robot-show-programming/*
