# MuJoCo MJX 3.3.5运行training_apg报错State无pos属性

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-10-22-mujoco-2822
> 频道：pitfalls | 更新日期：2026-10-22 | 标签：auto, github-issue, mujoco
> 核心摘要：MJX升级致API变更引发AttributeError，需改用mjx_to_brax()转换数据以兼容新版Data类。

# MuJoCo MJX 3.3.5运行training_apg报错State无pos属性

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[AttributeError: 'State' object has no attribute 'pos' in mjx/training_apg.ipynb](https://github.com/google-deepmind/mujoco/issues/2822)（GitHub google-deepmind/mujoco #2822）

**状态**：有绕过办法

## 问题

在MuJoCo MJX 3.3.5环境中运行`train_apg.ipynb`示例时，调用`train_fn`触发`AttributeError: 'State' object has no attribute 'pos'`。原因是新版MJX Data类移除了`data.x`和`data.xd`属性，导致旧版Notebook代码直接访问失效，而相同代码在MJX 3.3.0中可正常运行。

## 环境

Ubuntu 20.04/Colab, MuJoCo MJX 3.3.5, JAX 0.5.3, Brax 0.12.1

## 解决办法

1. 停止在训练循环或推理函数中直接访问`data.x`、`data.xd`或`state.pos`等已废弃属性
2. 调用Notebook内置的辅助函数`mjx_to_brax()`处理原始MJX数据
3. 使用`mjx_to_brax()`返回的Brax `Transform`和`Motion`对象替代原生MJX数据结构进行后续计算
4. 等待官方PR合并更新`training_apg.ipynb`以彻底修复API兼容性问题

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

## 原始参考来源 (Sources)

- [GitHub google-deepmind/mujoco #2822：AttributeError: 'State' object has no attribute 'pos' in mjx/training_apg.ipynb](https://github.com/google-deepmind/mujoco/issues/2822)