MuJoCo 学习笔记

news2024/11/13 19:18:29

1. MuJoCo 简介

MuJoCo 是一个通用的物理引擎,旨在促进机器人、生物力学、图形与动画等领域的研究和开发(需要快速准确模拟铰接体与环境相互作用的场景)。MuJoCo 一词取自多关节接触动力学(Multi-Joint dynamics with Contact)。

  • 最早由 Roboti LLC 开发
  • 2021年10月被 DeepMind 收购,推出 Version 2.1.0
  • 2022年3月推出 Version 2.1.2,添加 Python 接口,并于2022年5月开源

用户手册:

Overview - MuJoCo Documentation

2. MuJoCo安装 

请参考笔者另外一篇博客:MuJoCo210 和 Mujoco-py 在 Ubuntu22.04 下的安装

3. 建模

MuJoCo 建模语言使用XML与MJB。XML包括原生的MJCF与受限的URDF格式。MJB文件通常是保存的模型。

有三种方式读取mjModel:

(text editor) → MJCF/URDF file → (MuJoCo parser → mjSpec → compiler) → mjModel
(user code) → mjSpec → (MuJoCo compiler) → mjModel
MJB file → (model loader) → mjModel

1. 通过文本编辑器读取MJCF/URDF文件

这种方式涉及将模型定义为MJCF(MuJoCo文件格式)或URDF(统一机器人描述格式)文件,然后使用MuJoCo的解析器和编译器来生成mjModel。

  • 1)用户在文本编辑器中创建一个MJCF或URDF文件,定义机器人模型的结构、几何形状、关节、材料等。
  • 2)使用mj_loadXML API读取这个文件。这个API会调用MuJoCo的解析器来解析文件内容。
  • 3)解析器将文件内容转换为mjSpec,这是一个内部表示,包含了模型的所有信息。
  • 4)mjSpec然后被传递给MuJoCo的编译器,编译器生成最终的mjModel,这是一个包含了模型所有信息的二进制结构,可以直接用于仿真。

2. 用户代码直接操作mjSpec

这种方式允许用户直接在代码中构建mjSpec,然后使用MuJoCo的编译器生成mjModel。

  • 1)用户在自己的代码中直接构建mjSpec,这可能涉及到直接操作MuJoCo的C结构体和数组。
  • 2)一旦mjSpec构建完成,用户调用MuJoCo的编译器API(如mjcompilemjcompileModel)来生成mjModel。
  • 3)生成的mjModel可以直接用于仿真。

这种方式适合于需要动态生成模型或对模型有复杂操作的场景,因为它允许用户在运行时构建和修改模型。

3. 从MJB文件加载模型

MJB是MuJoCo的二进制文件格式,它已经包含了编译后的mjModel。

  • 1)用户使用mj_loadFilemj_load API从MJB文件中加载模型。
  • 2)这些API直接调用模型加载器,加载器解析MJB文件并生成mjModel。

这种方式是最快的,因为模型已经预先编译,不需要解析和编译步骤。它适用于那些需要快速加载模型的场景,或者当模型太大而不适合每次都从文本文件解析和编译时。

总结

这三种方式各有优势,选择哪种方式取决于具体的应用场景和需求:

  • 文本编辑器读取MJCF/URDF文件:适合需要手动编辑模型文件的场景。
  • 用户代码直接操作mjSpec:适合需要动态构建或复杂操作模型的场景。
  • 从MJB文件加载模型:适合需要快速加载预编译模型的场景。

4. MuJoCo模型的元素

1. Options

每个模型总是包括下列三组Options。如果未在 XML 文件中指定它们的值,则使用默认值。这些选项的设计使得用户可以在每个模拟时间步骤之前更改它们的值。但在一个时间步骤内,则不应更改任何选项。

  • mjOption

影响物理模拟的选项:用于选择算法和设置其参数,启用和禁用仿真流水线的不同部分,并调整系统级物理属性,如重力。

  • mjVisual

可视化选项:以及OpenGL 呈现选项,这些选项是依赖于会话的,并且不是模型的一部分。

  • mjStatistic

编译器计算的模型的统计信息: 平均体重、模型的空间范围等。包含它是为了提供信息,也是为可视化工具将其用于自动定标。

2. Assets

