1.5 学习如何组合控制律
到目前为止,我们假设单个控制律足以控制机器人。但控制律可能需要随着任务的变化而变化。这将需要机器人在运行时随着任务的变化切换控制律。将各种控制律结合在一起编码到动态系统中有多种可能性。如果每个控制律仅在状态空间的不同区域中有效,则可以将状态空间分区然后一个一个地学习,并仅对每个分区中有效的动态系统建模。在第4章中,我们提出了一种称为强化支持向量机的方法,如图1.9所示。该方法可以学习空间的划分。每个分区包含一个动态系统。该方法学习每个分区中导向分区吸引子的路径模型。
图1.9 由具有两个单独吸引子的两个动态系统组成的系统。对于每个动态系统,生成一组三个样本轨迹来训练模型,由深色线描绘。强化支持向量机方法(见4.1节)学习两个区域的划分和每个区域的动力学。通过遵循学习的能量函数的等值线,可以重建每个动力学的局部邻域
考虑K个函数fk,k=1,…,K,每个函数代表一个动态系统,强化支持向量机将这K个函数组合在一个函数中。它通过运行的argmax函数投票决定哪个适用:
该技术的机器人实现在[134]中进行了说明,见图1.10中的节选。该系统经过训练,使两个单独的动态系统抓住香槟杯(模拟)和塑料瓶(真实机器人实现)的颈部或尾部,即使物体掉落也能抓住。机器人的任务是在前方的拦截点抓取物体。当物体失去平衡时,初始旋转速度的微小变化将导致不同的轨迹。因此,根据初始条件,必须在物体的颈部或尾部抓住物体。由于物体下落非常迅速(实际物体的下落时间不到0.2s),因此没有时间进行规划。机器人必须立即切换到尾部或颈部的动态系统,以便及时抓住物体。事实上,当物体的尾部出现在机械臂前时,用于颈部的动态系统将导致抓取失败,因为机器人的夹持器会关闭过快。相反,当物体的颈部出现在机械臂前时,用于尾部的动态系统会让物体直接穿过机器人的手指,因为手指孔径太大,同样会导致抓取失败。
图1.10 图a和图b为两种动态系统的编码,分别用于抓住物体的颈部或尾部。机器在运行时,机器人在两个动态系统之间切换,以抓住下落的玻璃杯或瓶子的颈部或尾部(图c~图e)