当前位置: 首页 > news >正文

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 floorself._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
http://www.lryc.cn/news/368910.html

相关文章:

  • hw meta10 adb back up DCIM
  • Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)
  • 从河流到空气,BL340工控机助力全面环保监测网络构建
  • 零拷贝技术
  • Flutter_Android上架GooglePlay_问题
  • 【Java】解决Java报错:NumberFormatException
  • 视觉大模型(VLLM)学习笔记
  • 【软考的系统分析师的考题考点解析2025】
  • JavaScript前端技术入门教程
  • 类和对象(上续)
  • 【C++初阶学习】第十三弹——优先级队列及容器适配器
  • Java(十七)---ArrayList的使用
  • 实验六、IPv4 地址的子网划分,第 2 部分《计算机网络》
  • 定个小目标之刷LeetCode热题(12)
  • MYSQL内存占用查询语句
  • HikariCP连接池初识
  • LeetCode136只出现一次的数字
  • html5实现端午节网站源码
  • echarts组件x轴坐标显示不全解决方法
  • JS实现移动端的轮播图滑动事件
  • 2024.6.10学习记录
  • RapidJSON
  • 二叉树的创建
  • adb shell进入设备后的命令
  • 【Android面试八股文】Java中静态内部类是什么?和非静态内部类的区别是什么?
  • IDEA启动项目报java.lang.OutOfMemoryError: GC overhead limit exceeded
  • 基于R语言BIOMOD2 及机器学习方法的物种分布模拟与案例分析
  • 【笔记2】Python编程:从入门到实践(第2版) - 埃里克·马瑟斯
  • 优质免费的 5 款翻译 API 接口推荐
  • 雷电模拟器中控实现,直通源码