通过模仿的机器人编程框架
摘要
本文描述了一种通过人类任务演示来编程工业机器人的框架。该框架利用对人臂演示动作的模仿来进行机器人轨迹生成。这种模仿原理基于人臂与机器人之间的基于运动学模型的映射策略。该框架还采用先进的基于概率模型的泛化架构,以消除演示中的不一致性,并获取机器人的可执行轨迹。该方法在六自由度工业机器人喷漆操作中的实现得到了展示。实验结果表明,该框架能够为复杂应用生成精确轨迹。
关键词 机器人编程 · Imitation · Generalization
1 引言
编程工业机器人所涉及的复杂性限制了其在中小型企业的适用性。在过去三十年中,这一问题已在多项研究中得到解决,并且文献中报道了多种替代方法[1]。通过演示或模仿学习进行机器人编程就是一种能够极大简化机器人编程复杂性的直观方法。模仿学习方法的核心意图是向机器人演示必要任务,机器人通过模仿演示动作直观地学习。演示可由人类教师或另一个机器人给出。此外,通过模仿学习所需掌握的技能也各不相同。机器人学习者可以模仿向其展示的动作、行为或轨迹[2]。对于工业机器人而言,轨迹级模仿是一种教授必要任务的简单直接的方法。机器人可在关节空间或任务空间中采用所演示的轨迹进行执行。
本文提出了一种通过直接模仿人臂运动对工业机器人进行编程的多步框架。第一步,通过直接模仿演示动作,为机器人建立可执行轨迹。所采用的模仿原理基于贾和奇达瓦尔[3]讨论的基于运动学模型的变换策略,此处利用多传感器数据融合实现精确的运动跟踪。该框架的第二步是轨迹泛化,即对同一任务的多条轨迹进一步处理,以获取一条可供机器人执行的轨迹。为此,采用了基于概率模型的泛化框架[4]。该框架的应用以六自由度工业机器人的喷漆操作为例进行了展示。
本文的其余部分组织如下。第2节描述了所开发框架的概述。实验过程在第3节中进行描述,接着在第4节中给出实验观察。
2 框架概述
本工作所描述的机器人编程架构包含两个阶段,即轨迹生成阶段和泛化阶段。
轨迹生成阶段利用人类演示者对所需轨迹的演示来进行末端执行器轨迹建模。
所建模的轨迹将在泛化阶段进一步处理,以获取机器人的可执行轨迹。该方法的各个方面将在以下章节中进行描述。
2.1 轨迹生成阶段
模仿是向机器人教授特定任务的最简单方式之一。在此工作中,轨迹生成阶段利用对人类演示动作的模仿来实现机器人的末端执行器轨迹建模。为此,文献[3]中讨论的基于运动学模型的模仿框架被修改并用于末端执行器轨迹建模。该模型能够以手部轨迹的形式表示人臂的运动。由此生成的手部轨迹将成为机器人模仿的参考轨迹。
轨迹生成框架利用多传感器融合技术系统地跟踪演示动作。使用 Kinect传感器和惯性传感器来捕捉人手在运动过程中的位置和姿态数据
运动跟踪。传感器融合提供了任务演示期间手的完整描述。此过程涉及的步骤如图1所示。在任务演示期间,基于Kinect的动作捕捉系统提供手部的三维位置(x、y、z坐标)。安装在演示者手腕上的惯性传感器提供手部的姿态(横滚、俯仰和偏航角)。因此,在手臂运动跟踪过程中,每个时刻所捕获数据的维度为6。由此捕获的手部姿态用于描述在世界参考坐标系中的手部轨迹。手部轨迹可定义为由两个传感器获得的手部姿态序列,并可表示为
$$ S(t)= S_1(t_1) \rightarrow S_2(t_2) \rightarrow \cdots S_f(t_f) $$ (1)
其中 $ S_i(t_i)={x_i,y_i,z_i, \text{roll}
i,\text{pitch}_i,\text{yaw}_i}^T $ 定义于世界参考坐标系中。以此方式获得的轨迹作为人体手臂运动学模型的输入。手臂运动学模型的唯一目的是生成手臂参考坐标系中的手部轨迹。该手臂运动学模型利用从运动跟踪系统获取的六维姿态数据,来表示手臂参考坐标系中的手部轨迹。在手臂参考坐标系中表示的轨迹即为通过手臂运动学模型得到的手部姿态序列,可表示为
$$ H(t)= H_1(t_1) \rightarrow H_2(t_2) \rightarrow \cdots H_f(t_f) $$ (2)
其中 $ H_i(t_i) $ 表示在时间 $ t_i $ 时定义于手臂参考坐标系中的六维手部姿态。为了进行映射,所获得的轨迹的每个状态 $ H_i(t_i) $ 均用一个与时间相关的齐次变换矩阵表示为
$$ T_H(t)= T
{H1}(t_1) \rightarrow T_{H2}(t_2) \rightarrow \cdots T_{Hf}(t_f) $$ (3)
其中
$$
T_{Hi}(t_i)=
\begin{bmatrix}
n_H & o_H & a_H & p_H \
0 & 0 & 0 & 1
\end{bmatrix}
$$ (4)
公式(4)中表示的手部轨迹被映射到机器人工作空间以进行模仿。机器人运动学建模的关键目的是在机器人的运动学限制范围内最优地复现该映射轨迹。从人臂到机器人工作空间的映射通过使用齐次变换矩阵实现,该矩阵定义在手臂与机器人参考坐标系之间。该映射函数将手部轨迹转换为机器人的笛卡尔空间中的目标轨迹。针对该目标轨迹的每个分量,机器人的增量式逆运动学模型生成机器人的关节空间构型。这是通过以增量方式更新机器人的初始关节空间构型来实现的。由此获得的末端执行器轨迹可表示为机器人工作空间中的一系列状态,其表达式为
$$ E(t)= E_1(t_1) \rightarrow E_2(t_2) \rightarrow \cdots E_f(t_f) $$ (5)
其中 $ E_i(t_i) $ 表示每个时刻的末端执行器位姿。
2.2 泛化阶段
泛化阶段的主要目标是对记录的轨迹集合进行处理,并检索出用于机器人执行的最佳近似轨迹。通常,仅依赖人体运动的方法会受到其不一致性的影响[2]。人臂运动中存在的变异性导致相同任务的多次演示在特征上彼此不同。因此,通过泛化过程提取所需的技能形式。在本研究中,对Calinon等人提出的一种泛化架构[4]进行了修改以适应所考虑的应用。该泛化框架采用高斯混合模型(GMM)对相同任务的多末端执行器轨迹进行编码,并利用高斯混合回归(GMR)检索合适的轨迹。检索到的轨迹被输入机器人控制器以实现执行。
通过高斯混合模型对轨迹进行编码是通过将轨迹的空间分量和时间分量进行分组来实现的。该轨迹数据集可以用由概率分布函数定义的K个分量的混合模型来建模。
$$ p(\varepsilon_j)= \sum_{k=1}^{K} p(k)p(\varepsilon_j|k) $$ (5)
其中 $ p(k) $ 是先验概率,$ p(\varepsilon_j|k) $ 是条件概率密度函数。这些参数可以定义为
$$ p(k)= \pi_k $$ (6)
$$
p(\varepsilon_j|k)= \mathcal{N}(\varepsilon_j;\mu_k,\Sigma_k)= \frac{1}{\sqrt{(2\pi)^D |\Sigma_k|}} e^{-0.5((\varepsilon_j - \mu_k)^T \Sigma_k^{-1} (\varepsilon_j - \mu_k))}
$$ (7)
因此,式(5)的高斯混合模型参数可分别由先验概率 $\pi_k$、均值向量 $\mu_k$ 和协方差矩阵 $\Sigma_k$ 表示。通过高斯混合模型编码的轨迹将被高斯回归模型用于检索广义轨迹。该回归过程在每一时刻估计给定时间分量下的空间分量的条件期望。因此,通过在每个时间步长上计算条件期望,即可获得轨迹的广义形式。
3 实验
所提出方法的能力在特定任务轨迹生成实验中进行了评估。为此,设计并开展了⼀项制造任务实验,其中将喷漆操作作为机器人的目标应用。在实验中,人类演示者通过移动手部经过物体上需要喷涂的特定区域来完成操作。在此演示过程中,手部运动形成的特定模式构成了手部轨迹。对于每次演示,该框架为机器人提供了一个类似的末端执行器轨迹。实验所用的机器人模型为 ABB‐IRB 120,该机器人具有垂直关节结构和球形腕部。在实验中,用户演示了两条复杂程度不同的轨迹。第一种情况考虑了对平面物体矩形轮廓进行喷涂的轨迹,该演示生成了机器人末端执行器的矩形轨迹。第二种情况则针对同一物体演示了螺旋图案的轨迹。每种情况均进行了三次演示。实验期间生成的轨迹在泛化阶段进一步处理,以获取机器人的可执行轨迹。最终,将获得的轨迹输入机器人控制器以完成任务。实验观察结果将在下一节中报告。
4 实验观察
轨迹生成框架依赖于世界坐标系、手臂参考坐标系和机器人参考坐标系之间的运动学变换,以在机器人工作空间中实现对演示轨迹的模仿。在手臂参考坐标系中定义的手部轨迹是映射到机器人工作空间的主要轨迹。映射后,该映射轨迹的可行性由机器人的逆运动学解决。
图2显示了轨迹映射到机器人工作空间(目标轨迹)以及机器人逆运动学模型得到的轨迹(实际轨迹)在两种情况下的对比。
从图2可以看出,在两种情况下,实际轨迹均与目标轨迹重合。两条轨迹的重合性反映了映射策略的有效性以及通过模仿为机器人生成轨迹的准确性。尽管运动学结构和运动空间存在各种差异,所提出的框架仍能够通过对人臂运动的直接模仿,为机器人生成几何上相似的轨迹。然而,人体运动相关的不一致性可能导致演示过程中轨迹出现非平滑段。轨迹的非平滑段可能导致机器人在执行时产生抖动运动。此类误差可在泛化阶段消除。
图3展示了第一种情况的编码轨迹的泛化过程,
而图4描绘了两种情况获得的泛化后的轨迹。
从图3和图4中可以看出,对于所有采样点,回归过程产生了编码变量的平滑分布。改进的泛化方法的主要优势在于,它提供了对编码数据集的平滑逼近,且无需进一步的后处理。因此,从回归过程中检索到的轨迹可直接用于机器人执行。
从图4可以观察到,生成的轨迹消除了数据集中存在的固有不一致性。在当前情况下,泛化过程减少了相同任务的多个末端执行器轨迹中存在的不一致性和变化,并获取了一条最佳近似轨迹用于机器人执行。
367

被折叠的 条评论
为什么被折叠?



