机器人学习仿真框架
机器人学习仿真框架一般包含(自底向上):
- 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,输入密码 新建数据库 打开命令工具 新建表...
 
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
 
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
 
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
 
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
 
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
 
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
 
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
 
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

