newton-atlas 固定版本源码入口#

Learning home · Newton Physics contents

Course text is primarily Chinese, with English terminology and summaries. The original content is preserved.

阅读基线:713fecdc41caf0c9d726f5c016939f36e66e3dff。以下入口已核对官方 Git 树与文件内容身份;不是全仓审查或运行验收记录。

本阶段先理解引擎架构、建模、步进、控制、接触/求解、传感器/渲染、性能与扩展。独立实验、基准、训练和评分暂不开展,后续复用 DexLab。

源码文件

阅读目的

docs/guide/overview.rst

核对对象职责、数据布局、参数与版本约定

docs/guide/installation.rst

核对对象职责、数据布局、参数与版本约定

docs/concepts/conventions.rst

核对对象职责、数据布局、参数与版本约定

docs/concepts/collisions.rst

区分接触几何、接触律与数值近似

docs/concepts/worlds.rst

核对对象职责、数据布局、参数与版本约定

docs/solvers/index.rst

识别算法、输入状态、配置与限制

newton/_src/sim/model.py

核对对象职责、数据布局、参数与版本约定

newton/_src/sim/state.py

核对对象职责、数据布局、参数与版本约定

newton/_src/sim/builder.py

核对对象职责、数据布局、参数与版本约定

newton/_src/sim/control.py

核对对象职责、数据布局、参数与版本约定

newton/_src/solvers/xpbd/solver_xpbd.py

识别算法、输入状态、配置与限制

newton/_src/solvers/mujoco/solver_mujoco.py

识别算法、输入状态、配置与限制

newton/examples/basic/example_basic_pendulum.py

理解官方最小使用顺序;本轮不执行

E1 精读入口#

正文的行号链接指向下面的固定文件,身份见 sources.json。重点是实现分支,而不仅是 docstring。

文件

本章具体核对内容

newton/_src/sim/articulation.py

关节父/子变换、COM 速度换点、eval_fk/ik 的输入输出边界

newton/_src/sim/enums.py

body flag 与不同 joint 的坐标/速度维度

newton/_src/solvers/solver.py

半隐式预测、局部惯量、kinematic 传递、base reset no-op

newton/_src/utils/import_urdf.py

visual/collision 分离,显式质量、惯量与 scale

newton/_src/utils/import_mjcf.py

角度/四元数解析,显式 inertial 与缩放

newton/_src/utils/import_usd.py

非单位 metadata 的不同路径及 legacy 刚体限制

newton/_src/geometry/inertia.py

box 质量/惯量、旋转与平行轴定理

newton/_src/math/spatial.py

Newton/Warp 空间量排列适配、换点和换系

newton/_src/solvers/xpbd/kernels.py

以实际 COM 力臂与叉积核对 conventions 的符号冲突

E1 还精读上表已有的 builder.py(构建/导入/finalize)、model.py(状态/控制分配)、state.py(字段/assign)、control.py(FREE/DISTANCE 力约定)、XPBD step 与 MuJoCo reset。上游 conventions 存在本章记录的两处符号不一致,不能仅凭文件身份哈希认为其中所有公式都正确。

E2 精读入口#

控制、机器人与任务专题从公开导出、参数、执行分支追到输出数组。以下新增文件与 E1 的 builder/control/XPBD/MuJoCo 入口共同构成 E2 来源;仅核对所引关键分支,不宣称全文件全部功能审查。

文件

本章核对目的

docs/concepts/actuators.rst

原生概念、公开使用流程与当前版本限制

docs/concepts/articulations.rst

原生概念、公开使用流程与当前版本限制

docs/concepts/sites.rst

原生概念、公开使用流程与当前版本限制

newton/_src/actuators/actuator.py

Drive、Delay、Clamping、显式/隐式 effort、状态和输出生命周期

newton/_src/actuators/clamping/clamping_max_effort.py

Drive、Delay、Clamping、显式/隐式 effort、状态和输出生命周期

newton/_src/actuators/delay.py

Drive、Delay、Clamping、显式/隐式 effort、状态和输出生命周期

newton/_src/actuators/drives/drive_pd.py

Drive、Delay、Clamping、显式/隐式 effort、状态和输出生命周期

newton/_src/actuators/drives/drive_pid.py

Drive、Delay、Clamping、显式/隐式 effort、状态和输出生命周期

newton/_src/actuators/effort_mode_explicit.py

Drive、Delay、Clamping、显式/隐式 effort、状态和输出生命周期

newton/_src/actuators/effort_mode_implicit.py

Drive、Delay、Clamping、显式/隐式 effort、状态和输出生命周期

newton/_src/controllers/impl/_common.py

模型型端口、工具 Jacobian 换点、DLS/阻抗的实际输出与能力边界

newton/_src/controllers/impl/differential_ik/_common.py

模型型端口、工具 Jacobian 换点、DLS/阻抗的实际输出与能力边界

