# IsaacLab UsdFrameView读取float3 scale时触发TypeError

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-10-23-isaaclab-7400
> 频道：pitfalls | 更新日期：2026-10-23 | 标签：auto, github-issue, isaaclab
> 核心摘要：UsdFrameView因USD类型绑定不支持隐式转换，读取float3/half3 scale时报错，已通过PR #7385修复。

# IsaacLab UsdFrameView读取float3 scale时触发TypeError

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[[Bug] UsdFrameView rejects legal float3 xformOp:scale values](https://github.com/isaac-sim/IsaacLab/issues/7400)（GitHub isaac-sim/IsaacLab #7400）

**状态**：已解决

## 问题

在IsaacLab中调用`FrameView.get_local_scales()`或初始化`FabricFrameView`时，若USD prim的`xformOp:scale`属性为`Gf.Vec3f`或`Gf.Vec3h`类型，内部`_get_local_scales_impl()`尝试将其赋值给`Vt.Vec3dArray`会因缺乏隐式类型转换而抛出`TypeError`，导致无法获取局部缩放或世界位姿。

## 环境

IsaacLab commit 5c34c4246f7e263d67191ab7c12a37ed9bf4a73e (develop分支)，涉及USD Python bindings与PhysX FabricFrameView初始化路径。

## 解决办法

1. 升级IsaacLab至包含PR #7385的版本（main分支或release/3.0.0及以上），该修复已合入并通过回归测试。
2. 若暂无法升级，需在读取scale属性后显式将`Gf.Vec3f`或`Gf.Vec3h`转换为`Gf.Vec3d`再赋值给`Vt.Vec3dArray`，避免依赖USD绑定的隐式转换。
3. 验证修复：对含`PrecisionFloat` scale的prim创建`FrameView`并调用`get_local_scales()`，确认不再抛出`TypeError`且返回正确FP32结果。

讨论原作者：@NeoZng 等，版权归原作者所有。
:::

## 原始参考来源 (Sources)

- [GitHub isaac-sim/IsaacLab #7400：[Bug] UsdFrameView rejects legal float3 xformOp:scale values](https://github.com/isaac-sim/IsaacLab/issues/7400)