MuJoCo MPC(MJPC)是由Google DeepMind开发的一个交互式应用程序和软件框架,专注于利用MuJoCo实现实时预测控制。该框架允许用户轻松创建和解决复杂的机器人任务,目前支持多种基于射击的规划器。
项目结构解析
MuJoCo MPC项目的目录结构经过精心设计,每个文件夹都有特定用途:
.
├── cmake/ # CMake构建系统相关文件
├── docs/ # 详细技术文档和用户手册
├── mjpc/ # 核心控制算法实现
├── python/ # Python接口和示例脚本
├── CITATION.bib # 学术引用BibTeX格式
├── CITATION.cff # 学术引用CFF格式
├── CMakeLists.txt # 项目构建主配置
├── LICENSE # Apache-2.0开源许可证
└── README.md # 项目快速入门指南
核心目录说明
- cmake/:包含CMake构建系统的各种配置文件和检查脚本
- docs/:提供详细的用户文档,包括GUI使用指南、估计器说明等
- mjpc/:核心控制算法实现,包含代理、规划器、任务等模块
- python/:Python API接口和演示脚本
系统环境要求
支持的操作系统
- Ubuntu 20.04(经过测试)
- macOS-12(经过测试)
- 理论上也支持Windows和其他版本,但未经过充分测试
依赖软件
- CMake:构建系统
- Ninja:构建工具
- 编译器:Clang-12(推荐)或GCC
安装步骤详解
第一步:克隆项目仓库
git clone https://gitcode.com/gh_mirrors/mu/mujoco_mpc
第二步:安装系统依赖
Ubuntu 20.04系统
sudo apt-get update && sudo apt-get install cmake libgl1-mesa-dev libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev ninja-build zlib1g-dev clang-12
macOS系统
brew install ninja zlib
第三步:构建MJPC GUI应用程序
- 进入项目目录:
cd mujoco_mpc
- 创建并进入构建目录:
mkdir build
cd build
- 配置项目:
Ubuntu 20.04配置:
cmake .. -DCMAKE_BUILD_TYPE:STRING=Release -G Ninja -DCMAKE_C_COMPILER:STRING=clang-12 -DCMAKE_CXX_COMPILER:STRING=clang++-12 -DMJPC_BUILD_GRPC_SERVICE:BOOL=ON
macOS配置:
cmake .. -DCMAKE_BUILD_TYPE:STRING=Release -G Ninja -DMJPC_BUILD_GRPC_SERVICE:BOOL=ON
注意:gRPC是一个大型依赖项,初次下载可能需要10-20分钟。
- 构建项目:
cmake --build . --config=Release
- 运行GUI应用程序:
cd bin
./mjpc
预测控制核心概念
MuJoCo MPC是一个用于设计和实验预测控制算法的工具。此类算法解决以下形式的规划问题:
$$ \begin{align*} \underset{x_{1:{T}}, u_{1:T}}{\text{minimize }} & \quad \sum \limits_{t = 0}^{T} c(x_t, u_t),\ \text{subject to} & \quad x_{t+1} = f(x_t, u_t),\ & \quad (x_0 , \text{given}), \end{align*} $$
成本函数设计
行为通过指定每个时间步的成本$l$来设计,其形式为:
$$ l(x, u) = \sum_i^M w_i \cdot \text{n}_i\Big(\textbf{r}_i(x, u)\Big) $$
成本是$M$项的总和,每项包含:
- 非负标量权重$w \ge 0$,确定该术语的相对重要性
- 范数函数$\rm n(\cdot)$,接受向量并返回在$\bf 0$处达到最小值的非负标量
- 残差$\bf r$是一个向量元素,当任务解决时很小
风险敏感成本
我们还提供了一类方便的指数变换,$c(x, u) = \rho(l(x, u); R)$,可以应用于成本函数来建模风险寻求和风险规避行为。
Python API安装与使用
安装前提条件
- 成功构建MJPC(见上文说明)
- Python 3.10环境
- 安装MuJoCo:
pip install mujoco
安装Python API
- 进入python目录:
cd python
- 安装Python模块:
python setup.py install
- 测试安装是否成功:
python "mujoco_mpc/agent_test.py"
运行示例脚本
示例脚本位于python/mujoco_mpc/demos目录中。例如:
python mujoco_mpc/demos/agent/cartpole_gui.py
这将通过Python使用MuJoCo的被动查看器运行MJPC GUI应用程序。
任务规范指南
要创建新任务,至少需要两个文件:
- 一个MJCF文件,描述模拟模型和任务参数
- 一个C++文件,实现残差的计算
残差规范
成本是一系列项的总和,每项计算为残差的标量范数。每个项被定义为用户传感器,传感器值构成残差向量。
任务转换
任务类支持用于子目标到达任务的转换。转换函数在每个步骤调用,旨在允许任务规范适应代理的行为。
规划器类型
MJPC库包含多个使用不同技术执行搜索的规划器:
- 预测采样:随机搜索,无导数,控制使用样条表示
- 交叉熵方法:预测采样的所有属性,将标称策略重新拟合到精英样本的均值
- 梯度下降:需要梯度,控制使用样条表示
- 迭代线性二次高斯(iLQG):需要梯度和Hessian,控制使用直接表示
常见问题与解决方案
构建问题
如果遇到构建问题,建议删除MJPC构建目录并从头开始,因为构建可能会损坏。
Python API安装问题
如果安装失败或提前终止,建议删除MJPC构建目录以及python目录中安装过程中生成的文件。
学术引用
如果在工作中使用MJPC,请引用我们的预印本:
@article{howell2022,
title={{Predictive Sampling: Real-time Behaviour Synthesis with MuJoCo}},
author={Howell, Taylor and Gileadi, Nimrod and Tunyasuvunakool, Saran and Zakka, Kevin and Erez, Tom and Tassa, Yuval},
archivePrefix={arXiv},
eprint={2212.00541},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2212.00541},
doi={10.48550/arXiv.2212.00541},
year={2022},
month={dec}
}
注意事项
MJPC不是生产级软件,它是一个研究原型。可能存在缺失功能和明显错误。如果发现任何问题,请在问题反馈系统中报告。
通过本指南,您已经掌握了MuJoCo MPC开源框架的核心使用方法。现在就开始您的预测控制之旅吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




