该系统本质上不是传统的“机器人自己规划路线”而是一套人体动作采集 实时遥操作 动作重定向 全身平衡控制 示教数据训练系统它要解决的核心问题不是“机器人从哪里走到哪里”而是人做出一个动作后怎样让结构不同、质量不同、平衡能力不同的机器人安全、稳定、尽可能相似地完成这个动作。宇树目前公开的 G1/H1 开发生态中已经包含 XR 遥操作、SDK2、ROS 2、MuJoCo、Isaac Lab 和强化学习等工具。官方xr_teleoperate项目用于人形机器人遥操作和数据记录SDK2 基于 Cyclone DDS 实现机器人状态获取与控制MuJoCo 和 Isaac Lab 仿真工具则支持控制程序验证、数据回放和策略部署。(GitHub)一、先建立整个系统的总体认识整个系统可以分为六个核心层级。┌─────────────────────────────┐ │ 1. 人体动作采集层 │ │ 动作捕捉服、IMU、人体骨骼模型 │ └──────────────┬──────────────┘ ↓ ┌─────────────────────────────┐ │ 2. 数据通信与预处理层 │ │ UDP、Wi-Fi、时间戳、滤波、校准 │ └──────────────┬──────────────┘ ↓ ┌─────────────────────────────┐ │ 3. 动作重定向层 │ │ 人体骨架 → 机器人关节和末端 │ └──────────────┬──────────────┘ ↓ ┌─────────────────────────────┐ │ 4. 全身控制与平衡层 │ │ 关节控制、质心控制、足底接触 │ └──────────────┬──────────────┘ ↓ ┌─────────────────────────────┐ │ 5. 宇树机器人执行层 │ │ SDK2/DDS、机载计算机、电机控制 │ └──────────────┬──────────────┘ ↓ ┌─────────────────────────────┐ │ 6. 数据记录与策略训练层 │ │ 模仿学习、强化学习、仿真验证 │ └─────────────────────────────┘这六层并不是简单单向运行而是一个闭环。机器人执行动作后会不断返回当前关节角度关节速度电机状态机身姿态足底接触IMU 数据控制状态控制程序再根据这些反馈修正下一时刻的动作。因此准确的整体结构是人体动作 ↓ 人体姿态估计 ↓ 动作重定向 ↓ 机器人目标动作 ↓ 机器人闭环控制 ↓ 机器人实际动作 ↓ 状态反馈 └────────返回控制器继续修正二、第一层人体动作采集1. 动作捕捉服到底采集什么操作员穿戴动作捕捉服后服装上的多个传感器分别固定在胸部腰部或骨盆上臂前臂手腕大腿小腿足部有时还包括头部和手指大多数惯性动作捕捉服使用 IMU。每个 IMU 通常包含加速度计陀螺仪有时还有磁力计这些传感器本身并不会直接告诉电脑“人的肘关节弯曲了 30 度”它们最初提供的是当前加速度当前旋转速度重力方向磁场方向。动作捕捉系统需要通过姿态融合算法把这些原始数据转换成身体各个骨段的方向。2. 动作捕捉系统输出的不是人体照片而是数字骨架最终传给电脑的通常是一个人体数字骨架。例如骨盆 位置 (x, y, z) 方向 四元数 胸部 方向 四元数 左上臂 方向 四元数 左前臂 方向 四元数 右大腿 方向 四元数 ……电脑中看到的不是完整人体而是一组连接起来的骨骼节点。头 │ 左肩─胸部─右肩 │ │ │ 左肘 腰 右肘 │ │ │ 左手 骨盆 右手 / \ 左髋 右髋 │ │ 左膝 右膝 │ │ 左脚 右脚每一个骨段都有自己的方向数据。3. 为什么必须进行穿戴标定动作服每次穿到人身上时传感器的位置和方向都会略有不同。例如左前臂传感器可能向外偏了 10 度胸部传感器可能没有完全水平操作员的肩宽和臂长不同鞋上的传感器方向可能不同。所以系统启动后通常需要操作员做标准姿态例如T 形站立A 形站立双脚平行站立手臂自然下垂。这一步的作用是建立传感器方向 ↓ 人体骨段真实方向之间的偏差关系。如果不标定常见结果包括人抬手机器人手臂向侧面旋转人保持站立机器人腰部已经倾斜左右手方向相反人的肘部弯曲映射成机器人肩部旋转。所以标定不是附加步骤而是整个系统的基础。三、第二层数据通过 UDP 和 Wi-Fi 进入电脑1. Wi-Fi 和 UDP 不是同一个东西可以把通信过程理解为邮寄包裹。Wi-Fi 相当于运输道路IP 相当于地址系统UDP 相当于运输规则动作数据相当于包裹里的内容DDS 或自定义协议相当于包裹的格式和分类方式。整体层次如下人体骨骼数据 ↓ 自定义消息 / DDS消息 ↓ UDP ↓ IP网络 ↓ Wi-Fi 或有线以太网Wi-Fi 决定数据通过无线方式发送。UDP 决定发送时不建立复杂可靠连接而是快速地将一帧一帧数据发出去。2. 为什么实时动作通常使用 UDP人体动作是连续产生的例如每秒30 帧60 帧100 帧甚至更高。在实时控制中“最新数据”通常比“保证每一帧都收到”更重要。例如人正在挥手。如果网络丢失了第 101 帧但已经收到第 102、103 和 104 帧那么再等待第 101 帧重传通常没有意义因为第 101 帧已经过时。因此 UDP 的特点反而适合动作流传输开销小不等待确认不因某个旧数据包丢失而阻塞后面的新数据延迟通常比较低。但 UDP 不保证数据一定到达数据按顺序到达数据不会重复数据不会损坏数据频率稳定。所以这些问题必须由你们自己的程序处理。3. 每一帧动作数据应该包含什么一个合理的动作数据包通常应包含数据包版本 机器人或操作员编号 当前帧序号 动作采集时间戳 人体根节点位置 各个骨段姿态 关节置信度 校验信息其中最重要的是帧序号和时间戳。帧序号例如1001 1002 1003 1005电脑看到 1004 不见了就知道发生了丢包。时间戳时间戳告诉电脑这帧动作是什么时候采集的而不是什么时候收到的。因为某一帧可能在网络中停留时间更长。如果不使用时间戳程序无法区分人动作真的突然变慢网络延迟突然增大某帧数据晚到了。4. 网络链路的实际逻辑你们的系统可能存在两段通信。第一段 动作捕捉服 ↓ UDP/Wi-Fi 控制电脑 第二段 控制电脑 ↓ SDK2 / DDS / UDP-IP 宇树机器人宇树 SDK2 提供请求响应和发布订阅式接口SDK2 和 ROS 2 主要使用 Cyclone DDS 进行通信Python SDK 同样支持机器人状态订阅和控制命令发布。(GitHub)因此不要把整个系统简单理解成动作服直接控制电机实际情况更接近动作服发送人体信息 ↓ 电脑理解人体动作 ↓ 电脑计算机器人应该怎么动 ↓ 电脑通过宇树接口发送机器人命令四、第三层数据预处理动作数据收到以后不能立刻发送给机器人。至少需要经过以下处理。收到人体动作数据 ↓ 检查帧序号和时间戳 ↓ 丢弃过期帧或重复帧 ↓ 坐标系转换 ↓ 穿戴标定修正 ↓ 滤波和异常检测 ↓ 形成稳定的人体姿态1. 坐标系转换动作捕捉服和机器人通常不使用同一个坐标定义。动作捕捉系统可能定义X向右 Y向上 Z向前宇树机器人程序可能定义X向前 Y向左 Z向上如果不进行坐标转换那么人向前伸手机器人可能向上抬手人向左转机器人可能向右转人弯腰机器人可能后仰。所以程序需要明确三套坐标系动作捕捉世界坐标系 ↓ 人体骨盆或躯干坐标系 ↓ 机器人基座坐标系每一层都要进行方向转换。2. 四元数连续性人体骨段方向通常用四元数表示。四元数有一个特殊性质q 和 -q 表示同一个空间方向动作捕捉设备有时会在相邻两帧之间从q跳到-q。从物理姿态看没有发生变化但如果程序直接对数字做插值就可能认为人体突然旋转了很大角度因此必须做四元数连续性处理简单理解就是每收到一帧姿态都要判断它与上一帧是否走了“最短旋转方向”。3. 滤波人体动作数据会有轻微抖动。抖动来源包括IMU 噪声传感器绑带松动人体自然震颤无线网络抖动磁场干扰姿态融合误差。如果直接传给机器人机器人手臂和电机可能不停做小幅高频修正。滤波的目标是保留真实动作 去除无意义抖动 尽量不增加明显延迟滤波太弱机器人抖动电机频繁调整运动不自然。滤波太强人已经抬手机器人过一会才抬快速动作被削弱机器人感觉“黏滞”。所以实时遥操作最重要的不是滤得最平滑而是找到平滑性与响应速度之间的平衡。4. 异常值检测必须识别明显不合理的数据例如某关节一帧跳变 90 度四元数全部为零数据包含 NaN人体骨架突然消失根节点位置突然跳到几米外时间戳回退数据包长度错误。发现异常后不能把它直接发送给机器人。通常处理方式是轻微异常 ↓ 使用上一帧或插值补偿 连续异常 ↓ 机器人平滑减速 长时间无数据 ↓ 机器人进入安全姿态或停止五、第四层人体动作重定向这是系统最核心、也是最难的一层。1. 什么叫动作重定向动作重定向不是简单复制人体关节角而是在保留人体动作意图和整体外观的同时将动作转换成符合机器人结构、关节限制和平衡要求的机器人动作。人体和 G1/H1 的结构存在明显差异。人体 机器人 肌肉和柔性关节 电机和刚性关节 肩胛骨可自由活动 肩部自由度有限 脊柱有大量小关节 腰部自由度有限 脚趾可以参与平衡 机器人足底结构固定 人体比例因人而异 机器人连杆固定 人可通过微小肌肉调整平衡 机器人依赖控制算法因此不能直接进行人体左肩角度 机器人左肩角度2. 动作重定向的三种基本思路方法一关节直接映射把人体关节和机器人关节一一对应。人体肩关节 → 机器人肩关节 人体肘关节 → 机器人肘关节 人体髋关节 → 机器人髋关节 人体膝关节 → 机器人膝关节优点实现简单计算快延迟小适合初步测试。缺点人与机器人关节轴不一致手的位置未必准确容易超过机器人关节范围无法自动保证平衡肩、腰、腕部动作容易失真。适合单关节测试上肢简单动作系统通信验证。方法二末端位姿映射不强求每一个关节角都与人相同而是重点让机器人的手脚头骨盆胸部到达与人体相似的位置和方向。例如人把右手伸到身体前方。系统并不是问人的每个肩关节角是多少而是问人的手相对于胸口在哪里机器人怎样调整肩和肘才能让手到达相似位置然后通过逆运动学计算机器人关节。人体右手位置和方向 ↓ 按人体与机器人尺寸缩放 ↓ 生成机器人右手目标 ↓ 逆运动学 ↓ 机器人肩、肘、腕关节角这种方法通常比直接复制关节角更合理。方法三全身优化重定向这是效果更好的方法。系统同时考虑双手位置双脚位置头部方向胸部方向骨盆方向机器人关节范围自碰撞动作连续性机器人平衡。其思路可以理解为人体动作目标 ↓ 机器人尝试多个可行姿态 ↓ 比较哪个姿态 手最接近人体 脚最稳定 关节不超限 身体不碰撞 动作最平滑 ↓ 选择综合最优姿态这不是简单求一个关节角而是在多个要求之间做平衡。六、人体尺寸与机器人尺寸的差异假设操作员手臂长 70 cm而机器人手臂长 55 cm。人把手伸到距离肩部 65 cm 的位置机器人显然不能完全照搬。因此必须做比例映射。人体肩到手的相对位置 ↓ 根据人体臂长归一化 ↓ 乘以机器人臂长 ↓ 生成机器人手部目标类似地还要处理肩宽差异躯干长度差异腿长差异髋宽差异操作员身高差异。需要注意动作缩放并不是简单地把所有位置乘同一个比例。例如手臂按臂长缩放双手间距按肩宽缩放脚步距离按腿长和稳定范围缩放躯干倾角通常不能完全按比例复制。七、关节限制与自碰撞人体可以完成的动作机器人未必可以完成。例如人的肩部可以通过肩胛骨扩大运动范围人能把手放到背后人的腰部可进行复杂扭转人可以交叉双臂人的手腕灵活度通常高于部分机器人结构。机器人必须限制关节最小角度 关节最大角度 最大运动速度 最大加速度 最大允许力矩同时还要检查左手是否碰到胸部右臂是否穿过身体双膝是否相撞手是否碰到头手臂是否碰到腰部两只手是否互相碰撞。因此动作重定向结束前需要经过机器人模型验证。人体动作 ↓ 初步机器人姿态 ↓ 关节限位检查 ↓ 自碰撞检查 ↓ 速度和加速度检查 ↓ 输出安全目标八、动作平滑和轨迹生成动作捕捉每一帧给出的是一个离散目标。例如 60 Hz 时每隔约 16.7 ms 得到一个人体动作。机器人不能只把这些离散目标直接连接起来因为网络时间间隔并不完全均匀人体数据有噪声某些帧可能丢失目标变化可能超过电机能力。因此电脑还要将离散动作转换成连续轨迹。人体离散姿态帧 帧1 帧2 帧3 帧4 ↓ 时间对齐 ↓ 插值和平滑 ↓ 速度限制 ↓ 加速度限制 ↓ 连续机器人轨迹这里的核心目标不是重新规划一条复杂路径而是让机器人在两个连续人体动作之间平稳、安全地过渡。九、第五层全身控制与平衡动作重定向只能告诉机器人“希望做什么姿势”。但它不能保证机器人不会摔倒。例如人向右侧倾斜。人可以通过脚趾用力脚踝调整髋部补偿快速迈步上肢摆动维持平衡。机器人没有完全相同的身体能力。因此机器人控制器还必须决定骨盆应该放在哪里躯干允许倾斜多少双脚如何受力膝盖应该弯曲多少是否需要迈步上肢动作是否需要缩小。1. 支撑区域机器人双脚站立时两只脚与地面的接触区域形成支撑区域。俯视图 ┌────────┐ ┌────────┐ │ 左脚 │ │ 右脚 │ └────────┘ └────────┘ 两脚及中间区域形成支撑范围机器人整体重心如果过度偏离该区域就有倾倒风险。因此人体做大幅倾斜动作时系统通常不能完全复制而是需要缩小躯干倾角调整骨盆弯曲膝盖移动脚步减弱手臂动作。2. 上肢动作与下肢平衡解耦实际工程中一种常见而安全的做法是操作者直接控制 双臂 双手 头部 有限腰部动作 机器人自主控制 骨盆稳定 双腿 双脚接触 站立平衡 必要的迈步也就是人控制动作意图机器人控制自己的身体稳定。宇树官方 XR 遥操作说明中也包含由运动控制程序继续控制下半身、通过 DDS 接口执行双臂遥操作的模式。这表明在实际系统中上肢遥操作和下肢运动控制可以分开处理。(GitHub)这种架构比直接把人体全身关节全部强行映射给机器人更安全。3. 全身控制器的职责全身控制器可以看作一个协调者。它同时接收上层给出的手部目标 上层给出的头部目标 上层给出的躯干目标 机器人当前关节状态 机器人当前身体姿态 双脚是否接触地面然后协调哪些关节优先完成手部动作哪些关节用于保持平衡哪些动作需要缩小哪些关节不能继续运动是否需要通过迈步恢复稳定。十、控制优先级人形机器人中不同任务的重要程度不同。一般可以理解为最高优先级 不能摔倒 不能发生严重碰撞 不能超过电机和关节限制 第二优先级 双脚稳定接触 身体姿态稳定 骨盆和质心合理 第三优先级 手、头、腰部跟踪人体动作 第四优先级 动作外观尽量与人体完全一致也就是说当“完全模仿人”和“保持机器人稳定”发生冲突时必须优先保证机器人稳定。例如人突然快速弯腰机器人可能只执行一部分弯腰动作。这不是控制失败而是安全控制在主动限制不稳定动作。十一、第六层机器人底层轨迹跟踪经过动作重定向和平衡修正后系统得到机器人目标关节状态。例如左肩目标角度 左肘目标角度 右肩目标角度 右肘目标角度 腰部目标角度 ……但电机当前状态未必等于目标状态。所以机器人内部还有一个快速闭环控制器。目标关节状态 ↓ 与当前关节状态比较 ↓ 得到跟踪误差 ↓ 控制器计算电机命令 ↓ 电机运动 ↓ 编码器返回最新状态 └────继续修正这个闭环的运行频率通常要比人体动作采集频率高得多。例如动作捕捉60 Hz 上层动作重定向50100 Hz 机器人控制循环数百 Hz 或更高这里的具体频率取决于机器人接口、控制模式和你们使用的软件版本不能仅根据型号统一假定。十二、SDK2、DDS 和机器人控制接口宇树 SDK2 的作用是为上层程序提供机器人通信接口例如订阅机器人状态读取关节状态获取 IMU发布控制命令调用机器人服务进行高层或低层控制。SDK2 使用 Cyclone DDS 建立发布—订阅通信机制官方 Python SDK 保持了与 SDK2 类似的接口可通过请求响应或 Topic 发布订阅完成状态获取和控制。(GitHub)可以把 DDS 理解成一个数据总线机器人状态主题 joint_state imu_state motor_state 控制程序订阅这些主题 ↓ 计算下一步动作 ↓ 向控制主题发布 joint_command arm_command motion_command十三、网络异常时机器人应该怎么办无线网络不可能始终稳定。可能出现短时丢包延迟突然增加数据乱序Wi-Fi 断开控制电脑程序崩溃动作捕捉服掉线。所以系统必须设计状态机。┌────────────┐ │ 正常控制状态 │ └─────┬──────┘ │ 收不到新数据或数据异常 ↓ ┌────────────┐ │ 短时保持状态 │ │ 保持并平滑减速│ └─────┬──────┘ │ 持续超时 ↓ ┌────────────┐ │ 安全恢复状态 │ │ 回归安全姿态 │ └─────┬──────┘ │ 严重异常 ↓ ┌────────────┐ │ 阻尼/急停状态│ └────────────┘1. 为什么不能一直保持最后一帧假设最后一帧动作是抬起左腿身体向右倾斜双臂快速挥动。此时网络断开。如果机器人永久保持最后一帧命令可能失去平衡。正确策略应该根据超时时长逐步处理。短暂超时 保持最近目标并降低速度 中等超时 停止跟随新动作恢复站立姿态 长时间超时 进入阻尼、锁定或安全停机2. 心跳机制控制电脑应定期向机器人发送心跳。心跳不代表动作而是告诉机器人控制程序还在正常运行。机器人或机载程序持续检测最近一次心跳距离当前时间多久超过阈值就进入安全状态。动作数据包本身也可以作为心跳但单独设计控制状态和心跳通常更加清晰。十四、实时遥操作与训练不是同一件事这是非常容易混淆的地方。1. 实时遥操作实时遥操作是人现在动 ↓ 机器人现在跟着动特点人必须持续在线动作由当前人体姿态决定重点是低延迟和稳定跟踪不一定使用神经网络训练。2. 示教数据采集示教采集是人控制机器人完成任务 ↓ 把整个过程记录下来记录内容通常包括人体动作机器人目标动作机器人实际动作相机图像机器人 IMU足底接触任务结果时间戳。宇树官方xr_teleoperate提供数据记录模式unitree_lerobot也明确将 G1 遥操作作为采集自定义数据集的一种方式。(GitHub)3. 策略训练训练阶段使用已经记录的数据让模型学习看到什么状态 ↓ 应该输出什么动作训练完成后可能形成动作跟踪策略操作任务策略视觉—动作策略行走策略全身协调策略。4. 部署执行部署后机器人可以不再完全依赖动作服。实时遥操作 人体动作 → 机器人动作 训练后自主执行 机器人传感器 任务指令 ↓ 已训练策略 ↓ 机器人动作所以“采集人的动作并训练到机器人身上”实际上包含两个阶段第一阶段人教机器人 第二阶段机器人自己执行十五、训练数据应该怎样记录不能只保存人体关节数据。正确的数据结构应同时保存同一时刻 t 人体骨架姿态 机器人目标关节 机器人实际关节 机器人身体姿态 机器人关节速度 足底接触状态 相机图像 任务状态 网络延迟与丢包情况可以理解为┌─────────────────────────┐ │ 时间戳 t │ ├─────────────────────────┤ │ 人做了什么 │ │ 程序希望机器人做什么 │ │ 机器人实际上做了什么 │ │ 机器人看到了什么 │ │ 机器人是否稳定 │ │ 任务是否成功 │ └─────────────────────────┘如果只记录人的动作模型不知道机器人是否成功跟上是否发生滑动是否接触物体是否失去平衡相机中当时看到了什么。十六、时间同步是训练质量的关键假设人体动作采集延迟 20 ms相机延迟 80 ms机器人关节状态延迟 5 ms。如果简单地按电脑接收顺序保存可能出现保存的人体动作已经伸手 保存的相机图像手还没有伸出 保存的机器人状态正在伸手一半这些数据在时间上不一致。模型会错误地学习看到旧图像时应该输出未来动作。因此应尽量统一时间轴。动作服时间戳 ─┐ 相机时间戳 ─┼─→ 时间对齐 → 训练样本 机器人时间戳 ─┘时间同步通常比单纯提高采样频率更重要。十七、为什么需要仿真动作数据或训练策略不能直接部署到真机。因为可能存在左右关节方向写反零位错误关节角超限动作速度过快机器人自碰撞足部打滑质心失稳策略输出异常。宇树官方提供基于 SDK2 的 MuJoCo 仿真项目允许将 SDK2、ROS 2 和 Python SDK 控制程序接入仿真Isaac Lab 项目也采用与真机一致的 DDS 通信方式用于数据采集、回放、生成和模型验证。(GitHub)推荐流程是人体动作数据 ↓ 离线动作重定向 ↓ 仿真机器人回放 ↓ 检查 关节限位 自碰撞 足底接触 身体平衡 ↓ 训练策略 ↓ 仿真扰动测试 ↓ 悬挂真机测试 ↓ 低速站立测试 ↓ 正常真机运行十八、整个系统最容易出现的技术问题1. 动作方向错误原因通常是坐标轴定义不同左右手坐标系混淆四元数顺序错误旋转乘法顺序错误T-pose 标定错误。2. 机器人动作抖动可能原因IMU 噪声Wi-Fi 抖动滤波不足目标更新频率不稳定关节控制增益过高动作重定向解在不同姿态之间跳变。3. 机器人动作明显滞后可能原因动作捕捉服内部滤波延迟网络缓冲过大程序串行执行逆运动学计算过慢多次滤波Wi-Fi 拥塞使用旧帧排队处理。实时控制程序应优先处理最新帧而不是把所有旧帧依次执行完。4. 人动作正常但机器人容易摔倒原因通常不是动作捕捉精度而是直接复制下肢动作没有质心约束足底接触未建模躯干倾角过大动作速度超过平衡控制能力上肢快速运动产生较大惯性下肢控制与上肢目标冲突。5. 仿真正常真机效果差这是仿真到现实差异造成的。真实机器人存在摩擦电机延迟关节间隙地面柔软度传感器噪声电池电压变化结构柔性实际负载变化。所以训练时通常需要随机化质量随机化摩擦随机化控制延迟加入传感器噪声随机化地面条件限制策略输出。宇树官方强化学习项目目前支持 G1、H1 和其他平台为策略训练与部署提供了公开基础。(GitHub)十九、推荐的软件模块结构┌────────────────────────────────┐ │ 模块1动作捕捉接收 │ │ UDP接收、数据解析、帧号和时间戳 │ └───────────────┬────────────────┘ ↓ ┌────────────────────────────────┐ │ 模块2人体姿态预处理 │ │ 标定、坐标转换、滤波、异常检测 │ └───────────────┬────────────────┘ ↓ ┌────────────────────────────────┐ │ 模块3动作重定向 │ │ 人体骨架到机器人骨架、逆运动学 │ └───────────────┬────────────────┘ ↓ ┌────────────────────────────────┐ │ 模块4安全动作生成 │ │ 限位、自碰撞、速度限制、动作平滑 │ └───────────────┬────────────────┘ ↓ ┌────────────────────────────────┐ │ 模块5全身和平衡控制 │ │ 骨盆、质心、足底、上肢动作协调 │ └───────────────┬────────────────┘ ↓ ┌────────────────────────────────┐ │ 模块6宇树通信 │ │ SDK2、DDS、状态订阅和控制发布 │ └───────────────┬────────────────┘ ↓ ┌────────────────────────────────┐ │ 模块7安全状态机 │ │ 心跳、超时、恢复站立、阻尼、急停 │ └───────────────┬────────────────┘ ↓ ┌────────────────────────────────┐ │ 模块8数据记录 │ │ 人体、机器人、图像、任务和网络数据 │ └────────────────────────────────┘建议这些模块相互解耦。例如 UDP 接收线程不应同时负责求逆运动学写硬盘控制电机处理相机。否则某个耗时操作就可能阻塞全部系统。二十、最终完整逻辑框图┌──────────────────────────────────────┐ │ 人体操作员 │ │ 穿动作捕捉服完成示教或实时动作 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 动作捕捉与骨骼解算 │ │ IMU采样 → 姿态融合 → 人体数字骨架 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 数据封装 │ │ 帧号、时间戳、根节点、骨段姿态、置信度 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ UDP/IP Wi-Fi传输 │ │ 低延迟发送允许少量丢包不等待旧帧 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 控制电脑接收 │ │ 丢包检测、乱序检查、时间同步、异常检测 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 人体姿态预处理 │ │ 坐标转换、穿戴校准、滤波、四元数连续性 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 动作重定向 │ │ 人体骨架 → G1/H1骨架 │ │ 尺寸缩放、末端映射、逆运动学 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 动作安全修正 │ │ 关节限位、自碰撞、速度和加速度限制 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 全身控制与平衡控制 │ │ 手臂跟踪人体骨盆和下肢维持稳定 │ │ 必要时缩小动作或生成恢复动作 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ SDK2 / Cyclone DDS │ │ 发布控制命令订阅机器人实时状态 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ G1/H1底层控制器 │ │ 关节控制、电机驱动、IMU和足底反馈 │ └──────────────────┬───────────────────┘ ↓ ┌──────────────────────────────────────┐ │ 机器人实际运动 │ └──────────────────┬───────────────────┘ ↓ ┌────────机器人状态反馈─────────┐ │ │ └────→ 控制器修正下一时刻动作 ←──┘ 同时进行数据记录 人体动作 机器人目标动作 机器人实际状态 相机图像 IMU与足端接触 任务成功情况 网络延迟与丢包 ↓ 数据清洗和时间对齐 ↓ 模仿学习或强化学习 ↓ MuJoCo / Isaac Lab仿真验证 ↓ 真机部署二十一、用一句话理解每一层层级它解决的问题动作捕捉人现在做了什么网络通信怎样快速把人体动作送到电脑数据预处理收到的数据是否准确、连续、及时动作重定向机器人怎样做出与人相似的动作安全约束这个动作机器人能不能安全完成平衡控制机器人做动作时怎样不摔倒底层跟踪电机怎样准确执行目标动作数据记录人是怎样教机器人的策略训练机器人怎样逐渐学会自己完成安全状态机通信或算法异常时机器人怎样停下来最终可以把你们系统的核心逻辑浓缩为人做动作 ↓ 动作服测出人体姿态 ↓ 电脑理解人体动作 ↓ 把人体动作变成机器人可行动作 ↓ 机器人平衡控制器对动作进行安全修正 ↓ 通过SDK2和DDS发送给宇树机器人 ↓ 机器人电机执行 ↓ 状态反馈给电脑 ↓ 持续修正并记录为训练数据最重要的认识是UDP 和 Wi-Fi 只负责“把数据送过去”动作重定向决定“机器人应该做什么”全身控制和平衡控制决定“机器人能不能安全做出来”底层闭环控制决定“机器人实际做得准不准”。