Skip to main content

TF 树梳理与变换管理:YAML 外参加载/保存、图路径与环检测、直接关系重写、变换矩阵计算

Project description

tftree-manager

当前版本:0.0.4

TF 树梳理与变换管理:从 YAML 目录加载/保存外参与顺序,构建无向图、路径查找、环检测、变换矩阵计算。

安装

pip install tftree-manager

功能特性

  • yaml_dir/extrinsics/*.yamlorder_manifest.yaml 加载/保存外参与顺序
  • 无向图构建、BFS 路径查找、有向环检测
  • 沿路径累积 4x4 变换矩阵、从根节点计算到所有可达节点
  • 更新变换、求逆、删除有向边(remove_transform)、重排顺序并写回 YAML
  • 直接关系重写(rewrite_direct_relations):删除被更新相机旧链路,按外部 YAML 声明方向写入新直接边,并在 order_manifest.yaml 记录原始计算链路 link_nodes
  • 可选 Flask API 服务与命令行入口

快速开始

from tftree_manager import TFTreeManager

manager = TFTreeManager("/path/to/yaml_dir")
manager.load_from_yaml()

# 所有坐标系
frames = manager.get_all_frames()

# 两节点间变换矩阵
T = manager.get_transform("lidar", "camera")

# 从根节点计算到所有节点
transforms = manager.compute_all_transforms_from_root("world")

# 检测环
cycles = manager.detect_cycles()

# 保存
manager.save_to_yaml()

直接关系重写

V0.0.4 新增 TFTreeManager.rewrite_direct_relations(update_yaml_path, prune_frames=None, output_dir=None, save=True),用于处理 PB 解析后的 YAML 工作目录。C04 负责产出 IPM 自动计算后的直接关系 YAML,pb_calibration 继续负责 PB parse/build。

输入 YAML 格式:

direct_relations:
  - source_frame: at128p_front
    target_frame: front_120
    link_nodes: [at128p_front, vrf, front_120]
    translation: {x: 0.0, y: 0.0, z: 0.0}
    rotation: {qx: 0.0, qy: 0.0, qz: 0.0, qw: 1.0}
    replace_frames: [front_120]

规则:

  • source_frame -> target_frame 是最终写入 extrinsics/*.yaml 的方向,不自动反转。
  • link_nodes 仅作为原始计算链路元数据保存到 order_manifest.yamldirect_relations_meta,不写入单条 extrinsic YAML。
  • link_nodes 长度必须 >= 2,首节点等于 source_frame,尾节点等于 target_frame
  • 未提供 replace_frames 时默认删除 target_frame 相关旧边;也可通过 API/CLI 额外传入 prune_frames
  • 重写后会校验不存在 A->BB->A 反向重复边,且无无向闭环;允许森林结构。

Python 示例:

from tftree_manager import TFTreeManager

manager = TFTreeManager("/path/to/yaml_dir")
manager.load_from_yaml()
result = manager.rewrite_direct_relations(
    "/path/to/direct_relations.yaml",
    output_dir="/path/to/rewritten_yaml",
)
print(result.added_relations[0].link_nodes)

命令行

# 以 YAML 目录为参数,加载并打印树与环信息
tftree-manager /path/to/yaml_dir

# 按 direct_relations YAML 重写直接边;默认写回 yaml_dir
tftree-manager rewrite-direct /path/to/yaml_dir /path/to/direct_relations.yaml

# 输出到新目录,不修改原 YAML 目录
tftree-manager rewrite-direct /path/to/yaml_dir /path/to/direct_relations.yaml --output-dir /path/to/rewritten_yaml

# 额外删除指定 frame 相关旧边
tftree-manager rewrite-direct /path/to/yaml_dir /path/to/direct_relations.yaml --prune-frame front_120

# 启动 Flask API 服务(默认 0.0.0.0:5000)
tftree-manager-server

环境变量 TFTREE_DATA_DIR 可指定 API 默认数据目录(默认 ./data)。

依赖

  • Python >= 3.10
  • numpy >= 1.20.0
  • PyYAML >= 5.4.0
  • Flask >= 2.0.0(API 与 server 入口需要)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tftree_manager-0.0.4.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tftree_manager-0.0.4-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file tftree_manager-0.0.4.tar.gz.

File metadata

  • Download URL: tftree_manager-0.0.4.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for tftree_manager-0.0.4.tar.gz
Algorithm Hash digest
SHA256 2eff737ef5067737924073b9373f4c5ec343ba26289ee35c8c6622b503ec3538
MD5 f3a656e3619f0f90a2b56ed23e7e07ae
BLAKE2b-256 14d1fbd159dd9e043b8ac7373578f6f93ff532d6af6ee4650265f6088ff55cfe

See more details on using hashes here.

File details

Details for the file tftree_manager-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: tftree_manager-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for tftree_manager-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0cef80fe04b8ea391f4ce5abab435760a6700d157531d15b893605f33d009335
MD5 6942121be47b6d113e0e566e3a2e09d5
BLAKE2b-256 f242693ed1dea029d5be0b443294aa2a63f50897600e85732b1547e44d5dd200

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page