STDArm 论文
将静态转化为动态时,面临几个问题:1)推理延迟高;2)Action Chunk 的方式导致对环境响应能力差。过去的方法都采用减少扩散策略的去噪步数以提升整体推理频率(加速策略本身推理频率),STDArm 则采用动作管理器和 插值动作补偿。——相比于压缩算法,优化执行架构的方式也可以提升频率。(STDArm 部署在边缘设备 Jetson Xavier 上)
策略网络的输入是
m
o
m_o
mo 步观测数据 O,末端执行器的位置坐标(u)。采用 ResNet18作为视觉骨干,然后接 DP,
m
o
=
2
,
m
a
@
5
H
z
=
8
m_o =2,m_a@5Hz=8
mo=2,ma@5Hz=8(与 DP 原文一致)。
当策略网络
π
\pi
π 在
t
1
t_1
t1 时刻读取观测
O
t
1
−
m
o
+
1
:
O
t
1
O_{t_1-m_o+1}:O_{t_1}
Ot1−mo+1:Ot1 ,经过
t
I
n
f
t_{Inf}
tInf 时延后生成动作序列
u
t
1
:
u
t
1
+
m
a
u_{t_1}:u_{t_1+m_a}
ut1:ut1+ma,动作管理器在
t
2
≈
t
1
+
t
I
n
f
t_2≈t_1+t_{Inf}
t2≈t1+tInf 时刻将其与缓冲区
A
\mathcal{A}
A (
A
=
{
A
t
,
t
∈
N
}
\mathcal{A}=\{A_t,t\in N\}
A={At,t∈N} 按序存储已执行动作和待执行动作)融合。
在
t
1
t_1
t1 与
t
2
t_2
t2 对齐的过程中,直接时间戳对齐会导致动作回溯,通过滑动窗口搜索最佳对齐位置:
t
u
=
a
r
g
m
i
n
t
∑
k
∈
K
d
(
u
t
+
k
,
A
t
2
+
k
)
∣
K
∣
,
t
∈
[
t
2
−
m
s
,
t
2
+
m
s
]
t_u = argmin_{t} \frac{\sum_{k\in K} d(u_{t+k}, A_{t2+k})}{|K|}, \quad t\in[t2-m_s,t2+m_s]
tu=argmint∣K∣∑k∈Kd(ut+k,At2+k),t∈[t2−ms,t2+ms]
其中 d(·) 表示欧式距离,K 为 u 与 A的重叠区间,
m
s
m_s
ms 为预设搜设范围。
然后模仿 ACT 的设计,进行时序平滑:
A
t
2
+
k
=
{
w
o
l
d
⋅
A
t
2
+
k
+
w
n
e
w
⋅
u
t
u
+
k
,
0
≤
k
≤
∣
A
∣
−
t
2
u
t
u
+
k
,
k
>
∣
A
∣
−
t
2
A_{t2+k} = \begin{cases} w_{old}·A_{t2+k} + w_{new}·u_{t_u+k}, & 0\leq k\leq |A|-t2 \\ u_{t_u+k}, & k > |A|-t2 \end{cases}
At2+k={wold⋅At2+k+wnew⋅utu+k,utu+k,0≤k≤∣A∣−t2k>∣A∣−t2
w
t
+
i
n
e
w
=
exp
(
−
α
i
)
,
i
∈
[
1
,
m
a
]
,
w
t
o
l
d
=
w
t
o
l
d
+
w
t
n
e
w
.
\begin{aligned} & w_{t+i}^{\mathrm{new}}=\exp(-\alpha i),i\in[1,m_{a}], \\ & w_{t}^{\mathrm{old}}=w_{t}^{\mathrm{old}}+w_{t}^{\mathrm{new}}. \end{aligned}
wt+inew=exp(−αi),i∈[1,ma],wtold=wtold+wtnew.
针对策略输出频率与执行需求之间差距,在相邻动作间实时插值:
A
τ
=
(
τ
−
t
)
A
t
+
(
t
+
1
−
τ
)
A
t
+
1
,
τ
∈
[
t
,
t
+
1
]
A_τ = (τ-t)A_t + (t+1-τ)A_{t+1}, \quad τ\in[t,t+1]
Aτ=(τ−t)At+(t+1−τ)At+1,τ∈[t,t+1]
在处理高频动作时,传统方法实时监测机械臂的运动并利用他们来细化动作,但由于计算、通信、控制延迟的问题,数据是过时的。设计了一个基于预测补偿的稳定器,预测平台在短时间内未来的运动,并修改动作以有效抵消运动。
采用实时高频 SLAM(立体相机+IMU)输出位姿序列,以当前位姿
p
0
p_0
p0 为基准坐标系,计算过去
l
0
l_0
l0 帧的相对位姿序列:
Δ
P
−
l
0
:
−
1
=
{
Δ
p
−
l
0
,
…
,
Δ
p
−
1
}
,
Δ
p
−
i
=
p
0
−
1
p
−
i
\Delta P_{-l_0:-1} = \{\Delta p_{-l_0}, \dots, \Delta p_{-1}\}, \quad \Delta p_{-i} = p_0^{-1} p_{-i}
ΔP−l0:−1={Δp−l0,…,Δp−1},Δp−i=p0−1p−i
预测网络采用 LSTM 与 GRU 并行处理输入,特征为维度拼接后经全连接层输出:(1.2ms,相比纯 LSTM 降低 37% 计算负载)
Δ
P
1
:
l
1
∗
=
M
(
Δ
P
−
l
0
:
−
1
)
M
(
x
)
=
FC
(
concat
(
LSTM
(
x
)
,
GRU
(
x
)
)
)
\begin{aligned} \Delta P^*_{1:l_1} &= \mathcal{M}(\Delta P_{-l_0:-1}) \\ \mathcal{M}(x) &= \text{FC}(\text{concat}(\text{LSTM}(x), \text{GRU}(x))) \end{aligned}
ΔP1:l1∗M(x)=M(ΔP−l0:−1)=FC(concat(LSTM(x),GRU(x)))
对于目标动作
A
τ
A_\tau
Aτ ,计算由机器人运动引起的动作偏移量:
δ
(
τ
,
Δ
t
,
E
)
=
E
−
1
(
Δ
p
⌈
−
Δ
t
τ
/
f
⌉
−
1
Δ
p
⌊
Δ
t
/
f
⌋
∗
)
−
1
E
\delta(\tau, \Delta t, E) = E^{-1} \left( \Delta p^{-1}_{\lceil -\Delta t_\tau /f \rceil} \Delta p^*_{\lfloor \Delta t/f \rfloor} \right)^{-1} E
δ(τ,Δt,E)=E−1(Δp⌈−Δtτ/f⌉−1Δp⌊Δt/f⌋∗)−1E
- E:视觉SLAM坐标系与机械臂坐标系的外参(预先标定);
- Δ t τ \Delta t_\tau Δtτ:策略网络生成 A τ A_\tau Aτ 到执行的时间间隔;
- f:SLAM系统输出频率;
- Δt:位姿估计到动作执行的总延迟。采用从零开始的延迟线性搜索方法,将标记物移动最小时的延迟确定为系统延迟。为确保机器人运动变化不影响延迟估计的准确性,我们采用标记物像素平面运动速度与VSLAM估计平台运动速度之比作为评估指标。
ρ
=
∥
v
marker
∥
pixel
∥
v
platform
∥
VSLAM
\rho = \frac{\|v_{\text{marker}}\|_{\text{pixel}}}{\|v_{\text{platform}}\|_{\text{VSLAM}}}
ρ=∥vplatform∥VSLAM∥vmarker∥pixel
补偿后的动作为: A τ ′ = δ ( τ , Δ t , E ) A τ A'_\tau = \delta(\tau, \Delta t, E) A_\tau Aτ′=δ(τ,Δt,E)Aτ
设计了三个任务,验证精度:
- 方块投放:抓取3cm宽度的木块并投入直径8cm的笔筒;
- 圆柱堆叠:将两个直径8cm的圆柱体垂直堆叠;
- 外卖取件:准确抓取外卖袋提手并完成提升动作。
实验结果