机器人学习仿真框架

机器人学习仿真框架一般包含(自底向上):

  1. 3D仿真物理引擎:对现实世界的模拟仿真
  2. 机器人仿真平台:用于搭建工作场景,以实现agent与环境的交互学习
  3. 学习算法框架集合:不同的策略学习算法的实现
  4. 算法测试环境及benchmark:针对不同的定制化算法的测试环境以及评价标准

整体框架简要介绍

  1. 物理引擎:模拟现实世界物理行为的软件工具。可模拟牛顿动力学模型,使用质量、速度、摩擦力和空气阻力等变量,为刚性或柔性物体赋予真实的物理属性,基于此模拟物体的运动、旋转、碰撞等交互过程。本质上是一个计算器,执行模拟物理所需的数学计算。如下是一些流行的物理引擎
    • PhysX (Nvidia):属于Nvidia GameWorks软件套件的一部分,拥有刚体动力学、软体动力学、关节、车辆动力学、流体力学等特性,是游戏和机器人领域最知名的物理引擎。Nvidai在GeForce系列图形卡上启用PhysX硬件加速
    • Bullet
    • MuJoCo、Havok、ODE、RaiSim、DART、Vortex、Simbody
    • 经过某位网友调研发现(不保真),针对机器人学习领域,比较适合的物理引擎有:PhysX, Bullet, MuJoCo, RaiSim
  2. 机器人仿真平台:让用户在没有物理硬件的情况下也能快速对算法进行验证。一般来说,由于真实物理平台与仿真环境存在差异,仿真一般只在系统前期使用,后期还会要转到实际硬件平台上进行调试。如下是一些流行的机器人仿真平台
    • 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.
    • MuJoCo、CoppeliaSim、MATLAB Robotics Toolbox、Webots、UE4(Unreal Engine)、Unity3D
    • 该网友调研:Pybullet和MuJoCo在机器人学习领域尤其火
  3. 学习算法框架集合:类似于Numpy,只不过是强化学习算法的打包实现
    • 如OpenAI Baselines、PyTorch DRL、Stable Baselines3、RLlib、rlpyt、Acme
  4. 算法测试环境及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. 目前机器人模拟器主要分两种类型:1)具身智能模拟器(为强化学习算法服务的);2)传统工业控制模拟器(基于模型控制服务的)
    • 前者最早来自游戏产业,如Isaac Sim、Isaac Gym和SAPIEN都是基于PhysX这个物理引擎。Unity游戏设计框架也使用了PhysX物理引擎
    • 具身智能模拟器更注重速度,但在接触点建模方面可能不够精细,但非常适合个人/实验室用户,只需一块显卡就能训练
    • 后者像MIT Russ Tedrake开发的Drake模拟器,速度较慢,但在接触点建模方面更为精细,适用于最优控制等场景
    • 机器人模拟器和一些基础力学的模拟器,如分析材料在一定力下是否变形的模拟器,都有各自的价值。它们在不同维度上强调速度和精度的权衡,各自有不同的定位。它们之间不是完全竞争的关系
  2. 做一个好的simulator最大的挑战是什么
    • 更准确+更真实,往往需要牺牲速度和采样效率
    • 对于强化学习等任务,采样效率可能是关键;而对于一些需要真实渲染的领域,如视觉和模仿学习,渲染质量可能更重要。因此不同研究中关注的特性可能不同
    • 刚体模拟现在比较成熟,软体模拟相比之下是一个蓝海
  3. 模拟器目前没有一个大一统的标准,原因之一是许多主流模拟器背后是不同的科技巨头。如Isaac系列背后是Nvidia,MuJoCo背后是Google。这些科技巨头的目标是让模拟器与他们的硬件或编译器紧密耦合,以在自家计算平台上更好地部署(比如Nvidia的GPU、Google的TPU)
  4. 强化学习和模仿学习:
    两种算法没有直接关联,且最早应用在机器人上时是不需要模拟器的。是因为强化学习对数据的需求量很大,即采样复杂度很高,而真实世界中采集大量数据非常困难,才转向使用模拟器的。
    若想在模拟器中训练强化学习算法,就需要解决模拟器和真实机器人之间的sim2real gap问题,这个鸿沟不易填补。因此有人倾向于直接使用真实机器人数据,但强化学习对数据的需求量很大(采样复杂度很高),所以一些研究者更愿意采用模仿学习策略。
    Yuzhe称,对于相对简单的任务,他更倾向于使用模仿学习,因为人类可以轻松使用遥控器采集数据;对于一些复杂、高动态的任务,真实世界中采集数据可能很困难,因此最好的做法是在模拟器中开始,并尝试将其迁移到真实环境中,这时就需要强化学习的方法。
  5. 如何解决sim2real gap的问题?
    • 总的来说,Sim2Real Gap的问题大致分为两类:1)视觉方面的gap;2)物理方面的gap
      • 视觉方面:即外观,取决于视觉感知的可靠性。在模拟器中,机器人可以获得非常真实的深度信息,但在真实世界中,使用的深度传感器可能存在噪声和不准确性,特别是在处理透明、反光等复杂材料时,可能会出现畸变等问题。可通过:1)优化硬件;2)随机化等解决
      • 物理方面:和之前调研的差不多,论文里更详细
    • 解决方法可分为三类
      • 构建更好的模拟器:更好的物理仿真。如在深度相机仿真方面,传统方法简单地将渲染得到的物体深度直接用作深度传感器等数据,但也有一些工作采用更贴近真实深度相机原理的仿真
      • 数据增强:通过增加更丰富的数据来拉近模拟和真实环境的数据。如在模拟器中训练一个模型,使其能抓取多种属性的杯子,那么迁移到真实世界中时,该模型更有可能成功地抓取真实世界的杯子。代表性工作是Domain Randomization。这点模拟器有天然优势,可利用模拟器进行大规模数据增强
      • 寻找切入点:寻找一个在模拟器和真实世界之间差距较小的切入点,比如将问题简化,在简化的问题上使模拟器和真实世界趋于一致
  6. 对于仿真数据和真实数据
    对于一些简单的仿真任务,如抓取,在仿真中学到的策略迁移到真实世界时表现较为成熟;然而对于一些复杂的接触任务,特别是涉及接触点不断变化的情况,仿真效果并不理想,可能需要一些真实数据。因此他更倾向于使用模拟器对机器人模型进行初始化,最终通过在真实世界中微调(模型的权重)来学习出最终的策略
  7. 3D生成和模拟器
    3D生成可为模拟器提供服务,可为模拟器提供环境和素材。在模拟器中需要模拟很多3D模型和物体,而最早这些模型由艺术家手工建模,成本较高。现在人们开始考虑如何利用AI生成的模型来丰富模拟器的内容,使其更强大。
    大多数生成的3D素材以通用格式(如Mesh)存储,并且目前主流模拟器都能导入这类外部文件,因此没有出现点对点适配问题,大家都能使用和生成这些mesh格式的素材

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/456592.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apple Vision Pro市场表现分析:IDC最新数据揭示的真相

