公开方法引用了从未定义的矩阵
`DynamicsMixin.accel_x()` 的正常调用会走到未定义的 `T` 与 `J`,使 1.4.0 公开 API 直接抛出 `NameError`;同时结果缓冲区错误地使用关节数 `self.n` 作为列数,7 轴冗余机器人无法返回应有的六维笛卡尔加速度。

面向机器人研究与教学的 Python 工具箱,覆盖串联机械臂的运动学与动力学、雅可比矩阵、轨迹规划和控制,并提供 Puma 560、Franka Panda 等 50 余种机器人模型。
这里不是把一个 NameError 换成能运行的表达式,而是重新接通从操作空间速度、解析雅可比到末端加速度的完整动力学关系。
Puma 560 · Panda 7-DoF
q̇ = Jₐ⁺ ẋrecover joint velocityJ̇ₐ q̇+Jₐ q̈T · (J̇q̇ + Jq̈) no undefined T / J
independent of joint count
`DynamicsMixin.accel_x()` 的正常调用会走到未定义的 `T` 与 `J`,使 1.4.0 公开 API 直接抛出 `NameError`;同时结果缓冲区错误地使用关节数 `self.n` 作为列数,7 轴冗余机器人无法返回应有的六维笛卡尔加速度。
调用入口提供的是操作空间速度 `xd`。由 `xd = Ja · qd` 恢复关节速度后,末端加速度必须同时包含解析雅可比的时间导数项与关节加速度映射:`xdd = Jad · qd + Ja · qdd`。原实现混用了未生成的变换矩阵与几何雅可比,还隐含假设其变换导数为零。
复用现有 `jacob0_analytical()` 与带同一角度表示的 `jacob0_dot()`,直接计算完整解析关系;将单点和轨迹输出统一为固定 6 维,并同步修正文档中的速度、外力和轨迹形状语义。
Puma 560 的单点与轨迹输入现在都能得到有限、维度一致的末端加速度;7 轴 Panda 也稳定返回六维笛卡尔向量,而不会把关节数泄漏到输出形状。速度、加速度和轨迹接口重新共享同一套操作空间语义。