现代制造业中,我们日常使用的大部分产品都由机器人制造——这些多自由度机械臂沿着传送带排列,以精确同步的动作完成生产任务。然而,这些复杂的运动序列通常需要人工编程,耗时可达数百至数千小时。谷歌DeepMind团队开发的RoboBallet AI系统,正彻底改变这一现状,让制造机器人能够自主决定如何高效完成任务,同时避免相互干扰。
旅行商问题的升级版
为制造机器人规划高效任务分配极其困难,需要同时解决三个核心问题:任务分配、调度规划和运动路径设计。这相当于经典"旅行商问题"的强化版,难度呈指数级增长。DeepMind研究工程师马修·莱(Matthew Lai)解释道:"有一些工具可以自动化运动规划,但任务分配和调度通常仍需手动完成。我们工作的核心挑战在于同时解决这三个计算难题。"
莱的团队首先创建了模拟工作单元样本,这些是机器人团队在制造产品上执行任务的区域。每个工作单元包含一个工件(即机器人加工的产品),在本例中,这是放置在桌面上需要组装的铝制支架。桌子周围随机分布着多达8个Franka Panda机械臂,每个具有7个自由度,需要在工件上完成最多40个任务。每个任务要求机械臂的末端执行器以正确角度接近支架上特定位置,保持在2.5厘米范围内,并短暂停留模拟实际操作。
为增加挑战性,团队在每个工作单元中随机放置了障碍物,迫使机器人绕行。莱解释道:"我们选择最多8个机器人,这是紧密排列而不相互阻塞的合理上限。"要求机器人在工件上完成40个任务,团队认为这代表了实际工厂的典型需求。
图神经网络解决复杂关系
面对如此复杂的系统,即使是强大的强化学习算法也难以应对。莱及其同事的创新方法是将问题转化为图结构。在他们的模型中,图由节点和边组成:机器人、任务和障碍物被视为节点,它们之间的关系则编码为单向或双向边。
- 单向边连接机器人与任务及障碍物,因为机器人需要了解障碍物位置和任务完成状态
- 双向边连接各机器人之间,因为每个机器人需要实时了解其他机器人的动作以避免碰撞或任务重复
团队使用图神经网络(GNN)来解析这些图,这是一种专门设计用于通过节点间连接的边传递消息来提取关系的AI技术。这种方法简化了数据,使系统能够专注于最关键的问题:在避开障碍物的同时找到完成任务的最有效路径。经过在单个Nvidia A100 GPU上对随机生成的工作单元进行几天的训练,名为RoboBallet的新型工业规划AI能够在几秒内为复杂且前所未见的环境规划出看似可行的轨迹。
线性扩展的计算效率
传统计算方法应用于工厂机器人管理时,计算复杂度随系统元素数量呈指数级增长。为一个机器人计算最优轨迹相对简单,两个机器人则困难得多,而当数量增加到8个时,问题几乎变得无法解决。
RoboBallet的计算复杂度虽然随系统复杂度增长,但速率慢得多(计算量随任务和障碍物数量线性增长,随机器人数量二次增长)。团队表示,这种计算特性使该系统具有工业级应用的可行性。
为验证AI生成的计划质量,莱及其同事在几个简化的工作单元中计算了最优任务分配、调度和运动路径,并与RoboBallet的结果进行了比较。在执行时间这一制造领域最重要的指标上,AI的表现接近人类工程师水平——它并非更好,而是提供了更快的解决方案。
团队还在真实物理环境中测试了RoboBallet的计划——四个Panda机器人处理铝制工件,结果与模拟中同样出色。但莱表示,RoboBallet的价值不仅在于加速机器人编程过程。
提升工厂设计的灵活性
DeepMind团队认为,RoboBallet还能帮助设计更好的工作单元。莱解释道:"由于其运行速度极快,设计师几乎可以实时尝试不同的布局、机器人放置或选择。"这样,工厂工程师能够精确了解添加另一个机器人或选择不同类型机器人能节省多少时间。RoboBallet的另一优势是能够即时重新编程工作单元,在某个机器人故障时让其他机器人接替其工作。
当前局限与未来展望
尽管前景广阔,RoboBallet在工厂应用前仍需解决几个问题。莱承认:"我们做了几项简化。"首先是障碍物被分解为立方体,甚至工件本身也是立方形的。虽然这在一定程度上代表了工厂中的障碍物和设备,但许多工件具有更复杂的有机形状。莱表示:"用网格图或点云等更灵活的方式表示这些物体会更好,但这可能会降低RoboBallet的惊人速度。"
另一个局限是实验中的机器人是同质的,而实际工作单元中的机器人团队通常是异质的。莱指出:"这就是为什么实际应用需要针对特定类型的应用进行额外的研究和工程。"但他补充说,当前的RoboBallet已考虑了此类适应性,可以轻松扩展以支持它们。一旦完成,他希望这将使工厂更快且更具灵活性。
"系统需要提供工作单元模型、工件模型以及需要完成的任务列表——基于这些信息,RoboBallet能够生成完整的计划,"莱总结道。这项研究发表在《Science Robotics》上,DOI: 10.1126/scirobotics.ads1204。