随着AR/VR技术逐渐成熟并被更多消费者接受,2024年第二季度(Q2)成为这一领域的一个重要转折点。根据国际数据公司(IDC)发布的最新报告,整个AR/VR市场在本季度经历了显著的增长。接下来,我们将深入探讨Apple Vision Pro在这股增长浪潮中的具体表现。 市场背景 2024年Q2,…

Excel:vba实现生成随机数

Sub 生成随机数字()Dim randomNumber As IntegerDim minValue As IntegerDim maxValue As Integer 设置随机数的范围(假入班级里面有43个学生,学号是从1→43)minValue 1maxValue 43 生成随机数(在1到43之间生成随机数)randomNumber Application.WorksheetFunctio…

混个1024勋章

一眨眼毕业工作已经一年了,偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候,本来以为自己这一年没学到多少东西,但是看看自己的博客其实也有在进步,虽然比不上博客里的众多大佬,但是回头看也算是自己的…

.net 根据html的input type=“week“控件的值获取星期一和星期日的日期

初始化 "week" 控件值: //MVC部分 public ActionResult WeeklyList() {int weekNo new GregorianCalendar().GetWeekOfYear(System.DateTime.Now, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday);string DefaultWeek DateTime.No…

利用移动式三维扫描技术创建考古文物的彩色纹理网格【上海沪敖3D】

文章来源于蔡司工业质量解决方案,作者蔡司工业质量 在考古环境中,三维扫描技术应用广泛,如存档、保存、复制和分享(包括实体和虚拟形式)。 文中,通过真实的扫描案例,您将了解到三维光学解决方案…

JavaWeb 23.一文速通npm的配置和使用

目录 一、npm的介绍 二、npm的安装和配置 1.安装 : 2.配置依赖下载使用阿里镜像 3. 配置全局依赖下载后存储位置 4.升级npm版本 5.环境变量配置 三、npm常用命令 1.项目初始化 npm.init npm init -y 2.安装依赖文件 3. 升级依赖 4.卸载依赖 5.查看依赖 查看项目…

Android 原生开发与Harmony原生开发浅析

Android系统 基于Linux ,架构如下 底层 (Linux )> Native ( C层) > FrameWork层 (SystemService) > 系统应用 (闹钟/日历等) 从Android发版1.0开始到现在15,经历了大大小小的变革 从Android6.0以下是个分水岭,6.0之前权限都是直接卸载Manifest中配置 6.0开始 则分普…