在MuJoCo中,assets部分是模型定义中用于存储可被模型元素引用的资源集合。这些资源包括网格(meshes)、纹理(textures)和材料(materials)。assets允许模型元素通过引用这些资源来定义其外观和物理属性,而无需在每个模型元素中重复定义这些信息。下面我将对每个资源类型进行更具体的说明:

Mesh(网格)
  • 定义:Mesh是三维模型中的几何结构,由顶点、边和面组成,通常用于定义复杂的形状,如机器人的外壳或物体的表面。
  • 来源:MuJoCo可以从OBJ文件和二进制STL文件中加载三角网格。OBJ和STL是两种常见的三维模型文件格式,OBJ文件包含顶点和面的信息,而STL文件则包含三角面片的详细信息。
  • 转换工具:可以使用如MeshLab这样的软件将其他格式的三维模型文件转换为OBJ或STL格式。
  • 引用:在模型元素(如geom)中,可以通过mesh属性引用一个mesh资源。
Texture(纹理)
  • 定义:Texture是用于给模型元素添加细节和颜色的图像文件,它可以模拟表面材质的视觉效果。
  • 来源:Texture可以从PNG文件中加载,PNG是一种常用的图像文件格式,支持透明度。
  • 合成:除了直接加载图像文件,MuJoCo的编译器还可以根据用户定义的过程参数合成纹理。
  • 引用方式:Texture不能直接从模型元素引用,而是必须先从material中引用,然后模型元素通过引用material来间接使用纹理。
Material(材料)
  • 定义:Material定义了模型元素(如几何体geom、视觉点site和肌腱tendon)的外观,包括颜色、反射率、光泽度等属性。
  • 外观控制:通过OpenGL的属性,material可以控制光照与模型元素的交互效果,如RGBA(红绿蓝透明度)、反射、亮度和发射。
  • 引用:模型元素通过material属性来引用一个material资源,从而继承其外观属性。
总结

assets在MuJoCo中的作用是提供一种集中管理模型资源的方式,使得模型元素可以通过引用这些资源来复用外观和物理属性,而不是在每个元素中重复定义。这样做的好处是简化了模型的定义,使得模型更加易于管理和修改。每个asset都有一个唯一的名称,模型元素通过这个名称来引用相应的资源。这种设计允许灵活地组合和重用资源,提高了模型定义的效率和灵活性。

https://zhuanlan.zhihu.com/p/696094248

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

scrcpy-client pyscrcpy 报ConnectionError(“Video stream is disconnected“)

异常 Video stream is disconnected代码详情,scrcpy-client 使用0.4.7版本 import time import scrcpy from adbutils import adb import cv2def on_frame(frame):# If you set non-blocking (default) in constructor, the frame event receiver# may receive No…

新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了,我基本上都是通过docker去管理一些容器如:mysql、redis、mongoDB等之类的镜像,还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…

wordpress搭建主题可配置json

网站首页展示 在线访问链接 http://dahua.bloggo.chat/ 配置json文件 我使用的是argon主题,你需要先安装好主题,然后可以导入我的json文件一键配置。 需要json界面配置文件的,可以在评论区回复,看见评论我会私发给你。~

VMware Workstation Pro 最新版下载路径图示

从 2024 年 5 月开始,VMware Workstation Pro 宣布免费供个人使用。这意味着我们可以在无需许可证密钥或任何持续费用的前提下,在 Windows 或 Linux 上下载并使用这款强大的虚拟机软件的全部功能。 1、进入官网 你会发现找不到VMware workstation Pro 的…

【软件测试】设计测试用例的万能公式

文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例? 测试⽤例(Test Case)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包…

linux命令详解,ssh服务+远程拷贝

ssh服务 ssh(Secure Shell)命令用于安全地远程登录到另一台计算机,并执行命令和传输文件。ssh 提供了加密的通信通道,确保数据传输的安全性。 ssh [选项] [用户]主机 [命令]常用选项 -V:显示 ssh 版本信息。-v&…

“高级Java编程复习指南:深入理解并发编程、JVM优化与分布式系统架构“

我的个人主页 接下来我将方享四道由易到难的编程题,进入我们的JavaSE复习之旅。 1:大小写转换------题目链接 解题思路: 在ASCII码表中,⼤写字⺟A-Z的Ascii码值为65- 90,⼩写字⺟a-z的Ascii码值为97-122。每个字 ⺟…

SQL面试题——飞猪SQL面试 重点用户

