一种人机共融环境下的机器人社交性运动规划方法
技术领域
本发明涉及服务、配送、机器人控制、运动规划等领域,具体为一种人机共融环境下的机器人社交性运动规划方法。
背景技术
近年来,服务类的移动机器人越来越多的出现在人们的生活中,在饭店、酒店、机场、写字楼、医院、车间等环境都有着广阔的应用前景,例如饭店送餐机器人,酒店引领以及配送,医院内药品以及手术器械的配送,写字楼内诸多配送及其他服务场景等。
目前,移动式服务机器人已开始逐步的落地应用,但大多仅应用在无人或少人的场景下。当行人过多导致机器人的运动空间被压缩时,局部导航规划变得困难,机器人难以做出灵活的智能决策,缺乏社交能力,由此引发的冲突往往只能依靠机器人的停止或行人的避让而避免。因此,使机器人具备学习社交性的能力是提高人机和谐性、安全性的重要途径。常用的机器人自学习方法包括Q-Learning、DQN等,但连续状态动作导致的Q表的维度灾难严重的影响了机器人的学习效率。而深度强化学习(Deep Reinforcement Learning,DRL)虽通过引入深度神经网络表达状态动作对应奖励的函数关系,能有效避免维度灾难,但目前仍缺乏成熟的考虑人机社交性行为的机器人自学习方法。
针对上述问题,本发明采用GAN(Generative Adversarial Networks)网络与DRL中的A3C架构(Asynchronous Advantage Actor-Critic)相结合的方式,使机器人与环境之间进行交互从而学习到最优行为,帮助机器人自主地学习社交性运动规划策略,在满足人-机安全性和完成任务的前提下,保证人机社交对机器人主动让行,低速交错,加速超越等高级社交性能的要求,使机器人具备独立自主完成任务的能力。
发明内容
本发明旨在解决人机共融环境下人机社交存在的冲突、机器人不能做出灵活的智能决策等问题,将GAN网络引入A3C算法中,以下简称GA3C算法,通过生成器产生的虚拟行人场景进行训练,从而使机器人具备更好的运动规划能力,能够更好地适应复杂的拥挤动态行人环境,实现更加安全和高效的社交性运动规划;同时从合作博弈思想和长短期收益两个角度考虑设计对奖励函数进行奖励机制的设计,约束机器人行为的同时提高其学习能力,引导其完成既定任务。
具体实施步骤如下:
步骤1:建立仿真环境,本发明中的算法需要在一个拥挤动态的人机共融环境中进行训练和测试。使用Gazebo仿真软件自定义环境,添加机器人和行人等元素。
步骤2:状态、动作空间设计,将环境状态分为机器人状态和行人状态。机器人状态可以包括机器人位置、速度、方向等信息;行人状态可以包括行人位置、速度、方向等信息,同时,考虑引入社交关系的概念,例如机器人与行人之间的距离和方向关系,以及行人之间的距离和方向关系等。机器人可以执行的动作包括加速、减速、转弯等,为了保障机器人和行人的安全,需要限制机器人的最大速度和加速度,并在决策时考虑行人的运动状态。
设,,表示机器人的状态、动作和行人在时间的状态。状态向量有两部
分,即可观测的和不可观测的部分,即。可观测部分由机器人的位置坐标、朝向角度、速度、加速度、机器人与目标点之间的距离、机器人与最近行人
之间的距离、机器人与最近行人的夹角组成,这里可观测指的是相邻行人可见的状
态部分,包括行人的位置坐标、行人的朝向角度、行人的速度。目标位置、最优
速度和方向,其中是二维环境的方向,为三维环境方向,以及其他隐藏行人等信
息构成了状态的不可观测部分。机器人动作空间包括:直行、左转、右转、加速、减速等。
步骤3:设计奖励函数,奖励函数设计主要包括安全、社交、效率和完成目标四方面的考虑。
步骤3.1:考虑安全性的奖励机制设计,当机器人与行人或其他障碍物发生碰撞,得到负奖励,当机器人与行人或障碍物保持一定安全距离按照距离远近进行一定程度的奖励,其他情况无奖励;
其中是安全奖励函数,为机器人与障碍物或最近行人的距离。
步骤3.2:考虑社交性的奖励机制设计,机器人需要考虑与行人之间的距离和方向关系,为了实现机器人的社交性,即:在与行人交汇时减速让行,在行人速度过慢时加速超越,正常情况下跟随行人速度协同移动的目标;
其中是社交奖励函数,为机器人速度,为行人速度,为机器人与行人
的速度差,为速度阈值。
步骤3.3:考虑完成任务路径最短的奖励机制设计,为防止机器人随意游荡,通过接近/进一步接近其目标来给机器人一个小的正/负奖励,并引导他们朝着目标前进。
其中是目标奖励函数,为机器人当前位置,为目标位置,是机器人
在时刻与目标地点之间的欧氏距离,是目标奖励,表示成正比例关系的常数。
步骤3.4:考虑完成任务效率性的奖励机制设计,机器人需要在保障安全的前提下,尽可能地快速到达目的地。因此,可以为机器人的到达时间设置一个负奖励,以鼓励机器人尽快到达目的地;
其中是效率奖励函数,为到达目标点的时间。
上述奖励函数设计中,机器人的安全是其完成任务必要保障,而在人机共融环境中,社交性能的提高为主要学习目标,完成任务的效率及路径是基本要求,通过合作博弈思想,在上述四方面发生奖励冲突时,要以安全为首要,社交性能的学习其次,最后是完成任务的效率及路径,最终优化奖励函数可以表示为以下公式:
其中为奖励函数,、、、分别是安全、社交、效率和目标奖励函
数,为权重,满足。
步骤4:GAN模型设计,使用一个生成器和一个判别器来构建GAN模型。生成器用于生成行人的运动轨迹,判别器用于判断生成的轨迹是否真实。
步骤4.1:数据采集及处理,使用传感器和相机等设备收集机器人和行人的运动数据,并标注社交行为,如:右侧行驶、减速让行、加速超越和安全性等。将采集到的原始数据经过处理和转换,得到适合算法输入的格式,以提高模型的训练效果和泛化能力。
步骤4.2:定义生成器和判别器的网络结构。生成器将机器人当前状态和虚拟行人场景作为输入,并输出一个机器人的行动;判别器将生成器生成的机器人状态和行人场景作为输入,并输出机器人行动的真实程度。
步骤4.3:定义判别器和生成器的损失函数,判别器的损失函数主要是将真实数据和虚拟数据区分开来,使用二分类交叉熵损失函数;生成器的损失函数主要是让生成的虚拟数据更接近真实数据,使用生成器生成的虚拟数据经过判别器的输出与1的交叉熵损失函数。
判别器的损失函数为:
生成器的损失函数:
其中,表示批次大小,表示真实数据,表示噪声数据,表示生成器生成
的虚拟数据,表示判别器对真实数据的判别结果,表示判别器对虚拟数据的
判别结果。
步骤5:构建A3C模型,是Actor-Critic算法框架的一种改进形式,通过建立多个线程子网络与全局网络分享网络参数信息,全局网络将最优的参数反馈给各个线程,使其更有利于和环境的交互,做到异步并发的学习模型。Actor网络的输入通常包括机器人的观测信息,如机器人周围的环境状态、行人的位置和速度等,输出则是机器人的动作,其目标是最大化奖励函数,也就是让机器人在环境中的累计奖励最大化。
步骤5.1:网络结构设计,针对A3C只能考虑当前状态下的信息,不能进行长期的决策规划的问题,采用循环神经网络(Recurrent Neural Network,RNN)对A3C进行优化,从而更好地进行长期的决策规划。
1.构建带有RNN的A3C模型,在A3C模型的基础上,将卷积层和全连接层后面添加一个LSTM层。这个LSTM层将前面所有的状态和动作作为输入,同时将其前一时刻的隐状态作为自身的输入。
2.更新LSTM隐状态,在每一步训练时都更新LSTM的隐状态,以保证模型能够根据前面的状态和动作做出更好的决策。更新LSTM的隐状态需要通过前面的状态和动作进行前向计算,计算公式如下:
其中,表示当前时刻的LSTM隐状态,表示当前时刻的状态,表示当前时刻的
动作,和分别表示线性核、隐状态的权重矩阵。
3.计算梯度,在更新完LSTM的隐状态后,需要像传统的A3C算法一样计算梯度,但是由于LSTM层的存在,需要对梯度进行处理,具体来说,需要对每一步的梯度进行累加,以计算梯度的平均值,公式如下:
其中,表示策略的损失函数,表示模型参数,表示在状态下采取
动作的概率,表示在时刻的优势值,表示当前训练步数。
4.更新模型参数,在计算完梯度后,我们可以使用随机梯度下降法或者其他优化算法来更新模型参数。更新公式如下:
其中,表示学习率,表示在时刻的策略模型参数。
步骤5.2:参数更新,在A3C算法中,一个机器人的多个线程与环境副本交互,同时其他线程与环境交互,在每一轮结束时,每个线程根据其损失项计算的梯度更新全局网络参数。
在Critic 网络参数的更新中,Actor-Critic算法通过单步采样近似估计,即:
A3C算法更进一步,采用N步采样的方法,同时考虑多步范围内的奖励值,通过衰减
因子与当前状态产生联系,从而加快收敛速度,此时为:
在网络参数更新时加入策略的熵H项,系数为c,与Actor-Ctitic算法相比,是分值函数,表示策略参数,其梯度更新公式为:
步骤5.3:定义损失函数,Actor损失函数用于优化策略函数,使得在给定状态下采取最优动作的概率最大化;Critic损失函数用于优化价值函数,使得在给定状态下获得的未来奖励值最大化。
其中,为折扣报酬估计;为总损失函数,,分别为策略和价值损失函数;为可调常数参数,用于平衡Actor和Critic损失函数
的相对重要性;为熵函数。
步骤6:模型训练,在每个训练步骤中,机器人将根据当前状态选择行动,并根据判别器的反馈进行调整,以使机器人的行动更加符合真实场景中的行为规律。同时,生成器将产生虚拟行人场景,并根据判别器的反馈进行调整,以使虚拟场景与真实场景尽可能相似。
训练过程分为预训练GAN模型和训练A3C模型两个阶段。在预训练阶段中,使用GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化GAN模型的参数;在训练A3C模型的阶段中,使用训练好的GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化Actor和Critic模型的参数。具体步骤如下:
Step 1.初始化Actor和Critic模型,以及GAN模型的参数;
Step 2.在预训练阶段中,使用GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化GAN模型的参数;
Step 3.在训练A3C模型的阶段中,使用训练好的GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化Actor和Critic模型的参数;
Step 4.使用主线程控制训练过程,使用Actor和Critic模型生成机器人的动作和评估状态的价值函数;
Step 5.使用多个异步的工作线程探索环境,每个线程使用Actor模型生成机器人的动作,执行动作并观察环境,最后更新Critic模型的参数;
Step 6.采用梯度下降来更新Actor和Critic模型的参数,并使用异步的方式将参数更新到主线程中;
Step 7.重复Step 4。
步骤7:方法验证,为了评估本发明所提出算法在解决人机共融环境下机器人的社交性运动规划能力,可以通过设计对比实验、调节最佳参数以及设定评价指标等方式进行仿真实验验证。在验证过程中应综合考虑模型的效果、运行时间、参数数量和复杂度等因素。
本发明提供了一种基于GA3C算法的机器人社交性运动规划方法,通过引入GAN网络,使机器人能够具备更好的运动规划能力,能够更好地适应复杂的拥挤动态行人环境,并实现更加安全和高效的运动规划,通过设计不同的奖励机制,实现对人机共融环境下机器人安全性、社交性、完成任务的效率以及到达目标点的最小路径等方面的要求。该算法具有较高的应用价值,可用于机器人在各种复杂环境中的社交性运动规划,例如饭店、酒店、机场、写字楼、医院、车间等场景。本发明的技术方案具有以下有益技术效果:
1.可以提高模型的泛化能力:GAN网络能够生成更丰富、更真实的虚拟场景,使得机器人具备更好的适应能力,能够应对更加复杂的行人交互环境;
2.可以提高环境中的人-机安全性:GAN网络能够生成更多具有不同特征的行人场景,从而使机器人更加准确地理解行人的意图,能够进行更加安全和高效的运动规划;
3.能够提高机器人的社交性:通过对奖励机制的设计,使机器人在人机共融环境中具有主动让行,低速交错,加速超越等人类社交行为,提高人机共融环境中人类的舒适度和安全度;
4.可以提高运动规划效率:基于GAN的A3C算法能够更快速地训练模型,同时具有更高的运动规划效率,能够使机器人更加迅速地做出正确的决策,从而提高整体的运动规划效率。
5.能够具有更好的鲁棒性:基于GAN的A3C算法能够减少数据集的依赖性,从而具有更好的鲁棒性和可迁移性。
下面将参照附图,对本发明作进一步详细的说明。
附图说明
图1是本发明的整体流程图;
图2是本发明GA3C算法原理图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
参见附图1,本实施例提供一种人机共融环境下的机器人社交性运动规划方法,包括使用Gazebo仿真软件进行仿真环境的建立、设计环境状态和机器人动作空间,安全,社交,效率和完成目标四方面设计奖励函数、使用生成器和判别器来构建GAN模型、采用RNN网络优化A3C模型、融合GA3C算法的模型训练、最后进行方法验证。
附图2为本发明所提GA3C算法的原理图,其原理为A3C算法将将Actor-Critic放到多个线程中同步训练,在训练时,每一步都使用训练好的GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,优化Actor和Critic模型的参数,然后采用梯度下降来更新Actor和Critic模型的参数,并使用异步的方式将参数更新到主线程中。
为了方便理解,对人机共融环境和机器人进行具体举例说明,以餐饮行业为例,人机共融环境由饭店内机器人、服务员及顾客构成,机器人为送餐机器人。
具体实施步骤如下:
实施步骤1:建立餐厅仿真环境,使用Gazebo仿真软件定义餐厅环境,添加餐厅室内陈设、送餐机器人模型、行走的服务员和顾客等元素。同时,需要为机器人模型添加ROS控制器,以便控制机器人模型的移动。此外,还需要使用ROS中的功能包,将相机捕获的图像转换成激光雷达数据,以便机器人模型可以感知环境中的障碍物和行人等元素。
实施步骤2:状态、动作空间设计,将环境状态分为机器人状态和行人状态。机器人状态可以包括机器人位置、速度、方向等信息;行人状态可以包括行人位置、速度、方向等信息,同时,考虑引入社交关系的概念,例如机器人与行人之间的距离和方向关系,以及行人之间的距离和方向关系等。机器人可以执行的动作包括加速、减速、转弯等,为了保障机器人和行人的安全,需要限制机器人的最大速度和加速度,并在决策时考虑行人的运动状态。
设,,表示机器人的状态、动作和行人在时间的状态。状态向量有两部
分,即可观测的和不可观测的部分,即。可观测部分由机器人的位置坐标、朝向角度、速度、加速度、机器人与目标点之间的距离、机器人与最近行人
之间的距离、机器人与最近行人的夹角组成,这里可观测指的是相邻行人可见的状
态部分,包括行人的位置坐标、行人的朝向角度、行人的速度,目标位置、最优
速度和方向,其中是二维环境的方向,为三维环境方向,以及其他隐藏行人等信
息构成了状态的不可观测部分。机器人动作空间包括:直行、左转、右转、加速、减速、停止等
待等。
实施步骤3:设计奖励函数,奖励函数设计主要包括安全、社交、效率和完成目标四方面的考虑。
步骤3.1:考虑安全性的奖励机制设计,当机器人与行人或其他障碍物发生碰撞,得到负奖励,当机器人与行人或障碍物保持一定安全距离按照距离远近进行一定程度的奖励,其他情况无奖励;
其中是安全奖励函数,为机器人与障碍物或最近行人的距离。
步骤3.2:考虑社交性的奖励机制设计,机器人需要考虑与行人之间的距离和方向关系,为了实现机器人的社交性,即:在与行人交汇时减速让行,在行人速度过慢时加速超越,正常情况下跟随行人速度协同移动的目标;
其中是社交奖励函数,为机器人速度,为行人速度,为机器人与行人
的速度差,为速度阈值。
步骤3.3:考虑完成任务路径最短的奖励机制设计,为防止机器人随意游荡,通过接近/进一步接近其目标来给机器人一个小的正/负奖励,并引导他们朝着目标前进。
其中是目标奖励函数,为机器人当前位置,为目标位置,是机器人
在时刻与目标地点之间的欧氏距离,是目标奖励,表示成正比例关系的常数。
步骤3.4:考虑完成任务效率性的奖励机制设计,机器人需要在保障安全的前提下,尽可能地快速到达目的地。因此,可以为机器人的到达时间设置一个负奖励,以鼓励机器人尽快到达目的地;
其中是效率奖励函数,为到达目标点的时间。
上述奖励函数设计中,机器人的安全是其完成任务必要保障,而在人机共融环境中,社交性能的提高为主要学习目标,完成任务的效率及路径是基本要求,通过合作博弈思想,在上述四方面发生奖励冲突时,要以安全为首要,社交性能的学习其次,最后是完成任务的效率及路径,最终优化奖励函数可以表示为以下公式:
其中为奖励函数,、、、分别是安全、社交、效率和目标奖励函
数,为权重,满足。
实施步骤4:GAN模型设计,使用一个生成器和一个判别器来构建GAN模型。生成器用于生成行人的运动轨迹,判别器用于判断生成的轨迹是否真实。
步骤4.1:数据采集及处理,使用传感器收集机器人和行人的运动数据,并标注社交行为,如:右侧行驶、减速让行、加速超越等,将采集到的原始数据经过处理和转换,得到适合算法输入的格式,以提高模型的训练效果和泛化能力。数据处理的具体方法为:
1.对原始数据进行清洗、去噪、标定、筛选等操作,以保证数据的准确性和可靠性。
2.特征提取:从原始数据中提取出有用的特征信息,如行人的位置、速度、加速度、朝向、运动模式等,以表示行人的状态和行为。
3.数据转换:将特征信息转换为算法可处理的格式,如状态向量、图像、序列等,以便于算法的输入和处理。
4.数据增强:使用GAN等技术生成具有社交性和安全性的虚拟行人数据,以增加训练集的多样性和数量,提高算法的泛化能力。
步骤4.2:定义生成器和判别器的网络结构。生成器将机器人当前状态和虚拟行人场景作为输入,并输出一个机器人的行动;判别器将生成器生成的机器人状态和行人场景作为输入,并输出机器人行动的真实程度。
步骤4.3:定义判别器和生成器的损失函数,判别器的损失函数主要是将真实数据和虚拟数据区分开来,使用二分类交叉熵损失函数;生成器的损失函数主要是让生成的虚拟数据更接近真实数据,使用生成器生成的虚拟数据经过判别器的输出与1的交叉熵损失函数。
判别器的损失函数为:
生成器的损失函数:
其中,表示批次大小,表示真实数据,表示噪声数据,表示生成器生成
的虚拟数据,表示判别器对真实数据的判别结果,表示判别器对虚拟数据的
判别结果。
实施步骤5:构建A3C模型,是Actor-Critic算法框架的一种改进形式, Actor网络的输入通常包括机器人的观测信息,如机器人周围的环境状态、行人的位置和速度等,输出则是机器人的动作,其目标是最大化奖励函数,也就是让机器人在环境中的累计奖励最大化。
步骤5.1:网络结构设计,针对A3C只能考虑当前状态下的信息,不能进行长期的决策规划的问题,采用循环神经网络(Recurrent Neural Network,RNN)对A3C进行优化,从而更好地进行长期的决策规划。
1.构建带有RNN的A3C模型,在A3C模型的基础上,将卷积层和全连接层后面添加一个LSTM层。这个LSTM层将前面所有的状态和动作作为输入,同时将其前一时刻的隐状态作为自身的输入。
2.更新LSTM隐状态,在每一步训练时都更新LSTM的隐状态,以保证模型能够根据前面的状态和动作做出更好的决策。更新LSTM的隐状态需要通过前面的状态和动作进行前向计算,计算公式如下:
其中,表示当前时刻的LSTM隐状态,表示当前时刻的状态,表示当前时刻的
动作,和分别表示线性核、隐状态的权重矩阵。
3.计算梯度,在更新完LSTM的隐状态后,需要像传统的A3C算法一样计算梯度,但是由于LSTM层的存在,需要对梯度进行处理,具体来说,需要对每一步的梯度进行累加,以计算梯度的平均值,公式如下:
其中,表示策略的损失函数,表示模型参数,表示在状态下采取
动作的概率,表示在时刻的优势值,表示当前训练步数。
4.更新模型参数,在计算完梯度后,我们可以使用随机梯度下降法或者其他优化算法来更新模型参数。更新公式如下:
其中,表示学习率,表示在时刻的策略模型参数。
步骤5.2:参数更新,在A3C算法中,一个机器人的多个线程与环境副本交互,同时其他线程与环境交互,在每一轮结束时,每个线程根据其损失项计算的梯度更新全局网络参数。
在Critic 网络参数的更新中,Actor-Critic算法通过单步采样近似估计,即:
A3C算法更进一步,采用N步采样的方法,同时考虑多步范围内的奖励值,通过衰减
因子与当前状态产生联系,从而加快收敛速度,此时为:
在网络参数更新时加入策略的熵H项,系数为c,与Actor-Ctitic算法相比,是分值函数,表示策略参数,其梯度更新公式为:
步骤5.3:定义损失函数,Actor损失函数用于优化策略函数,使得在给定状态下采取最优动作的概率最大化;Critic损失函数用于优化价值函数,使得在给定状态下获得的未来奖励值最大化。
其中,为折扣报酬估计;为总损失函数,,分别为策略和价值损失函数;为可调常数参数,用于平衡Actor和Critic损失函数
的相对重要性;为熵函数。
实施步骤6:模型训练,在每个训练步骤中,机器人将根据当前状态选择行动,并根据判别器的反馈进行调整,以使机器人的行动更加符合真实场景中的行为规律。同时,生成器将产生虚拟行人场景,并根据判别器的反馈进行调整,以使虚拟场景与真实场景尽可能相似。
训练过程分为预训练GAN模型和训练A3C模型两个阶段。在预训练阶段中,使用GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化GAN模型的参数;在训练A3C模型的阶段中,使用训练好的GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化Actor和Critic模型的参数。具体步骤如下:
Step 1.初始化Actor和Critic模型,以及GAN模型的参数;
Step 2.在预训练阶段中,使用GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化GAN模型的参数;
Step 3.在训练A3C模型的阶段中,使用训练好的GAN模型生成行人的运动轨迹,并将生成的轨迹作为训练数据,用于优化Actor和Critic模型的参数;
Step 4.使用主线程控制训练过程,使用Actor和Critic模型生成机器人的动作和评估状态的价值函数;
Step 5.使用多个异步的工作线程探索环境,每个线程使用Actor模型生成机器人的动作,执行动作并观察环境,最后更新Critic模型的参数;
Step 6.采用梯度下降来更新Actor和Critic模型的参数,并使用异步的方式将参数更新到主线程中;
Step 7.重复Step 4。
实施步骤7:方法验证,为了评估本发明所提出算法在解决人机共融环境下机器人的社交性运动规划能力,可以通过搭建仿真环境、设计对比实验、调节最佳参数以及设定评价指标等方式进行仿真实验验证。在验证过程中应综合考虑模型的效果、运行时间、参数数量和复杂度等因素。