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

gym_unity学习笔记

最近学了一段时间gym_unity,把一些资料留在这里

实例

  1. 实例gym_unity训练RollerBall:https://blog.csdn.net/alibutter/article/details/120908687
  2. 实例gyn_unity训练3DBall:https://zhuanlan.zhihu.com/p/554927641?utm_id=0
    源码:https://github.com/Delta-King/UnityPPO
    实现时下载release-19稳定版本:https://github.com/Unity-Technologies/ml-agents/releases/tag/release_19

官方资料

  1. ml-agents官网:https://github.com/Unity-Technologies/ml-agents/tree/develop
  2. ml-agents中文文档:https://github.com/Hustacds/ml-agents/tree/master/docs/localized/zh-CN
  3. mlagents_env对外gym接口文档:https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Python-Gym-API.md
  4. mlagents_env多智能体接口文档:https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Python-PettingZoo-API.md
  5. mlagents_env python接口文档:https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Python-LLAPI.md
  6. gym_unity的官方解释:https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Python-Gym-API-Documentation.md
  7. 多智能体接口:https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Python-PettingZoo-API.md
  8. ML-agents训练时的configutation文件说明(yaml文件):https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Training-Configuration-File.md

过程报错:

报错:\ml-agents-develop\com.unity.ml-agents\Runtime\Sensors\RayPerceptionSensor.cs(459,39): error CS0103: The name ‘QueryParameters’ does not exist in the current context
原因:ML-agents的版本过高,对Unity的版本有要求。换release-19即可
参考:https://github.com/Unity-Technologies/ml-agents/issues/5958

报错:TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:

  1. Downgrade the protobuf package to 3.20.x or lower.
  2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure

Python parsing and will be much slower).
解决办法(把protobuf的版本从4.多降下来):pip install protobuf==3.20.*

报错:TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to
解决方案:参考:https://blog.csdn.net/weixin_45887062/article/details/126417024

