PosA-VLA — Pose-Conditioned Anchor Attention

Li et al. 2025 · arXiv:2512.03724v2 · 用末端位姿投影监督 VLA 注意力,提升动作精度与效率

速览
问题定位
方法·架构
训练·损失
实验·Benchmark
对课题启发
代码状态
自测
可靠性说明:本页依据 PDF 原文 /home/chenzhiyuan/Zotero/storage/35A52HF9/Li 等 - 2025 - PosA-VLA Enhancing Action Generation via Pose-Conditioned Anchor Attention.pdf 提取分析;本地与公开搜索暂未找到官方代码仓库,因此代码印证部分标注为“源码未找到,机制以论文描述为准”。

一句话结论

PosA-VLA 的核心不是再让 VLM/SAM 帮机器人找目标,而是把机器人自己的 end-effector pose 投影到 head/wrist camera 的 2D 图像平面上,生成 task-relevant anchor 和 end-effector anchor,用它们监督 VLA 的视觉注意力。这样模型在执行过程中持续看“目标区域 + 末端当前位置”,减少无效扫描、反复修正和冗余动作。

它对当前 2D 路线的价值在于:如果平台有末端位姿/相机外参,完全可以不用外部 SAM/检测器,而用机器人自身运动状态构造可监督的视觉注意力锚点。这是 VP-VLA/TraceVLA 之外的第三类 2D 引导机制。

30 秒逻辑链

问题:VLA 注意力空间均匀
动作抖动/冗余/慢
原因:没有把末端位姿和视觉关注区域绑定
方法:投影 EE pose 生成 Gaussian anchor map
训练:anchor loss + contrastive loss + FMT action loss
效果:真实抓取/长程/LIBERO/低数据更稳更快

速览卡片

内容
单位MBZUAI / AI2 Robotics / University of Sydney / University of Melbourne
核心机制Pose-conditioned anchor attention:task anchor + end-effector anchor 双注意力监督
视觉 backboneCLIP-Base text/image encoder 生成 anchor attention;DINOv2-Base dense features 被 anchor weight refine
动作头Flow Matching Transformer,action chunk length = 30,inference flow steps = 10
真实平台AlphaBot 1s,7-DoF manipulator,head camera + wrist camera
关键结果真实抓取 Avg 55.3,Basic 74.9;长程 Overall 61.1;训练 20 GPU hours;总执行 12.9s
主要局限依赖 gripper open/close 等末端状态变化生成 task anchor;对 pushing/sliding、重遮挡场景较弱

论文的问题定义

作者观察到现有 VLA 在真实抓取中经常不是“看不懂目标”,而是动作轨迹不稳定:末端和目标抓取点之间的距离曲线反复波动,动作会绕路、回撤、过度修正,导致任务慢、接触不稳、抓取失败或撞到附近物体。

论文把原因归结为 spatially uniform perception field:模型注意力过于平均地扫整个图像,缺少一个随机器人自身状态变化的内部空间锚点。

它和外部视觉 grounding 方法的不同

路线代表问题PosA-VLA 的差异
外部检测/分割SAM / GroundingDINO / DexGraspVLA 类依赖外部模型;分割错了下游策略难以纠正不使用辅助 perception module,用机器人 pose 构造监督
视觉提示接口VP-VLASystem-2 需要解析目标并画 crosshair/bboxanchor 来自示教轨迹中的末端 pose,不是 VLM planner 输出
历史轨迹提示TraceVLA把历史运动画给 VLA 看,但不直接监督内部 attention直接监督 attention weight,并用 EE anchor 保持闭环空间意识

整体架构

Instruction x
CLIP text encoder
fx, fe
+
Head/Wrist images
CLIP image encoder
patch features FI
Cross-attention
Mtask, Mend
EE 3D pose pt
project to 2D camera plane
Gaussian maps
Ftask, Fend
anchor supervision
DINOv2 features FDINO
× Mt
refined visual features Fvref
+
text + robot state
Flow Matching Transformer
continuous action chunk

双 anchor 定义

Anchor什么时候生成监督什么直觉
Task-relevant anchor Ftaskgripper open/close 等 end-effector state change 时刻模型应该关注真实交互区域/目标区域“任务关键点在哪里”
End-effector anchor Fend每个 timestep模型应该持续知道末端当前位置“我的手现在在哪里”
Mt = [Mtaskt, Mendt] ∈ [0,1]H×W×2

task anchor 用较宽 Gaussian,end-effector anchor 用更窄 Gaussian,论文设置 σend < σtask