newton/_src/controllers/impl/differential_ik/model_based.py

模型型端口、工具 Jacobian 换点、DLS/阻抗的实际输出与能力边界

newton/_src/controllers/impl/differential_ik/model_free.py

模型型端口、工具 Jacobian 换点、DLS/阻抗的实际输出与能力边界

newton/_src/controllers/impl/joint_impedance/model_based.py

模型型端口、工具 Jacobian 换点、DLS/阻抗的实际输出与能力边界

newton/_src/controllers/joint_selection.py

关节 compact 映射、标签、1-DOF 限制与唯一工具 site

newton/_src/controllers/tool_selection.py

关节 compact 映射、标签、1-DOF 限制与唯一工具 site

newton/_src/sim/ik/ik_lm_optimizer.py

目标、residual、候选/采样、LM 与 scalar 限位的实现

newton/_src/sim/ik/ik_objectives.py

目标、residual、候选/采样、LM 与 scalar 限位的实现

newton/_src/sim/ik/ik_solver.py

目标、residual、候选/采样、LM 与 scalar 限位的实现

newton/_src/solvers/featherstone/kernels.py

目标/广义力的具体消费者、内置驱动与限位路径

newton/_src/solvers/featherstone/solver_featherstone.py

目标/广义力的具体消费者、内置驱动与限位路径

newton/_src/solvers/mujoco/kernels.py

目标/广义力的具体消费者、内置驱动与限位路径

newton/_src/solvers/semi_implicit/kernels_body.py

目标/广义力的具体消费者、内置驱动与限位路径

newton/_src/solvers/semi_implicit/solver_semi_implicit.py

目标/广义力的具体消费者、内置驱动与限位路径

newton/actuators.py

公开导出与实验性 API 边界,防止把内部 helper 当公共入口

newton/controllers.py

公开导出与实验性 API 边界,防止把内部 helper 当公共入口

newton/examples/controllers/example_controller_differential_ik.py

核对官方示例是运动学展示还是物理执行;不运行、不复制资产

newton/examples/ik/example_ik_franka.py

核对官方示例是运动学展示还是物理执行;不运行、不复制资产

newton/ik.py

公开导出与实验性 API 边界,防止把内部 helper 当公共入口

E2 特别区分:eval_ik 状态重建与 newton.ik.IKSolver 目标优化;controller 输出接 State 的展示与接 Control 的动力学链;模型 effort_limit、单 actuator clamp 和任意外部力输入的不同作用范围。

E3:接触生成到力读回#

专题正文沿以下入口区分几何、材料、积分、求解和观测。链接都指向同一个 Newton 固定提交;可运行行为仍未验收。

入口

本章实际核对

CollisionPipeline.collide

计数/AABB、过滤/broad phase、writer/narrow phase、matching/sort;容量不能当活跃数

Contacts

body-local support 点、world 法线、margin、可选 spatial force 契约

碰撞过滤

world 与带正负号的 collision group,和位掩码区分

hydroelastic reduction

压力面积积分、等效刚度和 reduction 的有限表示

XPBD.step

临时 joint force、预测积分、位置/速度阶段

XPBD contact kernel

算术材料组合、增量摩擦、COM 力臂、实际 count weighting

恢复 manifold

固定内外迭代、首轮有界负增量与后续非负约束

XPBD force readback

等效 impulse/h;组成和 lifecycle 限制

penalty kernel

SemiImplicit/Featherstone 的均值、覆盖、法向/摩擦与 body force 写入

Featherstone 矩阵

H、armature、Cholesky、缓存更新周期

MuJoCo contact 转换

priority/solmix/max friction 与 solref;非统一平均

VBD / 原生力读回

compliant ALM/legacy 与 body1 力,不冒充通用 Contacts.force

Kamino 配置 / PADMM 收敛

原生 residual 与单位、预算停止/收敛、warm start

Kamino COM wrench

方向与 COM 参考点转换

SensorContact / 构造器

只消费线性力;聚合、friction 分解及加权中点

contact kinematics / 公开出口

几何重建与冻结接触集合导数边界,核实公开 API

外部依赖单列#

为核对 Newton adapter 实际调用,本章读取 独立 MuJoCo-Warp 依赖清单。官方固定 commit 与 Newton uv.lock 锁定的 sdist 逐文件对照通过;它没有混入只代表 Newton 的 sources.json。

  • contact_force_fn:contact wrench 的 world 旋转,没有 COM 换点;与 Newton adapter 合看才确定固定组合的限制。

  • 后端停止规则:scaled improvement/gradient 与 iteration 上限,不能译成物理穿透容差。

  • 积分器分支:Euler damping、RK4、多种速度隐式矩阵和状态推进;积分器与约束优化器分别选择。

专题正文和 E3 验收保留源码发现与未决项;源码身份核对不等于整文件或全部后端通过物理测试。

E4:观测 producer、相机几何与显示后端#

