PICO track 数据可视化与编辑工具(曲线编辑 + 三维帧编辑)
Project description
tools/track — PICO Track 数据可视化与编辑工具
提供轨迹(track)JSON 数据的曲线编辑、三维帧编辑、统一 Web 编辑器与帧率重采样, 用于人工调整人形机器人的动作轨迹数据。
工具
| 命令 | 描述 | 依赖 |
|---|---|---|
pico-tool-track curve <json> |
关节角度曲线编辑器,拖动控制点调整样条轨迹 | matplotlib + scipy |
pico-tool-track edit <json> |
三维帧编辑器,逐帧调整 + 实时 3D 骨架预览 | viser + mujoco |
pico-tool-track web [json...] |
独立编辑器(曲线编辑 + 3D 骨架联动,同一窗口内) | fastapi + mujoco |
pico-tool-track resample <json> |
轨迹帧率重采样(整数倍插帧 / 抽帧) | 无额外依赖 |
安装
# 仅曲线编辑器 + 重采样(轻量)
cd tools/track
uv sync
# 同时安装三维帧编辑器
uv sync --extra edit3d
# 同时安装独立 Web 编辑器(曲线 + 3D 联动窗口)
uv sync --extra web
或通过 pico CLI 直接使用(依赖自动安装,默认走统一 Web 编辑器):
pico tool track motion.json
独立发布安装后(见下方“独立发布”),可直接调用 pico-tool-track:
pico-tool-track curve motion.json
pico-tool-track edit motion.json
曲线编辑器 (curve)
以稀疏控制点 + 三次样条插值方式编辑各关节角度轨迹(类似贝塞尔曲线效果):
- 灰色曲线:原始轨迹(只读参考)
- 蓝色曲线:当前样条拟合结果
- 红点:可拖动的控制点(仅 Y 轴,上下拖拽改变曲线形状)
操作
| 操作 | 说明 |
|---|---|
| 左键拖动红点 | 调整该关节曲线 |
S |
保存到输出文件 |
R(光标在某关节子图内) |
还原该关节到原始轨迹 |
A |
还原全部关节 |
Q / 关闭窗口 |
退出(不保存) |
选项
pico-tool-track curve data.json # 默认控制点数 max(5, N//15)
pico-tool-track curve data.json --ctrl 20 # 指定 20 个控制点(越少越平滑)
pico-tool-track curve data.json -o edited.json # 保存到新文件
三维帧编辑器 (edit)
通过浏览器 GUI(基于 viser)查看 3D 骨架动画并逐帧调整关节角度:
- 帧滑条 + 播放/暂停
- 按腿/腰/臂分组的关节滑条
- 单帧或全帧批量修改
- 修改后自动重算 FK(更新
body_pos_w)
选项
pico-tool-track edit data.json # 默认端口 8080
pico-tool-track edit data.json --port 8081 # 自定义端口
pico-tool-track edit data.json --mjcf robot.xml # 手动指定 MJCF
pico-tool-track edit data.json -o edited.json # 保存到新文件
独立编辑器 (web)
曲线编辑 + 3D 骨架联动的统一编辑器,启动后自动在系统浏览器中打开:
- 拖动控制点 → 3D 视图实时更新;播放时光标跟随
- 支持一次性加载多个文件,通过左侧文件清单切换编辑目标
- 省略输入文件可以空白地面模式启动,界面内通过 🤖 Model / 📂 Files 面板导入
pico-tool-track web data.json # 默认端口 27860
pico-tool-track web data.json --port 27861 --ctrl 20
pico-tool-track web file1.json file2.json # 多文件模式
pico-tool-track web --mjcf robot.xml # 空白模式,指定初始模型
帧率重采样 (resample)
升采样:相邻帧间线性插值(位置/关节角)+ SLERP(四元数旋转)。 降采样:均匀抽取。
pico-tool-track resample data.json --fps 100
pico-tool-track resample data.json --factor 2
pico-tool-track resample data.json --fps 25 --output out.json
数据格式
输入/输出均为 track JSON 格式,包含:
{
"joint_names": ["left_hip_pitch_joint", ...],
"fps": 50.0,
"num_frames": "片段总帧数",
"duration": "片段时长(秒)= num_frames / fps",
"joint_pos": "(N, J) 关节角度(rad)",
"root_pos_w": "(N, 3) 根节点世界坐标",
"root_rot_w": "(N, 4) 根节点四元数 xyzw",
"body_names": "list[str],body_pos_w 各列对应的 MuJoCo body 名称",
"body_pos_w": "(N, B, 3) 各 body 世界坐标(FK 重算)"
}
注意:
curve命令仅更新joint_pos,body_pos_w需用edit/web命令 重新计算 FK。resample会同步重采样所有帧相关字段。
独立发布
tools/track/ 是完全独立于 ROS 2 工作区的 Python 包,可脱离 monorepo 单独发布安装:
pico tool release track --bump 0.2.0 --upload
生成 wheel + 一键安装脚本并上传到 GitHub Releases,目标机执行:
curl -fsSL https://github.com/<owner>/<repo>/releases/download/tools/track/v0.2.0/install-pico-tool-track.sh | bash
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pico_tool_track-0.1.1.tar.gz.
File metadata
- Download URL: pico_tool_track-0.1.1.tar.gz
- Upload date:
- Size: 79.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a319824c9fc65794699bea2fb7b67efaa5485264aceee1ec45d6614ef8ed6abb
|
|
| MD5 |
d36250a8c6c951cdd6f89cbc2f2d85e1
|
|
| BLAKE2b-256 |
48d86a8bf1d1ccd9500bd9021419674055090d434d0d9e7b70a3b447fe82dd18
|
File details
Details for the file pico_tool_track-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pico_tool_track-0.1.1-py3-none-any.whl
- Upload date:
- Size: 81.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58321f3f6396b2b66cbe1bbb36beabfdba23edca99b38ac588acecfa64281b32
|
|
| MD5 |
a0f0853fb857f2258bbbbb84417c827e
|
|
| BLAKE2b-256 |
12e4fcf114f9a3cd00db7c1a916d23bfe1ffcd8bbff2f56ae644ca58435b0b6a
|