WalkE3 Dataset
收藏WalkE3 数据集概述
数据集简介
WalkE3 数据集包含人形机器人的运动捕捉数据,格式为 CSV。每个 CSV 文件记录了机器人每一帧的运动状态,主要包括:
- 根位置:世界坐标系下的三维位置 (x, y, z)
- 根朝向:四元数表示 (x, y, z, w)
- 关节角度:21 个自由度的关节角度
数据集包含多种运动类型,例如:
- 行走运动 (
walk_s1_1.csv) - 奔跑运动 (
run_s1_1.csv) - 其他运动模式
数据集结构
CSV 文件格式
每个 CSV 文件包含以下结构的运动数据:
行格式: [root_pos_x, root_pos_y, root_pos_z, quat_x, quat_y, quat_z, quat_w, joint_1, joint_2, ..., joint_21]
数据列(总计 28 列):
- 第 0-2 列:根位置 (x, y, z) [单位:米]
- 第 3-6 列:根四元数 (x, y, z, w)
- 第 7-27 列:21 个自由度的关节角度 [单位:弧度]
目录结构
WalkE3_Dateset/ ├── data/ │ ├── data/ # 原始 CSV 运动数据 │ │ ├── walk_s1_1.csv # 行走运动数据 │ │ └── run_s1_1.csv # 奔跑运动数据 │ └── txt/ # 处理后的 JSON 运动文件 │ ├── walk_s1_1.txt │ ├── walk_s1_1b.txt │ ├── run_s1_1.txt │ └── run_s1_1b.txt ├── robot_models/ │ └── e3/ # E3 人形机器人模型 │ ├── e3.xml # 机器人模型文件 │ ├── e3.urdf # URDF 模型文件 │ ├── scene.xml # 场景配置文件 │ ├── scene_terrain.xml # 地形场景配置文件 │ └── meshes/ # 3D 网格文件 ├── csv2txt.py # CSV 转 TXT 转换器(正向) ├── csv2txt_back.py # CSV 转 TXT 转换器(反向) ├── visualize_txt.py # MuJoCo 可视化播放器 └── README.md # 说明文件
核心功能
CSV 转 TXT 转换
- 将 CSV 运动数据转换为 MuJoCo 兼容的 JSON 格式
- 支持帧率转换(下采样)
- 自动数据验证和错误处理
本体坐标系速度计算
- 计算本体坐标系下的根线速度
- 计算本体坐标系下的根角速度
- 计算关节速度
- 使用四元数旋转将世界坐标系速度转换到本体坐标系
运动数据可视化
- 绘制根线速度曲线 (vx, vy, vz)
- 绘制根角速度曲线 (wx, wy, wz)
- 转换过程中的实时可视化
MuJoCo 回放
- 在 MuJoCo 仿真中加载并播放运动数据
- 摄像头跟踪机器人骨盆
- 具有适当帧率控制的实时可视化
- 支持多个运动文件播放
脚本概述
1. csv2txt.py - 正向运动转换器
按时间顺序将 CSV 运动数据转换为 TXT 格式。
2. csv2txt_back.py - 反向运动转换器
按反向时间顺序将 CSV 运动数据转换为 TXT 格式。
3. visualize_txt.py - MuJoCo 可视化播放器
在 MuJoCo 仿真环境中回放运动数据。
输出格式
TXT 文件结构(JSON 格式)
json { "LoopMode": "Wrap", "FrameDuration": 0.033333, "EnableCycleOffsetPosition": true, "EnableCycleOffsetRotation": true, "MotionWeight": 0.5, "Frames": [ [/* 帧 0 数据:55 个值 /], [/ 帧 1 数据:55 个值 */], ... ] }
字段说明:
LoopMode: "Wrap" - 运动循环播放FrameDuration: 每帧时间(秒),等于 1/fpsEnableCycleOffsetPosition: 启用循环位置偏移EnableCycleOffsetRotation: 启用循环旋转偏移MotionWeight: 运动混合权重 (0.0-1.0)Frames: 帧数据数组,每帧包含 55 个值
输出帧格式
输出 TXT 文件中的每一帧包含:
[ root_pos_x, root_pos_y, root_pos_z, # 位置 (3) quat_x, quat_y, quat_z, quat_w, # 朝向 (4) joint_1, joint_2, ..., joint_21, # 关节角度 (21) root_vel_x, root_vel_y, root_vel_z, # 本体坐标系线速度 (3) ang_vel_x, ang_vel_y, ang_vel_z, # 本体坐标系角速度 (3) joint_vel_1, ..., joint_vel_21 # 关节速度 (21) ] 总计:每帧 55 个值
技术要求
- Python: 3.7+
- NumPy: 用于数值计算
- Matplotlib: 用于绘制速度曲线
- SciPy: 用于四元数操作 (
scipy.spatial.transform) - MuJoCo: 用于机器人仿真和可视化
- JSON: Python 内置库




