i4h导管导航端到端冒烟Skill i4h-catheter-navigation-e2e

该技能用于运行 i4h 导管导航 v0.7 管线的端到端冒烟测试,验证环境设置、基于 TotalSegmentator 的数字孪生构建、DRR 渲染以及 CPU 单元测试,最终生成交互式演示前的验证产物与摘要。适用于医疗手术机器人导航工作流自动化验证与演示。关键词:i4h、导管导航、端到端冒烟、数字孪生、DRR、单元测试、手术机器人导航。

手术机器人导航 0 次安装 0 次浏览 更新于 9/6/2026
名称 i4h-catheter-navigation-e2e
版本 “0.7.0”
描述 导管导航端到端冒烟:涵盖设置、数字孪生、DRR 与单元测试。当需要运行完整导管工作流冒烟或演示 v0.7 流水线时使用。
开源协议 Apache-2.0 metadata:
作者 “Isaac for Healthcare Team isaac-for-healthcare-support@nvidia.com” tags: - isaac-for-healthcare - i4h - catheter-navigation - end-to-end - smoke

i4h 导管导航 - 端到端冒烟

目的

运行 v0.7 冒烟流水线:验证设置,从 TotalSegmentator 受试者构建数字孪生,从缓存渲染 DRR,并运行 CPU 单元测试。跳过交互式视口(需要显示器)。

基础代码

ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/catheter_navigation" ]; then
  ROOT="${I4H_WORKFLOWS:-$HOME/i4h-workflows}"
  [ -d "$ROOT/workflows/catheter_navigation" ] || git clone https://github.com/isaac-for-healthcare/i4h-workflows "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"; cd "$ROOT"

基础

阶段映射到独立技能;此技能使用共享的 RUN_DIRCACHE 将它们串起来。

阶段 技能
设置 + CPU 冒烟 [[i4h-catheter-navigation-setup]]
数字孪生 [[i4h-catheter-navigation-digital-twin]]
GPU DRR [[i4h-catheter-navigation-render-drr]]
单元测试 [[i4h-catheter-navigation-smoke]]

运行

按顺序运行以下步骤。每一步都是独立的 bash 调用;变量在本地代理的 tmux 会话中持久化。

Step 1 - 初始化运行

REPO_ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"; [ -d "$REPO_ROOT/workflows/catheter_navigation" ] || REPO_ROOT="$HOME/i4h-workflows"
WF_ROOT="${REPO_ROOT}/workflows/catheter_navigation"
RUN_DIR="${WF_ROOT}/runs/e2e_$(date +%Y%m%d_%H%M%S)"
mkdir -p "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${WF_ROOT}/runs/.latest"
CACHE="${CACHE:-/tmp/ct_cache}"
SUBJ="${SUBJ:-}"
export I4H_WORKFLOWS="$REPO_ROOT"

Step 2 - 设置验证

遵循 [[i4h-catheter-navigation-setup]] 步骤 1-3;将输出通过 tee 保存到 ${RUN_DIR}/logs/setup.log

Step 3 - 数字孪生(需要 SUBJ)

SUBJ 设置为已提取的 TotalSegmentator 受试者,然后遵循 [[i4h-catheter-navigation-digital-twin]] 步骤 3-4。

如果 SUBJ 未设置,则跳到带有合成 DRR 的 Step 4,并在摘要中注明部分 e2e。

Step 4 - 渲染 DRR

如果 Step 3 成功,设置 CACHE 并遵循 [[i4h-catheter-navigation-render-drr]] 缓存变体。 否则,运行合成渲染到 ${RUN_DIR}/drr_synthetic.png

Step 5 - 冒烟测试

遵循 [[i4h-catheter-navigation-smoke]];记录日志到 ${RUN_DIR}/logs/smoke.log

Step 6 - 摘要

cat > "${RUN_DIR}/logs/SUMMARY.txt" <<EOF
Catheter navigation e2e smoke
RUN_DIR=${RUN_DIR}
CACHE=${CACHE}
SUBJ=${SUBJ:-<skipped>}
Artifacts:
  $(ls -1 "${RUN_DIR}" 2>/dev/null || true)
EOF
cat "${RUN_DIR}/logs/SUMMARY.txt"

标志(非正式)

  • SUBJ 未设置时跳过数字孪生 -> 仅合成 DRR。
  • 当有显示器时,通过 [[i4h-catheter-navigation-viewport]] 手动添加视口。

输出

  • RUN_DIR/logs/ - 各阶段日志和 SUMMARY.txt
  • RUN_DIR/drr.pngdrr_synthetic.png - 渲染帧
  • CACHE/ - 当 Step 3 运行时的数字孪生产物

先决条件

  • [[i4h-catheter-navigation-setup]] 主机要求。
  • 完整 e2e 需要 SUBJ(否则执行部分冒烟)。
  • Step 4 缓存渲染需要 GPU。

限制

  • 不启动交互式视口(需要显示器)。
  • 不涵盖 RL/IL 训练循环。

故障排查

  • 没有 CT 数据时的部分运行 - 这是预期;记录哪些阶段运行了。
  • GPU 渲染失败 - 回退到合成 DRR 并报告 GPU 设置差距。

最终响应

打印 RUN_DIR、已完成/跳过的阶段、DRR 输出路径、冒烟测试状态,并建议 [[i4h-catheter-navigation-viewport]] 进行交互式演示。