Anchor map 生成

把末端 3D pose p_t = [x_t, y_t, z_t, R_t] 通过 camera-end-effector transformation 投影到 head/wrist camera 的像素坐标,再以该点为中心生成 Gaussian map:

F(i,j) = exp( - ((i-ut)² + (j-vt)²) / (2σ²) )

这一步要求具备相机与末端之间的标定/变换关系。论文强调这种监督来自机器人自身 pose,不需要人工 mask 或外部分割模型。

Anchor Loss

Loss作用
Spatial attention loss Lf用 Focal Loss 监督预测的 anchor attention weight Mt 对齐 Gaussian anchor maps。
Batch-wise contrastive loss Lc在 batch 内对 text-image fused embeddings 做 pairwise BCE;同一 instruction 为正,不同 task 为负。
Anchor lossLanchor = α Lf + (1-α) Lc,默认 α=0.5。
Total lossLtotal = Laction + λ Lanchor,论文设置 λ=1.0。

Flow Matching 动作生成

动作 chunk 为 At = [at,...,at+H-1]。训练时从高斯噪声 z0 到目标动作 At 构造线性插值:

xτ = (1-τ)z0 + τAt
Laction = Eτ || v̂θ - (At - z0) ||²

推理时用 ODE solver 从噪声积分到 clean action chunk。论文称这种方式避免 iterative denoising,动作更平滑高效。

训练超参数

训练 GPUsingle NVIDIA A100
推理 GPUNVIDIA RTX 4090
batch size16
训练步数200k steps;先用 anchor loss 预训练 20k steps
学习率3.0e-4
optimizerAdamW, betas [0.95, 0.999], weight decay 1e-6
flow time samplingBeta(α=1.5, β=1.0), range [0.001, 1.0]
inference steps10
action chunk length30

真实机器人设置

内容
平台AlphaBot 1s,7-DoF manipulator,head-mounted camera + wrist-mounted camera
训练数据每个 object 200 demonstrations;桌面 5×5 grid,每个中心 8 次 teleoperation;随机目标 in-plane pose 和 distractors
测试协议每个目标随机放置 100 次;每次额外放 4 个 distractor;位置均保证训练未见
评测条件Basic, Unseen Background, Unseen Lights, Distractor Objects, Unseen Objects
长程任务打开盒盖、把盒盖放到一边、抓取指定物体、放入盒中;整体成功要求所有阶段成功

真实抓取主结果

方法BasicUnseen BGUnseen LightsDistractorUnseen ObjectsAvg
π043.130.223.627.933.431.6
OpenVLA-OFT21.617.26.118.410.314.7
Smol-VLA20.315.87.916.58.713.8
DexGraspVLA57.251.245.051.148.150.5
π0.5 LoRA38.531.222.425.330.829.6
π0.5 Full60.852.541.348.638.948.4
PosA-VLA74.957.247.856.140.755.3
注意:Unseen Objects 上 DexGraspVLA 更高,因为它依赖大规模 pretrained grounding/segmentation 先验;PosA-VLA 的优势是不用外部感知模块且平均更强。

长程盒子任务

方法Open & Put downPick upOverall
π097.250.042.6
OpenVLA-OFT73.215.813.0
Smol-VLA88.526.419.1
PosA-VLA97.263.061.1

效率

方法Training Time (h)Avg Time/action (ms)StepsTotal (s)
π0 JAX2527.056315.2
OpenVLA-OFT10438.955821.7
Smol-VLA1923.162414.4
DexGraspVLA9049.657728.6
PosA-VLA2024.552612.9

PosA-VLA 不是单步最快,但因为动作更直接,平均 steps 最少,总执行时间最短。

消融与数据效率

变体Avg Success说明
Full74.9完整 anchor loss + contrastive + EE attention
w/o Anchor Loss29.5核心空间监督被移除,性能大幅崩溃
w/o Batch-wise Contrastive Loss57.8跨样本 text-image 对齐变差
w/o End-effector Attention55.6缺少末端当前位置意识,轨迹不稳
方法50 samples100 samples200 samples
π037.442.543.1
OpenVLA-OFT5.314.921.6
Smol-VLA0.018.720.3
DexGraspVLA40.149.257.2
PosA-VLA51.268.974.9

LIBERO 附录实验

方法SpatialObjectLongAverage
Smol-VLA93.094.077.088.0
OpenVLA-OFT95.294.293.294.2
π0-FAST*96.496.860.284.5
π0*96.898.885.293.6
OpenVLA-OFT*97.698.494.596.8
PosA-VLA95.698.691.295.1

