论文链接:https://arxiv.org/pdf/2106.14440.pdf
主要目的
使机器人更好地感知和操控3D铰接物体,如柜子、门等
主要思路
如下图所示,给定一个输入物体后,框选出互动的具体范围,再依次选择最合适的交互点和操作轨迹。
具体流程
给定物体 O O O和它的铰链部分 P = { P 1 , P 2 , ⋯ } \mathscr{P}=\{P_1,P_2,\cdots\} P={P1,P2,⋯},交互类型为 T T T,操作任务为 θ \theta θ,我们训练了一个感知系统,会对 P \mathscr{P} P上的每一个点 p p p进行稠密估计,得到 p p p点的可操作性评分 a p ∣ O , T , θ ∈ [ 0 , 1 ] {a_{p|O,T,\theta}\in[0,1]} ap∣O,T,θ∈[0,1],用来表示在 p p p找到一个 T T T类的运动轨迹完成任务 θ \theta θ的概率。运动轨迹的集合定义为 P p ( ∣ O , T , θ ) \mathbb{P}_p(|O,T,\theta) Pp(∣O,T,θ)。从而,我们可以采样不同的轨迹 τ p ∣ O , T , θ \tau_{p|O,T,\theta} τp∣O,T,θ以及其对应的成功完成任务可能性 r τ ∣ O , p , T , θ ∈ [ 0 , 1 ] r_{\tau|O,p,T,\theta}\in[0,1] rτ∣O,p,T,θ∈[0,1]。
输入
将物体 O O O以点云的形式 S O S_O SO输入。考虑两种典型的交互方式:推和拉。仅仅考虑一自由度的关节,从而任务 θ ∈ R \theta\in\mathbb{R} θ∈R。针对棱柱形关节,如抽屉,使用长度来衡量任务 θ \theta θ(柜子被推进去或者拉出来多少), θ ∈ [ − 1 , 1 ] \theta\in[-1,1] θ∈[−1,1];针对旋转关节,比如冰箱门,使用弧度来衡量任务 θ \theta θ(冰箱门被打开或者合上了多少), θ ∈ [ − π , π ] \theta\in[-\pi,\pi] θ∈[−π,π]。
输出
p p p点的可操作性评分 a p ∣ O , T , θ a_{p|O,T,\theta} ap∣O,T,θ(衡量点的潜力)以及其每条轨迹的成功可能性得分 r τ ∣ O , p , T , θ r_{\tau|O,p,T,\theta} rτ∣O,p,T,θ(衡量轨迹的好坏)的取值都在 [ 0 , 1 ] [0,1] [0,1]之间。越高的得分意味着更高的可能性。 τ p ∣ O , T , θ \tau_{p|O,T,\theta} τp∣O,T,θ由一些列6自由度的位置点构成。
网络结构
VAT-MART系统,如下图所示,包括两个部分:一个探索不同行动轨迹的RL策略和一个学习所提出的可操作视觉先验的感知系统。RL策略收集交互轨迹来监督感知网络,而感知系统提供了好奇心反馈,以鼓励RL策略进一步探索不同的解决方案。在我们的实现中,我们首先对RL策略进行预训练,然后用RL收集的数据训练感知网络,最后开启好奇心反馈,对两部分进行微调。
RL模块
RL使用TD3网络来生成可能的轨迹,来监督感知模块(perception)的学习。在测试模块,只使用感知模块。
任务初始化
首先对待交互的物体形状进行随机采样,使选到不同形状物体的概率相同。对于任务 θ \theta θ,选择为[10°,70°]或者[0.1,0.7]。设定初始状态 θ 0 \theta_0 θ0,保证任务 θ \theta θ可以被完成。
状态空间
一自由度位姿变化 Δ θ i = θ i − θ 0 \Delta\theta_i=\theta_i-\theta_0 Δθi=θi−θ0,初始状态机械臂夹子的位姿 w p 0 = ( x 0 , R 0 ) ∈ S E ( 3 ) wp_0=(x_0,R_0)\in SE(3) wp0=(x0,R0)∈SE(3),当前状态机械臂夹子的位姿 w p i = ( x i , R i ) ∈ S E ( 3 ) wp_i=(x_i,R_i)\in SE(3) wpi=(xi,Ri)∈SE(3)。夹子的局部位置 x f ∈ R 2 x_f\in\mathbb{R}^2 xf∈R2,当前互动点的位置 p i ∈ R 3 p_i\in\mathbb{R}^3 pi∈R3,铰链关节轴的法向方向 n j ∈ R 3 n_j\in\mathbb{R}^3 nj∈R3,铰链关节的位置 x j ∈ R 3 x_j\in\mathbb{R}^3 xj∈R3(定义为铰链关节轴上最靠近互动点 p p p的点) p p p点到铰链关节轴的最短距离定义为 d c j ∈ R d_{cj}\in\mathbb{R} dcj∈R, x j x_j xj到 p p p的方向向量定义为 n c j ∈ R 3 n_{cj}\in\mathbb{R}^3 ncj∈R3。将这些信息结合成一个33维的向量送入到RL中。
行动空间
在每个时间步长,我们预测夹子姿态变化 w p i − w p i − 1 ∈ S E ( 3 ) wp_i−wp_{i-1}\in SE(3) wpi−wpi−1∈SE(3),以确定下一步路径点 w p i wp_i wpi,并且作为RL网络的动作输出。我们估计了一个中心偏移量 x i − x i − 1 ∈ R 3 x_i−x_{i−1}\in\mathbb{R}^3 xi−xi−1∈R3和一个欧拉角差 R i − R i − 1 ∈ S O ( 3 ) R_i−R_{i−1}\in SO(3) Ri−Ri−1∈SO(3)。
回报设计
这里主要介绍任务回报,好奇心回报在后续介绍。
1)任务完成,给予500的回报值。
2)奖励向任务完成靠近的步骤,即
∣
θ
−
Δ
θ
i
−
1
∣
−
∣
θ
−
Δ
θ
i
∣
>
0
|\theta-\Delta\theta_{i-1}|-|\theta-\Delta\theta_{i}|>0
∣θ−Δθi−1∣−∣θ−Δθi∣>0的步骤,给300的回报值。
3)当夹子尖和互动点
p
p
p距离
d
g
c
d_{gc}
dgc较远时,给予惩罚
100
⋅
1
[
d
g
c
>
0.1
]
+
50
d
g
c
100\cdot1[d_{gc}>0.1]+50d_{gc}
100⋅1[dgc>0.1]+50dgc。(当$d_{gc}>0.1时,
1
[
d
g
c
>
0.1
]
=
1
1[d_{gc}>0.1]=1
1[dgc>0.1]=1,否则为0)。
结束依据
任务完成或者运行了五个步骤。
感知模块
感知模块以RL模块收集的轨迹为输入,输出 p p p点的可操作性评分 a p ∣ O , T , θ ∈ [ 0 , 1 ] {a_{p|O,T,\theta}\in[0,1]} ap∣O,T,θ∈[0,1]、运动轨迹的集合 P p ( ∣ O , T , θ ) \mathbb{P}_p(|O,T,\theta) Pp(∣O,T,θ)以及每条轨迹对应的成功完成任务的可能性 r τ ∣ O , p , T , θ ∈ [ 0 , 1 ] r_{\tau|O,p,T,\theta}\in[0,1] rτ∣O,p,T,θ∈[0,1]。
输入编码器
使用PointNet++得到物体的点云 S O S_O SO,每一个点的特征 f s f_s fs是一个128维的向量。使用三个MLP分别将交互点 p p p、轨迹 τ \tau τ以及任务 θ \theta θ转换为 f p ∈ R 32 , f τ ∈ R 128 , f θ ∈ R 32 f_p\in\mathbb{R}^{32},f_\tau\in\mathbb{R}^{128},f_\theta\in\mathbb{R}^{32} fp∈R32,fτ∈R128,fθ∈R32。在将所有路径点信息扁平化后,我们将每个轨迹序列转化为一个30维向量。
Actionability Prediction Module
用来输出可操作性评分 a p ∣ O , T , θ ∈ [ 0 , 1 ] {a_{p|O,T,\theta }\in[0,1]} ap∣O,T,θ∈[0,1],输入点云 S O S_O SO,输出可操作性评分组成的图 A O , T , θ A_{O,T,\theta} AO,T,θ。
Trajectory Proposal Module
该模块通过一个条件自动编码器(cVAE)构成,包含了一个轨迹编码器:用来将输入轨迹 E τ E_\tau Eτ变成高斯噪声 z z z,一个轨迹解码 D τ D_\tau Dτ:用来从噪声重构输入轨迹。将得到的噪声向量正则化以接近均匀高斯分布。这样当输入随机高斯噪声时,可以得到不同的轨迹提议。
Trajectory Scoring Module
用来输出轨迹的成功率 r τ ∣ O , p , T , θ ∈ [ 0 , 1 ] r_{\tau|O,p,T,\theta}\in[0,1] rτ∣O,p,T,θ∈[0,1]。
训练数据集
使用RL收集的成轨迹作为正样本,在成功轨迹上加随机量作为负样本,来训练感知模块。
训练
Trajectory Scoring Module(轨迹得分)
D
s
D_s
Ds模块使用交叉熵函数训练。
cVAE的训练,除了正则化高斯瓶颈噪声的KL散度损失外,我们使用L1损失来回归轨迹路径点位置,使用6d旋转损失来训练路径点朝向。
Actionability Prediction Module模块的训练,用
D
τ
D_\tau
Dτ随机生成100个轨迹,使用
D
s
D_s
Ds来生成轨迹成功率,使用得分最高的五个轨迹成功率的均值作为真值,损失函数使用
L
1
L_1
L1损失。
好奇心探索
主要目的是让感知网络反向影响RL策略学习,让RL模块探索更多样化和新颖的交互轨迹。