飞猪SQL面试题—重点用户 在一些场景中我们经常听到这样的一些描述,例如20%的用户贡献了80%的销售额,或者是20%的人拥有着80%的财富,你知道这样的数据是怎么算出来的吗 数据如下,uid 是用户的id ,amount是用户的消费金额 |uid|amount| ---…

操作系统OS--进程

目录 操作系统是什么 进程 进程的状态 1.并行和并发 2.时间片 进程优先级 进程切换 task_struct内容分类: 操作系统是什么 操作系统本质上是一款纯正的“搞管理”的软件 你的程序不能直接写入硬件,都必须通过操作系统 对软硬件之间进行交互&…

Spring——容器:IoC

容器:IoC IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来…

全自动火腿肉馅斩拌机:

全自动火腿肉馅斩拌机通过斩切作用提高产品的细密度和弹性,广泛应用于肉制品的深加工制作,如制作肉丸、香肠等。其工作原理是利用斩刀高速旋转的斩切作用,将原料进行斩切和乳化处理,从而提高产品的细腻度和弹性。斩拌机具有以下特…

音视频入门基础:MPEG2-TS专题(3)——TS Header简介

注:本文有部分内容引用了维基百科:https://zh.wikipedia.org/wiki/MPEG2-TS 一、引言 本文对MPEG2-TS格式的TS Header进行简介。 进行简介之前,请各位先下载MPEG2-TS的官方文档。ITU-T和ISO/IEC都分别提供MPEG2-TS的官方文档。但是ITU提供的…

NCC前端调用查询弹框

系统自带的查询模板 弹框 调启使用默认的 查询模板 是在 单据模板的 列表模板中,有个查询区域 ,查询区域就是查询模板内容如果在列表页做客开 新增按钮 调启查询模板 无问题,但是目前需求是需要再卡片页面下调启系统标准的调启模板代码 //调…

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平菜单导航栏是网站设计中应用范围最广的导航设计&#xff0c;一般放置在页面的顶部。水平导航适用性强&#xff0c;几乎所有类型的网站都可以使用&#xff0c;设计难度较低。 8.1.1 简单水平导航栏的设计与实现 8.1.1.1导航栏的创建 <nav>标签…

labview拆解日期字符串

今天在写测试时&#xff0c;发现有些时候需要把日期和时间拆分开来&#xff0c;由于项目采集到的日期是一个数字字符串&#xff0c;需要把他们转换成带日期格式的字符串分别显示&#xff0c;这里还是用到了数组到电子表格字符串转换的函数。 下面示例如下&#xff0c;首先我们…

Kafka - 启用安全通信和认证机制_SSL + SASL

文章目录 官方资料概述制作kakfa证书1.1 openssl 生成CA1.2 生成server端秘钥对以及证书仓库1.3 CA 签名证书1.4 服务端秘钥库导入签名证书以及CA根证书1.5 生成服务端信任库并导入CA根数据1.6 生成客户端信任库并导入CA根证书 2 配置zookeeper SASL认证2.1 编写zk_server_jass…

Ubuntu22.04安装DataEase

看到DataEase的驾驶舱&#xff0c;感觉比PowerBI要好用一点&#xff0c;于是搭建起来玩玩。Dataease推荐的操作系统是Ubuntu22.04/Centos 7。 下载了Ubuntu22.04和DataEase 最新版本的离线安装包 一.安装ubuntu22.04 在安装的时候&#xff0c;没有顺手设置IP地址信息&#xff…

使用iviewui组件库的坑

背景 使用view-design组件库的Input组件的时候&#xff0c;按照产品的要求&#xff0c;输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性&#xff0c;设置类型为number时&#xff0c;乍一看没啥问题&#xff0c;但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…

AI绘图最强软件stable diffusion,一文带你迅速了解!

有需要stable diffusion整合包可以扫描下方&#xff0c;免费获取 01 — 什么是 SD ​ Stable Difusion(简称 SD) 其三种概念。 1.用来指代稳定扩散(Stable Diffusion) 技术,如 Midjourney是基于Stable Difusion技术实现的就是指它运用了 Stable Diffusion 的技术原理。 …

Unity3D实现视频和模型融合效果

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示如下👉二、VideoPlayer播放视频(一)👉2-1、Hieraechy面板右键创建videoPlayer👉2-2、Assets面板右键创建RenderTexture👉2-3、把设置好的RenderTexture拖到videoPlayer里面还有本地视频视频�…