Rust的move关键字在线程中的使用

为什么使用 move? 在 Rust 中,move 关键字主要用于闭包。当我们在一个线程中创建一个闭包并将其传递给另一个线程时,如果闭包中使用了某些变量,就需要决定这些变量的所有权归属。 不使用 move: 默认情况下&#xff0…

LabVIEW提高开发效率技巧----事件日志记录

在LabVIEW开发中,集成事件日志记录系统是提升程序调试效率和确保系统运行稳定的关键步骤。通过记录关键操作和异常事件,开发人员可以快速定位问题、优化程序性能,并确保系统的稳定性和可靠性。 1. 事件日志的作用 事件日志是指在程序运行过…

python-PyQt项目实战案例:制作一个视频播放器

文章目录 1. 关键问题描述2. 通过OpenCV读取视频/打开摄像头抓取视频3. 通过PyQt 中的 QTimer定时器实现视频播放4. PyQt 视频播放器实现代码参考文献 1. 关键问题描述 在前面的文章中已经分享了pyqt制作图像处理工具的文章,也知道pyqt通过使用label控件显示图像的…

MySQL 初阶——多版本控制 MVCC

一、版本链(undo 日志) a. 什么是版本链 版本链就是一条以事务为节点的单链表。其 next 指针指向前一个版本的事务。 b. 版本链的增删 当一个事务被完成时,这个事务就会被加入到版本链里去;当要回滚时,版本链就会删…

微前端架构新选择:micro-app 框架一文全解析

目录 前言技术方案沙箱withiframe 环境变量主应用生命周期子应用生命周期初始化更新卸载缓存 JS 沙箱样式隔离元素隔离路由系统⭐数据通信⭐资源系统预加载umd 模式其他功能调试工具 前言 https://micro-zoe.github.io/micro-app/ micro-app 是由京东前端团队推出的一款微前端…

400V交流智能剩余电流监测系统设计与应用

摘要:针对变电站400V交流系统频繁发生剩余电流保护器跳闸的问题,本研究设计了一套智能化的分布式剩余电流监测系统。该系统利用CT传感器采集400V系统各负载端的剩余电流数据,经过运算处理后,将信息传递给交流绝缘监测装置。随后&a…

重生之“我打数据结构,真的假的?”--3.栈和队列(无习题)

栈和队列 C语言中的栈和队列总结 在C语言中,**栈(Stack)和队列(Queue)**是两种非常重要的数据结构。它们广泛用于各种应用中,比如内存管理、任务调度、表达式求值等。本文将对这两种数据结构进行详细的介…

基于Multisim的四人智力竞赛抢答器设计与仿真

1)设计任务 设计一台可供 4 名选手参加比赛的智力竞赛抢答器。 用数字显示抢答倒计时间,由“9”倒计到“0”时,无人抢答,蜂鸣器连续响 1 秒。选手抢答时,数码显示选手组号,同时蜂鸣器响 1 秒,倒…

基于Python+SQL Server2008实现(GUI)快递管理系统

快递业务管理系统的设计与实现 摘要: 着网络新零售的到来,传统物流在网购的洗礼下迅速蜕变,在这场以互联网为基础的时代变革中,哪家企业能率先转变其工作模式就能最先分得一杯羹,物流管理也不例外。传统的物流管理模式效率低下&a…

金融工程--pine-script 入门

背景 脚本基本组成 策略实现 实现马丁格尔策略 初始化变量:定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。 更新头寸:创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中,每次亏…

micro-app【微前端实战】主应用 vue3 + vite 子应用 vue3+vite

micro-app 官方文档为 https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/framework/vite 子应用 无需任何修改,直接启动子应用即可。 主应用 1. 安装微前端框架 microApp npm i micro-zoe/micro-app --save2. 导入并启用微前端框架 microApp src/main.ts …

【Ubuntu】Virtualbox下lamp集群分布式搭建Wordpress

WordPress是一种使用PHP语言开发的开源内容管理系统(CMS),也常被用作博客平台。 开发语言:PHP 数据库:MySQL、mariadb(或其他兼容的数据库系统) 授权方式:GNU通用公共许可证下发布&a…

【JavaEE】【多线程】单例模式

目录 一、设计模式1.1 单例模式1.1.1 饿汉模式1.1.2 懒汉模式 1.2 线程安全问题1.3 懒汉模式线程安全问题的解决方法1.3.1 原子性问题解决1.3.2 解决效率问题1.3.3 解决内存可见性问题和指令重排序问题 一、设计模式 在讲解案例前,先介绍一个概念设计模式&#xff…