专题正文将申请存储、producer、更新时间和 consumer 分开;没有 native import、渲染或物理执行。以下为固定实现的阅读入口,具体行号见正文。

入口

本章实际核对

公开 sensor 导出

四类 sensor;不依概念页的计数字样推断额外能力

FrameTransform

shape/site 配对、广播、world 相对变换、只读 body_q

IMU

body_qdd 申请与消费者、COM/site 加速度、重力、输出轴

MuJoCo producer

RNE 申请/禁用检查、step/FK/扩展字段转换阶段

Contact

flat sensing rows、per-world counterpart 列、可选 State 与缓存清理

shape BVH

VISIBLE 默认 mask、build/refit、model 共享缓存

射线查询

newton.intersect_ray 的 world/global roots、距离/normal/miss

TiledCamera

七类通道、输入输出维度、sync_transforms 范围

相机射线

pinhole/标定反解、坐标轴、像素中心、无效零射线

图像工具

输出分配、原始图像与显示 RGBA 变换

render/context

是否存在几何、shape 校验、复用输出与实际 launch

render writer

ray/forward depth、world normal、hit/miss 与禁用反传

默认值/特殊 ID

ClearData、RenderConfig;另沿 raytrace.py 识别集合 ID

ViewerBase

begin/log/end 与显示布局;log_image 基类 no-op

GL viewer

log_image override、最后 framebuffer RGB、host/GPU 读回

GL context

headless 仍建立隐藏图形上下文

RTX adapter

OVRTX/OVStage 依赖和异步呈现上一帧

File recording

克隆直接 State 数组;不同于完整 solver checkpoint

USD samples

int(time*fps) 量化与 close 保存

宿主与显示指南

Rerun/Viser/RTX/文件模式和上游验证边界

来源身份、静态检查、保留问题与下一阶段见 E4 验收。没有把图像尺寸、数组分配或窗口存在当作有效观测证明。

E5:world 隔离、学习时序与数据生命周期#

专题正文与静态例子串起实体布局、选择性重置、策略输入和保存/回放。

入口

本章实际核对

worlds / replicate

B+2 starts、global 前后段、复制对象生命周期、同构/异构边界

Control.clear / State.assign

target quaternion、全量与局部 reset、namespace 与 graph 地址

MuJoCo.reset / VBD.reset

权威状态、flags、后端历史和更新阶段;基类/XPBD 不是自动恢复初值

policy / 推进顺序

12+3n 观测、关节映射、外部 ONNX、capture 范围、物理/展示时间差异

ViewerFile

顶层 State clone、Model 引用、playback 别名、缺失的 checkpoint/时间信息

custom attributes

归属/频率/namespace、合并时实体和 world 引用重映射

Warp runtime / CPU graphs

不重放任意 Python;CPU graph 的实验性与操作集合

Warp 数组 / Torch 互操作

host 读回、共享视图、同步与流、梯度所有权

Warp RNG

seed/offset、局部 RNG 状态、跨 launch 重复;不是全系统随机种子

Warp 身份保存在独立清单,没有混入 Newton manifest;外部策略 runtime、Torch 和 Isaac Lab 的完整实现未在本章验收。详细保留项和检查见 E5 验收。

E6:材料、原生耦合与完整导数链#

专题正文和原创阻力例子以实际消费者区分共同 API 与具体算法;B7 串联前述 E1–E5 的字段到观测链。

入口

本章实际核对

SolverBase

基类 no-op/拒绝、reset、step、读回与碰撞调度

tet forces

材料参数乘体积、偏量因子;与 VBD 比较

VBD tetrahedron

Lamé 变换、guard、cofactor 与单顶点 block Hessian

Style3D

输入位置原地修改;另追 PD matrix 和 PCG 固定预算

ImplicitMPM

FEM 流变/粒子状态顺序、实际网格速度消费者;reset/隔离/graph 分支

MPM stopping

残差缩放、检查粒度、host/graph 停止条件

Kamino DVI

bilateral direct solve 与着色 unilateral 迭代交替

Moreau

configuration 半步、midpoint forward、更新 twist 后半步

Coupling contract

ModelView、ownership、hooks、有效质量与重力责任

Proxy restart

inner iterations 重解同一区间、反馈松弛

ADMM joint mapping

支持 BALL/FIXED/REVOLUTE,跳过 FREE/DISTANCE,拒绝其他类型

ADMM local/dual

实际加权速度更新;dual 不冒称物理力

Warp Tape

逆序 adjoint、loss 前提、禁用 backward 分支

Warp differentiation

前向覆写、梯度消费与 retain_grad 限制

Newton 来源进入 sources.json;两项 Warp 来源独立进入 E6 Warp 清单,与 E5 相同固定 commit。公式前提、源码缺项和静态检查见 E6 验收,没有以导数存储或例子语法通过代替 native/gradient 验证。

Course source · GitHub · License