有效
一种基于离线强化学习的机器人搜救方法
丁博、刘惠、翟远钊、冯大为、傅翔、许可乐、万天娇、巩旭东
中国人民解放军国防科技大学
摘要
本发明公开了一种基于离线强化学习的机器人搜救方法,先构建由服务器节点和机器人节点组成的机器人控制系统,服务器节点安装有第一存储模块、第一模型模块、第一轨迹模块、第一策略模块、第二轨迹模块、第二策略模块;机器人节点上部署有探测模块、运动模块、计算模块。第一模型模块使用D4RL数据集训练深度概率神经网络并集成为环境动力学模型。第一轨迹模块、第二轨迹模块分别使用环境动力学模型构建O‑MDP和P‑MDP。在O‑MDP下对第一策略模块进行训练,在P‑MDP下对第二策略模块进行训练,获得机器人搜救策略。机器人节点按照搜救策略执行搜救任务。采用本发明能够在离线数据集数量有限且质量不高的情况下完成搜救任务。
1.一种基于离线强化学习的机器人搜救方法,其特征在于包括以下步骤:第一步,构建机器人控制系统;该系统由服务器节点和机器人节点组成;服务器节点是PC机或服务器,其上装有Ubuntu操作系统或Ubuntu Mate操作系统,并安装有与操作系统相匹配的ROS和TensorFlow深度学习框架;还安装有第一存储模块、第一模型模块、第一轨迹模块、第一策略模块、第二轨迹模块、第二策略模块;机器人节点指能够感知、运动,且具有软件运行能力的机器人;每个机器人节点上除部署有机器人自带的探测模块和运动模块外,还安装有计算模块;探测模块是能感知自身和环境状态并能采集搜救场景环境数据的传感器;探测模块与计算模块相连,每隔α秒周期性地对传感器可见范围内的搜救场景和除自己以外的另M-1台机器人节点进行拍摄或扫描,得到当前搜救场景状态,并将搜救场景状态发送给计算模块;计算模块与运动模块、探测模块和第二策略模块相连,负责生成行动指令给运动模块以执行搜救策略;计算模块中安装有与服务器节点相同的操作系统,并安装有与服务器节点相同的ROS和TensorFlow深度学习框架;计算模块中包含使用TensorFlow深度学习框架创建的第三策略网络;第一存储模块是存贮器,与第一模型模块、第二策略模块相连,用于存储离线数据集,离线数据集包含D条离线轨迹,D为正整数,每条离线轨迹是由连续的L个四元组组成的序列,L为正整数,存储的L个四元组即一条离线轨迹;第一模型模块与第一存储模块、第一轨迹模块、第二轨迹模块相连,第一模型模块负责根据不同种类的离线数据集生成不同的环境动力学模型;第一模型模块使用TensorFlow深度学习框架创建N个由全连接层组成的深度概率神经网络,N为正整数;每个深度概率神经网络输出的结果是某个高斯分布的均值和方差;第一模型模块中的N个深度概率神经网络从第一存储模块读取离线数据集,采用监督学习的训练方式进行训练;为了进一步衡量模型不确定性,第一模型模块同时训练N个深度概率神经网络,N个训练好的深度概率神经网络集成为一个环境动力学模型;第一模型模块将环境动力学模型发送给第一轨迹模块和第二轨迹模块;所述环境动力学模型是具备预测环境动力学以及评估不确定性能力的模型,表示为五元组 其中S代表状态空间,A代表行动指令空间,γ代表未来奖励的折扣系数, 表示环境动力学模型,用于模拟真实环境, 表示为S×A→S,即行动指令空间A中的某个行动指令作用于状态空间S中的某个状态上,使得转移到状态空间S中的一个新状态;R表示奖励函数,用于给当前行动指令进行打分,R可表示为S×A→R,即行动指令空间A中的某个行动指令作用于状态空间S中的某个状态上,得到利用奖励函数R得到的一个即时奖励;在给定状态S和行动指令空间A以及折扣系数γ的情况下,训练环境动力学模型就对应于预测S和R,训练过程可记作函数 θ是环境动力学模型的参数,s t 表示在第t个时间点观察到的场景状态;a t 表示在第t个时间点到第t+1个时间点两个时间点之间机器人采取的行动指令; 表示环境动力学模型预测的在时刻t+1机器人的场景状态; 是环境动力学预测的在时刻t机器人得到的奖励;第一策略模块与第一轨迹模块、第二轨迹模块相连;第一策略模块负责生成探索环境动力学模型的行动指令,并将行动指令发送至第一轨迹模块和第二轨迹模块;这些行动指令产生的轨迹包含更多离线数据集中未出现过的轨迹;第一策略模块由使用TensorFlow深度学习框架创建的第一策略网络组成;“策略”具体表现形式为第一策略模块中第一策略网络的参数:第一策略模块从第一轨迹模块读取乐观轨迹,从乐观轨迹中提取出s t ,第一策略网络将s t 与每层神经元之间权重矩阵相乘、与每层神经元之间偏置向量相加,并逐层传递,得到行动指令a t ,将a t 发送给第一轨迹模块和第二轨迹模块;第一轨迹模块与第一模型模块、第一策略模块相连,从第一模型模块接收环境动力学模型,从第一策略模块接收行动指令a t ,基于a t 和环境动力学模型构建O-MDP即乐观MDP,生成并存储乐观轨迹,供第一策略模块读取;第一轨迹模块中有一个经验数据回放池,存放着由第一轨迹模块生成的M1条乐观轨迹,M1指经回放池的大小,为正整数;其中第m条乐观轨迹表示为四元组 s m 表示第一轨迹模块第m时间点所处的环境状态;a m 表示在第m和m+1两个时间点之间第一策略模块生成的行动指令; 是O-MDP对于第m时间点任务完成情况的反馈得分;s m+1 是O-MDP预测到的第m+1时间点的环境状态;第二轨迹模块与第一模型模块、第一策略模块、第二策略模块相连;第二轨迹模块从第一模型模块接收环境动力学模型,从第一策略模块接收行动指令a t ,基于a t 和环境动力学模型构建P-MDP即悲观MDP,生成并存储悲观轨迹,供第二策略模块读取;第二轨迹模块中有一个经验数据回放池,存放着M2条悲观轨迹,M2指经验回放池的大小,为正整数;其中悲观轨迹中第mm条轨迹表示为四元组 s mm 表示第二轨迹模块第mm时间点所处的环境状态;a ma 表示在第mm和mm+1两个时间点之间第一策略模块生成的行动指令; 是P-MDP对于第mm时间点任务完成情况的反馈得分;s mm+1 是P-MDP预测到的第mm+1时间点的环境状态;第二策略模块与第二轨迹模块、第一存储模块、计算模块相连,由使用TensorFlow深度学习框架创建的第二策略网络组成;第二策略模块从第一存储模块读取离线数据集中的离线轨迹,从第二轨迹模块读取悲观轨迹,使用离线策略优化的方法生成机器人最终的搜救策略,将搜救策略发送给机器人节点的计算模块;第二步,准备用于训练第一模型模块中N个深度概率神经网络的离线数据集,方法是:2.1选择D4RL数据集作为训练N个深度概率神经网络的离线数据集,D4RL离线数据集包含了各种不同的任务场景,并且提供了轨迹数据;D4RL数据集包括4类数据集:“Random”、“Medium”、“Medium-replay”、“Medium-expert”;“Random”数据集由一个随机初始化的策略网络采集的轨迹构成;“Medium”包括从SAC算法训练的早期停止策略中收集的轨迹;“Medium-replay”包括将SAC算法训练到“Medium”性能水平过程中收集到的所有轨迹;“Medium-expert”由“Medium”数据和采用SAC算法收集的专家数据以1:1的比例组合而成;每类数据集都共包含1000条离线轨迹;一条离线轨迹是由连续的L个四元组组成的序列,存储的L个四元组即一条轨迹表示为 四元组为<s t ,a t ,r t ,s t+1 >,s t 表示机器人节点在第t个时间点所处的环境状态;a t 表示在第t和t+1两个时间点之间机器人节点生成的行动指令;r t 是第t个时间点环境对机器人节点的反馈得分;s t+1 表示机器人节点在第t+1个时间点观察到的搜救场景状态;D4RL数据集中包含的策略是机器狗“Halfcheetah”在仿真环境中如何学会行走的策略;D4RL数据集中每类数据均包含1000条轨迹,即包含1000×L个四元组,共包含4×1000×L个四元组;2.2将用于离线训练N个深度概率神经网络的D4RL数据集存贮到第一存储模块;第三步,第一模型模块使用第一存储模块中的D4RL数据集训练N个深度概率神经网络,N个训练后的深度概率神经网络集成为一个训练后的环境动力学模型,将环境动力学模型发送给第一轨迹模块和第二轨迹模块;方法是:3.1第一模型模块从第一存储模块读取离线数据集即D4RL数据集;3.1.2初始化权重参数,将第一模型模块中的N个神经网络模型权重参数都初始化为[0,1]之间的随机数;3.1.3设置网络训练参数,设定学习率为2.5×10 -4 ,将批处理尺寸设置为32,令训练迭代轮数E为100;3.1.4第一模型模块使用监督学习的方法同时训练N个深度概率神经网络,将迭代训练E次后的环境动力学模型表示为 此公式表示每个深度概率神经网络拟合一个高斯分布; 表示依据(s t ,a t )对 做预测的函数,此处共N个高斯分布,其中 表示高斯分布, 表示第i个对二元组(s t ,a t )预测结果服从的高斯分布的均值, 表示第i个对二元组(s t ,a t )预测结果服从的高斯分布的方差;得到N个训练好的深度概率神经网络,将N个训练好的深度概率神经网络集成一个环境动力学模型,将环境动力学模型发送给第一轨迹模块和第二轨迹模块;第四步,第一轨迹模块从第一模型模块接收环境动力学模型,使用环境动力学模型估计D4RL数据集中的轨迹的不确定性,构建O-MDP,方法是:4.1第一轨迹模块从第一模型模块接收环境动力学模型;4.2第一轨迹模块使用环境动力学模型估计D4RL数据集中任意一类数据集的T个四元组中的场景状态和行动指令的不确定性,T=1000×L,方法是:4.2.1令D4RL数据集中的T个四元组中的场景状态和行动指令用(s 1 ,a 1 ),…,(s t ,a t ),…,(s T ,a T )表示;4.2.2初始化t=1;4.2.3计算(s t ,a t )的不确定性评估u(s t ,a t ), 表示对 的输出结果求二范数, 表示取N个深度概率神经网络输出的方差的二范数中的最大值;4.2.4第一轨迹模块使用环境动力学模型中的任意一个深度概率神经网络对(s t ,a t )进行预测,得到(s t ,a t )的第一奖励函数 4.2.5第一轨迹模块计算第t个乐观奖励 其中λ o 是乐观权重,λ o 为正整数;4.2.6第一轨迹模块基于乐观奖励 构建O-MDP,O-MDP用一个五元组表示: 其中R o 表示由乐观奖励 组成的乐观奖励空间;4.2.7令t=t+1,若t≤T,转4.2.3,若t>T,说明采用T个四元组完成了O-MDP构建,转第五步;第五步,第二轨迹模块从第一模型模块接收环境动力学模型,使用环境动力学模型估计D4RL数据集中的轨迹的不确定性,构建P-MDP;5.1第二轨迹模块从第一模型模块接收环境动力学模型;5.2第二轨迹模块使用环境动力学模型估计D4RL数据集中与4.2步选取的相同类别的数据集的T个四元组中的场景状态和行动指令的不确定性,方法是:5.2.1令D4RL数据集中的T个四元组中的场景状态和行动指令用(s 1 ,a 1 ),…,(s t ,a t ),…,(s T ,a T )表示;5.2.2初始化t=1;5.2.3采用与4.2.3相同的方法计算(s t ,a t )的不确定性评估u(s t ,a t );5.2.4第二轨迹模块使用环境动力学模型中的任意一个深度概率神经网络对(s t ,a t )进行预测,得到(s t ,a t )的第二奖励函数 5.2.5第二轨迹模块计算第t个悲观奖励 其中λ p 是悲观权重,λ p 为正整数;5.2.6第二轨迹模块基于悲观奖励 构建P-MDP,P-MDP用一个五元组表示: 其中R p 表示由悲观奖励 组成的悲观奖励空间;5.2.7令t=t+1,若t≤T,转5.2.3,若t>T,说明完成了对T个四元组进行P-MDP构建,转第六步;第六步,在O-MDP下对第一策略模块进行训练,在P-MDP下对第二策略模块进行训练,两个策略模块交替训练,以获得机器人搜救策略;方法是:6.1初始化训练轮数epoch=1;最大训练轮数I=1000;初始化训练批次B,B为正整数;将第一策略模块中的第一策略网络和第二策略模块中的第二策略网络的权重参数都初始化为[0,1]之间的随机数;6.2对第一策略模块进行训练,方法是:6.2.1初始化m=1;6.2.2第一策略模块从D4RL数据集中与4.2步相同类别的数据集中的任意一条离线轨迹中的任意一个四元组中随机选取第m个时间点所处的搜救场景状态s m ;6.2.3第一策略模块基于s m 生成行动指令a m ;6.2.4第一策略模块依据环境动力学模型 计算第m个时间点的乐观奖励 并预测执行行动指令a m 后即第m+1个时间点所处的搜救场景状态s m+1 ;6.2.5第一策略模块将四元组 发送给第一轨迹模块,第一轨迹模块将四元组 保存为乐观轨迹;6.2.6令m=m+1,若m≤M1,转6.2.2,若m>M1,说明生成了M1条乐观轨迹,转6.2.7;6.2.7第一策略模块从第一轨迹模块中随机采样B个乐观轨迹,使用SAC算法训练第一策略模块,更新第一策略模块中的网络参数;6.3对第二策略模块进行训练,方法是:6.3.1初始化变量mm=1;6.3.2第二策略模块从D4RL数据集中与4.2步相同类别的数据集中的任意一条离线轨迹中的任意一个四元组中随机选取第mm个时间点所处的搜救场景状态s mm ;6.3.3第二策略模块基于s mm 生成行动指令a mm ;6.3.4第二策略模块依据环境动力学模型 计算第mm个时间点的悲观奖励 并预测执行行动指令a mm 后第mm+1个时间点的搜救场景状态s mm+1 ;6.3.5第二策略模块将四元组 发送给第二轨迹模块,第二轨迹模块将四元组 保存为乐观轨迹;6.3.6令mm=mm+1,若mm≤M2,转6.3.2,若mm>M2,说明生成了M2条悲观轨迹,转6.3.7;6.3.7第二策略模块从第二轨迹模块中随机采样B/2条的悲观轨迹,结合第一存储模块中的离线数据集中的B/2条离线轨迹,使用TD3+BC算法对第二策略模块进行训练,更新第二策略网络的网络参数;6.4令epoch=epoch+1;若epoch等于设定的最大训练轮数I,则执行步骤6.5;否则转步骤6.2;6.5第二策略模块将第二策略网络中的网络参数通过TensorFlow深度学习框架生成一个.data格式文件,.data格式文件即为搜救策略;第七步,第二策略模块将.data参数格式文件发送至机器人计算模块,计算模块中的第三策略网络加载.data参数格式文件;第八步,将第一步构建的机器人搜救系统部署在真实的未知的开放复杂场景中,机器人节点按照搜救策略即.data参数格式文件执行搜救任务;方法是:8.1根据多目标采样任务要求,设置机器人系统需要采样的多个目标点,机器人节点的探测模块探测到所有搜救目标点的坐标,并将坐标存放在目标点列表中;机器人节点的计算模块从目标点列表中按顺序选择前往的目标点;8.2初始化变量k=0;8.3机器人节点的探测模块探测第k次任务场景状态s k ,将s k 发送到机器人节点的计算模块;8.4机器人节点的计算模块将从探测模块收到的s k 以及从目标点列表中选择的目标点位置组成状态目标二元组,状态目标二元组为(s k ,目标点列表中的目标点位置);8.5计算模块的第三策略网络加载.data参数格式文件,根据状态目标二元组进行行动指令决策,得到第k个行动指令a k ,将a k 发送给运动模块;8.6机器人节点的运动模块执行a k ,向状态目标二元组中目标点列表中的目标点位置移动;8.7若机器人节点执行完a k 达到目标点列表中的目标点位置附近d米内,d为正数,进行目标采样,并从目标点列表中删除d米内的一个目标点,执行步骤8.8;若机器人节点执行完a k 仍未达到目标点位置附近d米内,令k=k+1,转步骤8.3,继续向目标点位置移动;8.8机器人节点判断目标点列表中是否还有目标点,若仍有目标点尚未采样且机器人还在运动,则转步骤8.2;若目标点列表中已无目标点尚未采样或机器人停止运动,转第九步;第九步,若目标点列表为空,则判定任务成功,结束;若目标点列表不为空,说明机器人无法完成该复杂地形中的搜救任务,判定任务失败,结束。
2.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于所述服务器节点上装的Ubuntu要求为16.04或16.04以上版本,所述Ubuntu Mate要求为16.04或以上版本,所述TensorFlow深度学习框架要求1.10.0或1.10.0以上版本。
3.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于所述机器人节点包括但不限于地面机器人节点波士顿动力机器狗、腾讯Robotics X实验室的Jamoca机器狗、半人马机器人HalfCheetah;所述探测模块包括里程计、速度计、扫描雷达、红外摄像头、深度摄像头;所述α取值范围为0.3~1。
4.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于所述第一存储模块可用空间1GB以上,所述D的取值范围为1000~1200,所述L的取值范围为800~1000。
5.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于所述第一模型模块创建的深度概率神经网络个数N取值范围为5~7。
6.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于所述第一策略模块由使用TensorFlow深度学习框架创建的第一策略网络组成,第一策略网络由三个全连接层组成,每个全连接层包含256个神经元;所述第二策略模块由使用TensorFlow深度学习框架创建的第二策略网络组成,第二策略网络与第一策略模块的第一策略网络相同;所述计算模块中包含使用TensorFlow深度学习框架创建的第三策略网络,第三策略网络与第一策略模块的第一策略网络相同。
7.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于所述“乐观”的含义为对于环境动力学模型预测过程中的不确定性,都取其最好的情况,即最大的奖励;所述“悲观”的含义为对于预测中的不确定性,都取其最坏的情况,即最小的奖励。
8.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于所述第一轨迹模块的可用空间为200MB以上,所述M1取值范围是5000~10000;第二轨迹模块的可用空间为200MB以上,所述M2条悲观轨迹取值范围是5000~10000。
9.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于4.2.5步所述乐观权重λ o 取值范围为0~5;5.2.5步所述悲观权重λ p 是的取值范围为0~5。
10.如权利要求1所述的一种基于离线强化学习的机器人搜救方法,其特征在于6.1步所述B的取值范围为32~64;8.7步所述d取值范围为1~3。



