概述
- mujoco是一种物理引擎
- 在速度和精度方面优于其他物理引擎
- mujoco没有提供商业级优化器
- 正在开发Optico新产品,提供了商业级优化器
- mojoco将用户的便携性和计算效率进行了分层设计
- 可以加载MJCF的xml格式文件也可以加载URDF模型文件。
mujoco2.0开始简称mujoco,之前称为mujocopro
Mujoco
Mujoco是一个动态库,具有C-API,可与windows、Linux和macOs兼容。适用于具有计算背景的研究人员和开发人员。
其包括:xml解析器
- 模型编译器
- 模拟器
- 交互式OpenGL可视化器
MuJoCo 可用于实现基于模型的计算,如控制合成、状态估计、系统识别、机制设计、反向动态数据分析、机器学习应用的平行采样。它也可以用作更传统的模拟器,包括游戏和交互式虚拟环境的应用程序。
Mujoco HAPTIX
MuJoCo HAPTIX 是一款具有全功能 GUI 的最终用户产品,旨在提供与 Gazebo 相关的功能,但基于 MuJoCo 物理引擎。它仅与 64 位 Windows 兼容。它有一个基于插座的 API,可显示主库中可用的函数和数据结构的子集。HAPTIX 可用作通用模拟器,或可作为根据 DARPA 手感应和触摸接口 (HAPTIX) 程序的需要定制的模拟器。为了实现后一个目标,它集成了实时运动捕获,用于移动模拟假手的底座,以及跟踪用户头部并实现立体虚拟环境。
MuJoCo Unity Plugin
MuJoCo Unity Plugin旨在用 MuJoCo 物理替换统一中的默认模拟器,使 MuJoCo 用户能够利用 Unity 的渲染和编辑功能。
Mujoco VR
MuJoCo VR 将 MuJoCo 物理与 HTC Vive 使用的 OpenVR 工具包集成,并实现交互式虚拟环境。与奥库鲁斯裂谷的对接可以以类似的方式完成。
模型实例

所有运行时间计算都使用 mjModel 执行,mjModel 太复杂,无法手动创建。这就是为什么我们有两个层次的建模。高水平的存在是为了方便用户:其唯一目的是将之汇编成一个低级别模型,根据该模型可以执行计算。由此产生的 mjModel 可以加载并保存到二进制文件 (MJB),但无法分解,因此应始终将模型维护为 XML 文件.
以下图表显示了获取 mjModel 的不同路径(同样,第二个要点尚未可用):
下面是一个简单的模型在穆乔科的MJCF格式。它定义了固定在世界上的平面,一个能够更好地照亮物体和投射阴影的光线(即使有一个内置的大灯,通常足够),以及一个带有6个DOF的浮动盒子(这就是”免费”接头的作用)。
hello.xml
<mujoco><worldbody><light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/><geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/><body pos="0 0 1"><joint type="free"/><geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/></body></worldbody></mujoco>

如果模拟此模型,盒子将落在地上。下面提供了被动动态的基本模拟代码,无需渲染。
hello.c
#include "mujoco.h"#include "stdio.h"char error[1000];mjModel* m;mjData* d;int main(void){// activate MuJoComj_activate("mjkey.txt");// load model from file and check for errorsm = mj_loadXML("hello.xml", NULL, error, 1000);if( !m ){printf("%s\n", error);return 1;}// make data corresponding to modeld = mj_makeData(m);// run simulation for 10 secondswhile( d->time<10 )mj_step(m, d);// free model and data, deactivatemj_deleteData(d);mj_deleteModel(m);mj_deactivate();return 0;}