* 表示使用过滤 unsuccessful demonstrations 的 modified training dataset。作者强调 PosA-VLA 不依赖这种数据清洗也能达到 95.1 平均。

对当前课题的启发

方向PosA-VLA 给出的证据对我们怎么用
2D RGB 不等于只能用图像用末端 3D pose 投影到 2D,形成视觉监督如果 Realman 有末端 pose/相机标定,可做 pose-aware 2D attention / verifier。
不用 SAM 也能做空间锚定anchor 来自机器人自身示教轨迹,而非 segmentation适合担心 SAM/检测器不稳定的真机平台。
关注“手在哪里 + 目标在哪里”w/o EE attention 从 74.9 降到 55.6你的触觉/闭眼摸方向可以把“手-物体相对关系”作为 belief 更新核心。
动作效率是可投稿卖点总执行时间 12.9s 最短,steps 最少除 success rate 外,应统计冗余动作、action reversal、轨迹长度、时间。

和 VP-VLA / TraceVLA / ProgressVLA 的边界

工作核心PosA-VLA 区别
VP-VLAVLM planner + SAM3 生成 crosshair/bbox不依赖 planner/segmentation;用末端 pose 自监督 attention。
TraceVLACoTracker 历史 visual trace 作为输入提示不画历史轨迹给模型看;直接监督内部 attention map。
ProgressVLAprogress gradient 引导 action diffusion不是进度评分,而是 pose-conditioned spatial attention alignment。
OASIS预测 SE(3) 轨迹作为动作空间对齐中间表示不预测未来 SE(3) 轨迹;只用 pose projection 监督 2D attention。
对 2D-RPF/CAPE 的限制:如果我们也用末端 pose 投影/anchor attention,就必须承认 PosA-VLA 已经做了“pose-conditioned anchor attention”。新的贡献应放到“候选动作后果验证/触觉 belief/闭眼操作阶段切换”,而不是只复现 anchor loss。
可复用 trick:把 PosA-VLA 的 pose anchor 当成 RPF/CAPE 的一个可解释观测通道:候选动作如果让 projected EE trajectory 朝 task anchor 收敛,给高分;如果远离目标 anchor 或频繁反向,给 rejection。这样它从“训练 attention 的 loss”变成“推理时动作候选验证特征”。

代码状态

本轮检查结果:

  • 本地未找到 PosA-VLA 对应代码仓库。
  • 公开搜索暂未确认官方 GitHub 仓库。
  • 因此本页不写“代码文件/类/函数映射”,避免臆造。

按论文可复现的核心伪代码

def make_anchor_maps(ee_pose, cameras):
    maps = []
    for cam in cameras:  # head, wrist
        u, v = project_ee_pose_to_image(ee_pose, cam.extrinsic, cam.intrinsic)
        F_end = gaussian(center=(u, v), sigma=sigma_end)
        if gripper_state_changed(ee_pose):
            F_task = gaussian(center=(u, v), sigma=sigma_task)
        else:
            F_task = zeros_like(F_end)
        maps.append(stack([F_task, F_end]))
    return maps

def forward(batch):
    fx = clip_text(batch.instruction)
    fe = clip_text("gripper")
    FI = clip_image(batch.head_img, batch.wrist_img)
    M_task = cross_attention(fx, FI)
    M_end = cross_attention(fe, FI)
    M = stack([M_task, M_end])
    F = make_anchor_maps(batch.ee_pose, cameras)
    L_anchor = 0.5 * focal_loss(M, F) + 0.5 * batch_contrastive(fx, FI, F)
    F_ref = M * dinov2(batch.images)
    action = flow_matching_transformer(F_ref, fx, batch.robot_state)
    L_action = flow_matching_loss(action, batch.action_chunk)
    return L_action + lambda_anchor * L_anchor

自测

  1. PosA-VLA 的 task anchor 和 end-effector anchor 分别监督什么?
  2. 为什么它不需要 SAM/GroundingDINO 等外部感知模块?
  3. w/o Anchor Loss 从 74.9 掉到 29.5,说明了什么?
  4. 为什么 Unseen Objects 上 DexGraspVLA 比 PosA-VLA 强?这是否否定 PosA-VLA?
  5. PosA-VLA 和 VP-VLA 都用了 2D 空间锚点,它们的来源有什么本质不同?
  6. 如果把 PosA-VLA 用到 RPF/CAPE,应该直接复现 anchor loss,还是改成候选动作验证特征?为什么?