机器人学习仿真框架
机器人学习仿真框架一般包含(自底向上):
- 3D仿真物理引擎:对现实世界的模拟仿真
- 机器人仿真平台:用于搭建工作场景,以实现agent与环境的交互学习
- 学习算法框架集合:不同的策略学习算法的实现
- 算法测试环境及benchmark:针对不同的定制化算法的测试环境以及评价标准
整体框架简要介绍
- 物理引擎:模拟现实世界物理行为的软件工具。可模拟牛顿动力学模型,使用质量、速度、摩擦力和空气阻力等变量,为刚性或柔性物体赋予真实的物理属性,基于此模拟物体的运动、旋转、碰撞等交互过程。本质上是一个计算器,执行模拟物理所需的数学计算。如下是一些流行的物理引擎
- PhysX (Nvidia):属于Nvidia GameWorks软件套件的一部分,拥有刚体动力学、软体动力学、关节、车辆动力学、流体力学等特性,是游戏和机器人领域最知名的物理引擎。Nvidai在GeForce系列图形卡上启用PhysX硬件加速
- Bullet
- MuJoCo、Havok、ODE、RaiSim、DART、Vortex、Simbody
- 经过某位网友调研发现(不保真),针对机器人学习领域,比较适合的物理引擎有:PhysX, Bullet, MuJoCo, RaiSim
- 机器人仿真平台:让用户在没有物理硬件的情况下也能快速对算法进行验证。一般来说,由于真实物理平台与仿真环境存在差异,仿真一般只在系统前期使用,后期还会要转到实际硬件平台上进行调试。如下是一些流行的机器人仿真平台
- Nvidia Isaac Sim:整合了PhysX物理引擎和RTX图像渲染引擎,并引入了Pixar公司开发的USD(Universal Scene Description)描述格式作为机器人和复杂场景的描述方式
- ROS-Gazebo:可访问ODE、Bullet、Simbody、DART多个物理引擎
- PyBullet:基于Bullet物理引擎开发的仿真环境。和python紧密结合,目前在强化学习中广泛应用
- PyBullet和Bullet的区别:PyBullet is a python module for sim, robotics and machine learning, it has rendering, inverse kinematics etc. Install is just pip install pybullet, it will do all, no need to manually install Bullet c++.
Bullet C++ is the underlying physics library, you don’t need to compile or install it, pip does that.
- PyBullet和Bullet的区别:PyBullet is a python module for sim, robotics and machine learning, it has rendering, inverse kinematics etc. Install is just pip install pybullet, it will do all, no need to manually install Bullet c++.
- MuJoCo、CoppeliaSim、MATLAB Robotics Toolbox、Webots、UE4(Unreal Engine)、Unity3D
- 该网友调研:Pybullet和MuJoCo在机器人学习领域尤其火
- 学习算法框架集合:类似于Numpy,只不过是强化学习算法的打包实现
- 如OpenAI Baselines、PyTorch DRL、Stable Baselines3、RLlib、rlpyt、Acme
- 算法测试环境及benchmark
- RLBench:有100个手工设计任务,旨在促进视觉引导的manipulation领域的研究(包含强化学习、模仿学习、多任务学习、几何计算机视觉)
- ControlSuite(DeepMind)、Gym(OpenAI)、RoboSchool(OpenAI)、Robosuite(Stanford)、RoboTurk(Stanford)、PyRoboLearn、Meta-World(Stanford)、SURREAL(Stanford)、OpenSpiel(DeepMind)、PyRobot(Facebook)、S-RL Toolbox、ROBEL(Google)、Menger(Google)、SEED RL(Google)、DERL(Stanford)
一些零碎的相关概念扫盲
- 目前机器人模拟器主要分两种类型:1)具身智能模拟器(为强化学习算法服务的);2)传统工业控制模拟器(基于模型控制服务的)
- 前者最早来自游戏产业,如Isaac Sim、Isaac Gym和SAPIEN都是基于PhysX这个物理引擎。Unity游戏设计框架也使用了PhysX物理引擎
- 具身智能模拟器更注重速度,但在接触点建模方面可能不够精细,但非常适合个人/实验室用户,只需一块显卡就能训练
- 后者像MIT Russ Tedrake开发的Drake模拟器,速度较慢,但在接触点建模方面更为精细,适用于最优控制等场景
- 机器人模拟器和一些基础力学的模拟器,如分析材料在一定力下是否变形的模拟器,都有各自的价值。它们在不同维度上强调速度和精度的权衡,各自有不同的定位。它们之间不是完全竞争的关系
- 做一个好的simulator最大的挑战是什么
- 更准确+更真实,往往需要牺牲速度和采样效率
- 对于强化学习等任务,采样效率可能是关键;而对于一些需要真实渲染的领域,如视觉和模仿学习,渲染质量可能更重要。因此不同研究中关注的特性可能不同
- 刚体模拟现在比较成熟,软体模拟相比之下是一个蓝海
- 模拟器目前没有一个大一统的标准,原因之一是许多主流模拟器背后是不同的科技巨头。如Isaac系列背后是Nvidia,MuJoCo背后是Google。这些科技巨头的目标是让模拟器与他们的硬件或编译器紧密耦合,以在自家计算平台上更好地部署(比如Nvidia的GPU、Google的TPU)
- 强化学习和模仿学习:
两种算法没有直接关联,且最早应用在机器人上时是不需要模拟器的。是因为强化学习对数据的需求量很大,即采样复杂度很高,而真实世界中采集大量数据非常困难,才转向使用模拟器的。
若想在模拟器中训练强化学习算法,就需要解决模拟器和真实机器人之间的sim2real gap问题,这个鸿沟不易填补。因此有人倾向于直接使用真实机器人数据,但强化学习对数据的需求量很大(采样复杂度很高),所以一些研究者更愿意采用模仿学习策略。
Yuzhe称,对于相对简单的任务,他更倾向于使用模仿学习,因为人类可以轻松使用遥控器采集数据;对于一些复杂、高动态的任务,真实世界中采集数据可能很困难,因此最好的做法是在模拟器中开始,并尝试将其迁移到真实环境中,这时就需要强化学习的方法。 - 如何解决sim2real gap的问题?
- 总的来说,Sim2Real Gap的问题大致分为两类:1)视觉方面的gap;2)物理方面的gap
- 视觉方面:即外观,取决于视觉感知的可靠性。在模拟器中,机器人可以获得非常真实的深度信息,但在真实世界中,使用的深度传感器可能存在噪声和不准确性,特别是在处理透明、反光等复杂材料时,可能会出现畸变等问题。可通过:1)优化硬件;2)随机化等解决
- 物理方面:和之前调研的差不多,论文里更详细
- 解决方法可分为三类
- 构建更好的模拟器:更好的物理仿真。如在深度相机仿真方面,传统方法简单地将渲染得到的物体深度直接用作深度传感器等数据,但也有一些工作采用更贴近真实深度相机原理的仿真
- 数据增强:通过增加更丰富的数据来拉近模拟和真实环境的数据。如在模拟器中训练一个模型,使其能抓取多种属性的杯子,那么迁移到真实世界中时,该模型更有可能成功地抓取真实世界的杯子。代表性工作是Domain Randomization。这点模拟器有天然优势,可利用模拟器进行大规模数据增强
- 寻找切入点:寻找一个在模拟器和真实世界之间差距较小的切入点,比如将问题简化,在简化的问题上使模拟器和真实世界趋于一致
- 总的来说,Sim2Real Gap的问题大致分为两类:1)视觉方面的gap;2)物理方面的gap
- 对于仿真数据和真实数据
对于一些简单的仿真任务,如抓取,在仿真中学到的策略迁移到真实世界时表现较为成熟;然而对于一些复杂的接触任务,特别是涉及接触点不断变化的情况,仿真效果并不理想,可能需要一些真实数据。因此他更倾向于使用模拟器对机器人模型进行初始化,最终通过在真实世界中微调(模型的权重)来学习出最终的策略 - 3D生成和模拟器
3D生成可为模拟器提供服务,可为模拟器提供环境和素材。在模拟器中需要模拟很多3D模型和物体,而最早这些模型由艺术家手工建模,成本较高。现在人们开始考虑如何利用AI生成的模型来丰富模拟器的内容,使其更强大。
大多数生成的3D素材以通用格式(如Mesh)存储,并且目前主流模拟器都能导入这类外部文件,因此没有出现点对点适配问题,大家都能使用和生成这些mesh格式的素材
相关文章:
机器人学习仿真框架
机器人学习仿真框架一般包含(自底向上): 3D仿真物理引擎:对现实世界的模拟仿真机器人仿真平台:用于搭建工作场景,以实现agent与环境的交互学习学习算法框架集合:不同的策略学习算法的实现算法测…...
力扣每日一题打卡 3180. 执行操作可获得的最大总奖励 I
给你一个整数数组 rewardValues,长度为 n,代表奖励的值。 最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 : 从区间 [0, n - 1] 中选择一个 未标记 的下标 i。如果 rewardValues[i] 大于…...
NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
在科技日新月异的今天,视频监控系统作为现代社会的“第三只眼”,正以前所未有的方式深刻影响着我们的生活与社会结构。从公共场所的安全监控到个人生活的记录分享,视频监控系统以其独特的视角和功能,为社会带来了诸多好处…...
springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip
车辆管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足,创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的系统…...
2024.10月22日- MySql的 补充知识点
1、什么是数据库事务? 数据库事务: 是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 2、Mysql事务的四大特性是什么? …...
Java中的对象——生命周期详解
1. 对象的创建 1.1 使用 new 关键字 执行过程:当使用 new 关键字创建对象时,JVM 会为新对象在堆内存中分配一块空间,并调用对应的构造器来初始化对象。 示例代码: MyClass obj new MyClass(); 内存变化:JVM 在堆…...
vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
检查 Node.js 版本:这个问题可能与 Node.js 的版本有关。你可以尝试将 Node.js 的版本切换到 12 或更低。如果没有安装 nvm(Node Version Manager),可以通过以下命令安装: curl -o- https://raw.githubusercontent.co…...
第 6 章 机器人系统仿真
对于ROS新手而言,可能会有疑问:学习机器人操作系统,实体机器人是必须的吗?答案是否定的,机器人一般价格不菲,为了降低机器人学习、调试成本,在ROS中提供了系统的机器人仿真实现,通过仿真&#x…...
爬虫——scrapy的基本使用
一,scrapy的概念和流程 1. scrapy的概念 Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 框架就是把之前简单的操作抽象成一套系统,这样我们在使用框架的时候,它会自动的帮我们完成很…...
聚类分析算法——K-means聚类 详解
K-means 聚类是一种常用的基于距离的聚类算法,旨在将数据集划分为 个簇。算法的目标是最小化簇内的点到簇中心的距离总和。下面,我们将从 K-means 的底层原理、算法步骤、数学基础、距离度量方法、参数选择、优缺点 和 源代码实现 等角度进行详细解析。…...
【Sublime Text】设置中文 最新最详细
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Sublime Text】设置中文 最新最详细 开…...
C++学习路线(二十四)
静态成员函数 类的静态方法: 1.可以直接通过类来访问【更常用】,也可以通过对象(实例)来访问。 2.在类的静态方法中,不能访问普通数据成员和普通成员函数(对象的数据成员和成员函数) 1)静态数据成员 可以直接访问“静态数据成员”对象的成…...
MySQL-存储过程/函数/触发器
文章目录 什么是存储过程存储过程的优缺点存储过程的基本使用存储过程的创建存储过程的调用存储过程的删除存储过程的查看delimiter命令 MySQL中的变量系统变量用户变量局部变量参数 if语句case语句while循环repeat循环loop循环游标cursor捕获异常并处理存储函数触发器触发器概…...
前端页面样式没效果?没应用上?
当我们在开发项目时会有很多个页面、相同的标签,也有可能有相同的class值。样式设置的多了,分不清哪个是当前应用的。我们可以使用网页的开发者工具。 在我们开发的网页中按下f12或: 在打开的工具中我们可以使用元素选择器,单击我…...
Mac apache配置cgi环境-修改httpd.conf文件、启动apache
Mac自带Apache,配置CGI,分以下几步: 找到httpd.conf。打开终端,编辑以下几处,去掉#或补充内容。在这个路径下写一个测试文件.py格式的,/Library/WebServer/CGI-Executables,注意第一行的python…...
多厂商的实现不同vlan间通信
Cisco单臂路由 Cisco路由器配置 -交换机配置 -pc配置 华三的单臂路由 -路由器配置 -华三的接口默认是打开的 -pc配置及ping的结果 -注意不要忘记配置默认网关 Cisco-SVI -交换机的配置 -创建vlan -> 设置物理接口对应的Acess或Trunk -> 进入vlan接口,打开接…...
sh与bash的区别
sh与bash的区别 结论:对于一般开发者,没有区别;对于要使脚本兼容较老系统,或者兼容其他shell(如ksh,dash),那么意义可能很重大,要确保自己代码没有bash扩展的特性。 区…...
D48【python 接口自动化学习】- python基础之类
day48 练习:开发自动咖啡(上) 学习日期:20241025 学习目标:类 -- 62 小试牛刀:如何开发自动咖啡机?(上) 学习笔记: 案例解析 定义类 定义属性和方法 clas…...
PostgreSQL(WINDOWS)下载、安装、简单使用
下载 PostgreSQL: Downloads PostgreSQL: Windows installers EDB: Open-Source, Enterprise Postgres Database Management 安装 注意密码要方便自己使用,不能忘记。 打开pgAdmin,输入密码 新建数据库 打开命令工具 新建表...
Git的初次使用
一、下载git 找淘宝的镜像去下载比较快 点击这里 二、配置git 1.打开git命令框 2.设置配置 git config --global user.name "你的用名"git config --global user.email "你的邮箱qq.com" 3.制作本地仓库 新建一个文件夹即可,然后在文件夹…...
rocketmq服务的docker启动和配置
rocketmq的默认启动参数占用的内存实在是太大了,小于8G的电脑无法启动,docker中的开发环境又不可能用这么大,通用的该法是改sh文件 修改文件如下 runbroker.sh 默认8G JAVA_OPT"${JAVA_OPT} -server -Xms${Xms} -Xmx${Xmx} -Xmn${Xmn…...
BLE和经典蓝牙相比,有什么优缺点
蓝牙低功耗(Bluetooth Low Energy,简称 BLE)和经典蓝牙(Bluetooth Classic,即 BR/EDR,Basic Rate/Enhanced Data Rate)是蓝牙技术的两种主要模式。两者都有各自的优缺点,具体如下&am…...
ECharts图表图例知识点小结
ECharts 图表图例简述 一、知识点 1. 作用: - 用于标识图表中的不同系列,帮助用户理解图表所展示的数据内容。 2. 位置: - 可以通过配置项设置图例的位置,如 top 、 bottom 、 left 、 right 等。 3. 显示状态控制:…...
LabVIEW非接触式模态参数识别系统开发
基于LabVIEW的模态参数识别系统采用非接触式声学方法,结合LabVIEW软件和高精度硬件,实现机械结构模态参数的快速准确识别。降低了模态分析技术门槛,提高测试效率和准确性。 项目背景与意义: 传统的模态分析方法,如锤击法&#x…...
厨艺爱好者的在线家园:基于Spring Boot的实现
1 绪论 1.1 研究背景 现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时间变得更加地宝贵化,因为每天的…...
PostgreSQL使用clickhouse_fdw访问ClickHouse
Postgres postgres版本:16(测试可用)docker 安装 插件安装 clickhouse_fdw: https://github.com/ildus/clickhouse_fdw 安装命令 git clone gitgithub.com:ildus/clickhouse_fdw.git cd clickhouse_fdw mkdir build && cd build…...
docker 单节点arm架构服务器安装zookeeper、kafka并测试通信
kafka、zookeeper常用镜像介绍 kafka和zookeeper常见的镜像有以下三个:wurstmeister/zookeeper、kafka、confluentinc/cp-zookeeper、cp-kafka 和 bitnami/zookeeper、kafka。 wurstmeister/xxx: 由wurstmeister团队维护,提供的镜像适用于开发和测试环…...
AnaTraf | 全面掌握网络健康状态:全流量的分布式网络性能监测系统
AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具AnaTraf网络流量分析仪是一款基于全流量,能够实时监控网络流量和历史流量回溯分析的网络性能监控与诊断系统(NPMD)。通过对网络各个关键节点的监测,收集网络性能…...
单片机入门教程
单片机入门教程 单片机是一种将中央处理器(CPU)、存储器、输入输出接口等集成在一个芯片上的微型计算机系统。本教程将带你从零开始学习如何使用一款常见的单片机——ATmega328P,并编写简单的控制程序。 1. 单片机简介 1.1 什么是单片机&a…...
wordpress 论坛/微信公众号推广方法有哪些
很多朋友的APP推广链接需要在微信中进行的网页宣传、传播、下载等等,但是各位朋友一定发现了微信中是屏蔽掉了APP的下载链接的。但是微信最为一个最大的社交平台,为了自身的利益,屏蔽掉了所有APK的下载链接。我们要怎么解决这个问题呢&#x…...
论述网站开发建设的一般流程/发稿网
HoloLens可以让我们在真实世界中看到全息图像内容。但是它本质上还是一台Windows 10设备,这意味着HoloLens可以以2D应用形式运行Windows Store里的大部分UWP应用。 目标平台设为Windows.Universal Targeting Windows.Universal 微软过去几年平台一直在变革ÿ…...
wordpress 另类主题/防晒霜营销软文
简介不知从什么时间起,“共享单车”这一概念在忽然间火遍了全国,ofo小黄车,摩拜单车……逐渐走入到我们的生活中。特别是在一线城市,共享单车成为广大白领们不可或缺的交通工具。今天我们就kaggle上的共享单车数据集进行分析。分析…...
深入浅出wordpress 中文/seo搜索引擎优化ppt
我创建包含三个项目的菜单文件 . 操作栏中的菜单仅显示三个项目,但在同一页面上的移动菜单按钮(硬件按钮)上显示相同的项目两次 . 我使用了menu.clear()但它没有用 . 如有任何解决方案,请建议我 . 我用问题附上了代码 . 请回复我 . 先感谢您 .Overridepu…...
专门做优惠券的网站/白城seo
线程池: 就是new一堆线程,当有任务到来时,抓一个线程去执行,执行完之后再丢回线程池。 省去了新建和注销线程的开销。 一、线程池工作分为以下几步: (1)创建线程固定数目的线程(如:20个),并让线程挂起等待任务(2)给某个…...
购物网站开发的背景与意义/seo研究中心qq群
hdfs中使用的是hadoop用户,但是有些脚本任务是在root中执行的,这个时候可以使用sudo -u hadoop切换用户执行hadoop命令,但是会提示如下: [rootxxx qingfeng]# sudo -u hadoop hadoop fs -rmr /user/hive/warehouse/xxxxx.db sudo…...