Reinforcement Learning学习(三)

前言

最近在学习Mujoco环境,学习了一些官方的Tutorials以及开源的Demo,对SB3库的强化学习标准库有了一定的了解,尝试搭建了自己的环境,基于UR5E机械臂,进行了一个避障的任务,同时尝试接入了图像大模型API,做了一些有趣的应用,参考资料如下:

https://mujoco.readthedocs.io/en/stable/overview.html
https://pab47.github.io/mujocopy.html
https://github.com/ian-chuang/Manipulator-Mujoco.git

下面我打算分为原理部分,实验过程,结果展示,后续优化几个方面来展开

原理部分

首先是SB3的强化学习库,就我目前的理解来看,这个库基于gym环境以及其变体gymnasium,能够通过矢量转换方法加快训练速度,虽然比不上isaac gym,但其使用性相较更友好(个人意见),因此这里我就使用了该库进行学习

由于我的任务是机械臂的运动控制,因此我的动作空间是连续的,在这里最好还是使用PPO来作为基座模型,先把实验跑通,后续再尝试进行一些其他的优化

关于PPO的原理,其实之前有接触过了,简单理解就是分为两个策略来同时训练,一个策略和实时环境交互,过数个单位时间再把单位信息和真正的策略进行耦合,这里会用到KL散度以及一些Clip约束和优势函数来显示策略的更新速度和步长,防止策略跨度过大,再者就是一个价值损失:预测价值和真实价值之间的差距,这里我就使用了多层感知机来搭建网络

实验过程

整个实验过程分为以下几步:

  1. 环境的搭建,要抓取的目标,奖励的设定,障碍物&相机的配置
  2. 模型导入以及训练
  3. 重写函数,创建自由移动功能
  4. 接入大模型进行位置的设定

环境的一些坐标和物体参数代码如下:

# checkerboard floor

self._arena = StandardArena()

  

self._arena._mjcf_model

# 定义障碍物的尺寸

self.block_size = [0.3, 0.2, 0.2] # 方块的长, 宽, 高

  

self.block1_pos = [-1, .7, 0.35]

self.block2_pos = [-1, -.7, 0.35]

self.block3_pos = [-1, 0, 0.35]

# self.block4_pos = [.8, -.6, 1.5]

  

# 添加方块障碍物

block_body = self._arena._mjcf_model.worldbody.add("body", name=f"block1", pos=self.block1_pos)

block_body.add("geom", type="box", size=self.block_size, rgba=[0, 0, 1, 1])

block_body.add("freejoint") # 添加自由关节

block_body = self._arena._mjcf_model.worldbody.add("body", name=f"block2", pos=self.block2_pos)

block_body.add("geom", type="box", size=self.block_size, rgba=[0, 0, 0, 1])

block_body.add("freejoint") # 添加自由关节

block_body = self._arena._mjcf_model.worldbody.add("body", name=f"block3", pos=self.block3_pos)

block_body.add("geom", type="box", size=self.block_size, rgba=[1, 1, 1, 1])

block_body.add("freejoint") # 添加自由关节

  

# 目标方块

self.block_size2 = [0.1, 0.1, 0.1] # 方块的长, 宽, 高

# 添加方块障碍物

self.block_positions2 = [

[.6, .7, 0], # 方块1

[-.6,.7, 0], # 方块2

[0, .7, 0]

]

  

block_body = self._arena
  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
强化学习是一种通过与环境互动来学习最佳行为策略的机器学习方法。为了开始学习这一领域,首先需要了解一些强化学习的基本算法。《Reinforcement Learning: An Introduction》(Sutton and Barto, 1998)是一本经典的强化学习教材,可以帮助初学者了解强化学习的基本概念和算法。该书介绍了强化学习的基本原理、价值函数、贝尔曼方程等重要概念,并介绍了一些经典的强化学习算法,如蒙特卡洛方法、时序差分学习、Q-learning等。这些算法是理解强化学习的基石,对初学者来说非常有帮助。 另外一本不错的入门教材是《Algorithms for Reinforcement Learning》(Szepesvári, 2009),这本书更加强调强化学习的算法和数学基础。它详细介绍了动态规划、值迭代、策略迭代、TD学习强化学习算法,并提供了一些例子和应用场景,有助于初学者更深入地理解强化学习算法的原理和实际应用。 除了书籍,MOOC平台上也有一些优秀的强化学习入门课程,如Coursera上的《Reinforcement Learning Specialization》和Udemy上的《Practical Reinforcement Learning》。这些课程结合了理论和实践,通过视频、案例分析等方式向学习者介绍强化学习的基本原理和算法,并帮助学习者掌握强化学习的实际应用技能。 总之,要想学习强化学习,首先需要了解一些基本的强化学习算法,上述提到的书籍和课程都是不错的入门资料,可以帮助初学者快速入门强化学习领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值