报错:ImportError: cannot import name ‘cygrpc’ from ‘grpc._cython’ (D:\A\envs\pythonProject\lib\site-packa
解决:pip install grpcio==1.27.2
参考:https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1540

gym_unity模板:

from mlagents_envs.environment import UnityEnvironment
from gym_unity.envs import UnityToGymWrapperenv_directory = 'D:\\Desktop\\3DBall\\UnityEnvironment.exe'unity_env = UnityEnvironment(env_directory, base_port=5005, no_graphics=False)
env = UnityToGymWrapper(unity_env, uint8_visual=True)
执行env.step(action)和env.reset()就可以

UnityGymWrapper:

UnityGymWrapper是Unity和gym的封装接口,封装Unity环境给当作gym使用。UnityGymWrapper只适用于单智能体,UnityGymWrapper5可以用于多智能体
Multi-agent使用UnityGymWrapper5例子:
源码:https://github.com/leehe228/LogisticsEnv
论文:Multi agent reinforcement learning based UAV control for Urban Aerial Mobility logistics
UnityGymWrapper使用模板:
在这里插入图片描述
参考:https://lab.uwa4d.com/lab/624a2749a8103dabd0e58f10
在这里插入图片描述
在这里插入图片描述

疑问:

自定义的unity环境env的step和reset()在哪写???
gym_unity训练完的模型怎么保存????
.pt 文件通常是指 PyTorch 的模型文件,它是 PyTorch 框架中用于保存和加载模型权重和结构的一种格式。
参考:https://blog.csdn.net/weixin_44943389/article/details/131940271在这里插入图片描述

相关文章:

gym_unity学习笔记

最近学了一段时间gym_unity,把一些资料留在这里 实例 实例gym_unity训练RollerBall:https://blog.csdn.net/alibutter/article/details/120908687实例gyn_unity训练3DBall:https://zhuanlan.zhihu.com/p/554927641?utm_id0 源码&#xff1…...

(三十)大数据实战——HBase集成部署安装Phoenix

前言 Phoenix 是一个开源的分布式关系型数据库查询引擎,它基于 Apache HBase构建。它提供了在 Hadoop 生态系统中使用 SQL查询和事务处理的能力。本节内容我们主要介绍一下Hbase如何集成部署安装Phoenix服务工具,并集成hive框架,能够快速、灵…...

【Python基础】S01E03 元组

P01S03 元组 定义元组元组无法修改定义一个元素的元素 修改元组变量方案一:关联新元组方案二:转换为列表 列表是可修改的,对于处理网站的用户列表或游戏中的角色列表至关重要。然而我们有时候需要创建一系列不可修改的元素,元组可…...

【算法-双指针思想】

双指针思想 双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 定义快慢指针 快指针: 寻找新数组的元素 ,新数组就是不含有目标元素的数组 慢指针: 指向更新 新数组下…...

uni-app实现点击复制按钮 复制内容

注意:uni.setClipboardData({})里面的data参数必须是字符串类型这个是大坑 第一种 <view>{{orderId}}</view> //复制的内容 <button click"copy(orderId)">复制</button>copy(value) {uni.setClipboardData({data: value , // 这里是个坑接…...

Qt5开发及实例V2.0-第十四章-Qt多国语言国际化

Qt5开发及实例V2.0-第十四章-Qt多国语言国际化 第14章 Qt 5多国语言国际化14.1 基本概念14.1.1 国际化支持的实现14.1.2 翻译工作&#xff1a;“*.qm”文件的生成 14.2 【实例】14.2.1 简单测试14.2.2 选择语言翻译文字 本章相关例程源码下载1.Qt5开发及实例_CH1401.rar 下载2.…...

嵌入式网络接口之MAC芯片与PHY芯片

目录 0. 参考文档 1.嵌入式网络接口简介 2.嵌入式网络硬件架构方案 2.1 SOC内未集成MAC芯片 2.2 SOC内集成MAC芯片 2.3 主流方案总结 2.3 参照实际网卡的说明 3.MII/RMII及MDIO接口 3.1 MII 3.2 RMII 3.3 MDIO 0. 参考文档 网卡构造&#xff1a;MAC与PHY的关系&…...

在华为云服务器上CentOS 7安装单机版Redis

https://redis.io/是官网地址。 点击右上角的Download。 可以进入https://redis.io/download/——Redis官网下载最新版的网址。 然后在https://redis.io/download/页面往下拉&#xff0c;点击下图超链接这里。 进入https://download.redis.io/releases/下载自己需要的安装…...

01_Bootstrap基础组件01

1 什么是 Bootstrap&#xff1f; Bootstrap&#xff0c;来自 Twitter&#xff0c;是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的&#xff0c;它简洁灵活&#xff0c;使 Web 开发更加快捷。它对 HTML、CSS 和 JavaScript 进行了封装&#xff0c;使它们…...

Java:OGNL对象图导航语言基本使用示例

OGNL是Object Graphic Navigation Language(对象图导航语言) 文档 https://commons.apache.org/proper/commons-ognl/language-guide.htmlhttps://github.com/orphan-oss/ognlhttps://ognl.orphan.software/developer-guide 引入依赖 <!-- https://mvnrepository.com/ar…...

中科院预警名单

2023年预警名单 (fenqubiao.com) 如果论文投稿到中国科学院预警期刊,可能会面临以下情况: 1. 预警期刊一般审稿周期长,容易出现迟迟不见回音的情况。 2. 这类期刊的学术质量参差不齐,接受论文的学术标准可能不严格。 3. 预警期刊发表论文的学术影响力比较有限,不容易为作者…...

Qt QCustomPlot介绍

介绍 主要介绍qcustomplot及其用法 最新版本:QCustomPlot Patch Release 2.1.1//November 6, 2022 下载:https://www.qcustomplot.com/index.php/download 官网:https://www.qcustomplot.com/index.php 简单使用 mainwindow.h /**************************************…...

什么是CORS(跨源资源共享)?如何解决前端中的CORS问题?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CORS&#xff08;跨源资源共享&#xff09;⭐ 解决前端中的CORS问题的方法⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为…...

C 初级学习笔记(基础)

目录 1.预处理器指令 预定义宏 预处理器运算符 &#xff08;\&#xff09; 参数化的宏 头文件 .h 引用头文件操作 2.函数&#xff08;标识符&关键字&运算符&#xff09;存储类 函数参数 a. 标识符&关键字 b. 运算符&#xff08;算术、关系、逻辑、位、赋…...

Nodejs 相关知识

Nodejs是一个js运行环境&#xff0c;可以让js开发后端程序&#xff0c;实现几乎其他后端语言实现的所有功能&#xff0c;能够让js与其他后端语言平起平坐。 nodejs是基于v8引擎&#xff0c;v8是Google发布的开源js引擎&#xff0c;本身就是用于chrome浏览器的js解释部分&#…...

【vue+elementUI】输入框样式、选择器样式、树形选择器和下拉框样式修改

输入框样式、选择器样式和下拉框样式修改 1、输入框和选择器的样式修改&#xff1a;2、下拉弹框样式A. 选择器的下拉弹框样式修改B. 时间选择器的下拉弹框样式修改C. vue-treeselect树形下拉框样式 1、输入框和选择器的样式修改&#xff1a; 写在style中不能加scoped&#xff0…...

JavaScript - canvas - 放大镜

效果 示例 项目结构&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>放大镜</title><style type"text/css">div {width: 200px;height: 200px;display: inline-bl…...

PY32F003F18之输入捕获

输入捕获是定时器的功能之一&#xff0c;配合外部引脚&#xff0c;捕获脉宽时间或采集周期。 CPU中的定时器最基本的功能就是计数功能&#xff0c;其次是输入捕获(IC)&#xff0c;再次就是比较输出(OC)&#xff0c;还有就是使用引脚对外部时钟进行计数&#xff0c;触发信号捕捉…...

科目三基础四项(一)

​ 第一天&#xff0c;基础操作&#xff0c;仪表&#xff0c;方向&#xff0c;挡位 按照模块来 1、方向盘两手在两侧 ​ 编辑 转向时的角度&#xff0c;只用&#xff1a;向左540&#xff0c;向右180 向左打和向右打的角度要抵消&#xff0c;回正 掉头向左打满再回 注意…...

C语言入门Day_24 函数与指针

目录 前言&#xff1a; 1.指针和数组 2.函数和指针 3.易错点 4.思维导图 前言&#xff1a; 我们知道数组是用来存储多个数据的&#xff0c;以及我们可以用指针来指向一个变量。那么我们可以用指针来指向一个数组中的数据么&#xff1f; 指针除了可以像指向一个变量一样指…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...