问题描述
我一直在进行一些RL项目,该策略是使用关节角度控制机器人。在整个项目中,我注意到了一些现象,引起了我的注意。我决定创建一个非常简化的脚本来调查问题。就这样了:
环境
有一个机器人,有两个旋转关节,所以有2个自由度。这意味着它的连续动作空间(关节旋转角度)的维数为2。让我们用 a 表示该动作向量。我将每步的最大关节旋转角度从11度更改为1度,并确保在情节被强制终止超时之前允许环境执行合理的步数。
我们的目标是通过使机器人的当前关节配置 c 更接近目标关节角度配置 g (也是二维输入矢量)来移动机器人。 因此,我选择的奖励是e ^(-L2_distance( c , g ))。
L2距离越小,奖励就成倍地增加,所以我确信可以适当激励机器人以快速达到目标。
奖励功能(y轴:奖励,x轴:L2距离):
每个步骤的伪代码如下:
-
按预测的关节角度增量移动关节
-
收集奖励
-
如果超时或关节偏离太多而变成某种不切实际的配置:终止。
非常简单的环境,在我们的问题中不要有太多的活动部件。
RL算法
我使用Catalyst框架在使用TD3算法的演员批评环境中训练我的代理。通过使用一个我很熟悉的经过测试的框架,我可以确定没有实现上的错误。
该策略是目标驱动的,因此参与者消耗了连接的当前和目标联合配置 a =策略([ c , g ] )
大问题
当机器人只有两个自由度时,训练迅速收敛,并且机器人学会了高精度地解决任务(最终L2距离小于0.01)。
融合2D代理的性能。 y轴:关节角度值,x轴:发作次数。叉号表示机器人所需的目标状态。
但是,如果问题变得更加复杂-我将关节尺寸增加到4D或6D,则机器人最初学会了接近目标,但从未对其运动进行“微调”。一些关节倾向于在端点附近振荡,其中一些倾向于过冲。
我一直在尝试不同的想法:使网络更广泛,更深入,改变行动步骤。我还没有尝试过优化程序调度。无论代理收到多少样本或训练多长时间,它都永远不会学会以所需的准确度(L2距离小于0.05)接近目标。
融合4D代理的性能。 y轴:关节角度值,x轴:发作次数。叉号表示机器人所需的目标状态。
2D代理(红色)和4D代理(橙色)的训练曲线。 2D代理迅速将L2距离最小化为小于0.05的距离,而4D代理则努力将其L2距离降至0.1以下。
文学研究
我研究了使用TD3算法描述关节空间运动计划的论文。
与我的方法并没有太多区别: https://arxiv.org/abs/1906.00214 https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiy4KCU3Z_sAhXEnVwKHXzfBZcQFjABegQIBRAC&url=https%3A%2F%2Fwww.mdpi.com%2F2076-3417%2F10%2F2%2F575%2Fpdf&usg=AOvVaw2-D78jGxqQspBGrhbGR0Yk
他们的问题要困难得多,因为该政策还需要学习联合空间中障碍的模型,而不仅仅是目标的概念。它们唯一的独特之处在于它们使用了相当宽而浅的网络。但这是唯一的事情。 我真的很感兴趣,你们会建议我做些什么,以便使机器人可以在更高的关节配置尺寸下达到高精度?我在这里想念什么?!
谢谢您的帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)