ILImitation Learning实际机器人动作采集和策略训练中完全可以将 CSV 文件动作数据 机器人模型 XML 文件如 URDF、MJCF 或 MuJoCo XML转换生成 .npz 文件这是机器人模仿学习Imitation Learning或运动重定向Motion Retargeting流程中的常见预处理步骤。下面是详细说明 转换的逻辑、关键步骤、注意事项和代码示例。一、转换目标将CSV 文件包含参考动作如 MoCap 数据通常是时间序列的关节角度、位置、速度等机器人模型 XML定义了关节数量、类型revolute/prismatic、自由度DoF、关节约束、连杆质量等→ 转换为.npz 文件结构化 NumPy 数组包含适配该机器人模型的状态轨迹states 和/或 动作轨迹actions供 Isaac Gym、MocapAct 等框架使用。二、关键挑战与处理思路问题解决方案1. 关节命名/顺序不一致建立 CSV 列名 ↔ 机器人关节约束的映射表map2. DoF 不匹配人有 20 DoF机器人可能只有 12丢弃无关关节或用 IK逆运动学重定向3. 单位/坐标系不同统一为弧度rad、米m、世界坐标系4. 缺少根节点root信息若 CSV 只有关节角需补充 root 位姿可设为固定或从数据推断5. 动作不符合动力学.npz 只是“参考轨迹”训练时由策略网络满足动力学注意.npz 文件本身不执行物理仿真它只是专家示范expert demonstration的数据容器。三、典型 .npz 文件结构以 Isaac Gym AMP 为例{motion_names:[walk,run,...],# 动作名称motion_lengths:[300,450,...],# 每段动作帧数motion_fps:30,# 帧率motion_dt:1/30,# 时间步长motion_queue:[...],# 可选root_pos:(N,3),# 根节点位置root_rot:(N,4),# 四元数表示的根节点旋转joint_pos:(N, num_dof),# 关节位置弧度joint_vel:(N, num_dof),# 关节速度可选...:...}四、转换步骤示意代码 Python 示例步骤 1加载机器人模型获取关节数量和顺序importxml.etree.ElementTree as ET def parse_urdf_joints(urdf_path): treeET.parse(urdf_path)roottree.getroot()joints[]forjointinroot.findall(joint):ifjoint.get(type)in[revolute,prismatic]: joints.append(joint.get(name))returnjoints# e.g., [hip_roll, hip_pitch, knee, ...]步骤 2加载 CSV 动作数据importpandas as pddfpd.read_csv(motion.csv)# 假设列名为 [time, hip_roll, hip_pitch, ...]步骤 3对齐关节顺序robot_jointsparse_urdf_joints(robot.urdf)# 确保 CSV 列包含所有 robot_jointsjoint_datadf[robot_joints].values# shape: (T, num_dof)步骤 4构造 root 信息若缺失importnumpy as np Tjoint_data.shape[0]root_posnp.zeros((T,3))# 假设原地行走root_rotnp.tile([1,0,0,0],(T,1))# 单位四元数步骤 5保存为 .npznp.savez(motion.npz,root_posroot_pos,root_rotroot_rot,joint_posjoint_data,motion_fps30,motion_dt1/30,motion_lengths[T],motion_names[custom_walk])五、进阶使用逆运动学IK进行运动重定向如果 CSV 来自人体 MoCap如 BVH而机器人结构不同如无手腕、踝关节简化则需提取人体关键点如髋、膝、踝3D 位置对机器人模型运行 Inverse KinematicsIK求解使其末端执行器到达目标位置的关节角将 IK 解结果存入 joint_pos。工具推荐Pinocchio高效机器人动力学库支持 IKPyBullet的 calculateInverseKinematicsMuJoCo的 IK solver六、适用框架生成的 .npz 可直接用于Isaac Gym / Isaac SimAMP、HumanoidMocapAct 风格的离线 RL 训练自定义 PyTorch/TensorFlow 模仿学习 pipeline七、 结束语CSV 机器人 XML → .npz 完全可行且是标准预处理流程。关键在于对齐关节数量与顺序补全根节点位姿按目标框架要求组织字段如 Isaac Gym 的命名规范可选使用 IK 进行运动重定向 以提高可行性。