MuJoCo MPC开源框架安装与使用完整指南

MuJoCo MPC(MJPC)是由Google DeepMind开发的一个交互式应用程序和软件框架,专注于利用MuJoCo实现实时预测控制。该框架允许用户轻松创建和解决复杂的机器人任务,目前支持多种基于射击的规划器。

【免费下载链接】mujoco_mpc Real-time behaviour synthesis with MuJoCo, using Predictive Control 【免费下载链接】mujoco_mpc 项目地址: https://gitcode.com/gh_mirrors/mu/mujoco_mpc

项目结构解析

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应用程序

  1. 进入项目目录:
cd mujoco_mpc
  1. 创建并进入构建目录:
mkdir build
cd build
  1. 配置项目:

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分钟。

  1. 构建项目:
cmake --build . --config=Release
  1. 运行GUI应用程序:
cd bin
./mjpc

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安装与使用

安装前提条件

  1. 成功构建MJPC(见上文说明)
  2. Python 3.10环境
  3. 安装MuJoCo:
pip install mujoco

安装Python API

  1. 进入python目录:
cd python
  1. 安装Python模块:
python setup.py install
  1. 测试安装是否成功:
python "mujoco_mpc/agent_test.py"

运行示例脚本

示例脚本位于python/mujoco_mpc/demos目录中。例如:

python mujoco_mpc/demos/agent/cartpole_gui.py

这将通过Python使用MuJoCo的被动查看器运行MJPC GUI应用程序。

任务规范指南

要创建新任务,至少需要两个文件:

  1. 一个MJCF文件,描述模拟模型和任务参数
  2. 一个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开源框架的核心使用方法。现在就开始您的预测控制之旅吧!

【免费下载链接】mujoco_mpc Real-time behaviour synthesis with MuJoCo, using Predictive Control 【免费下载链接】mujoco_mpc 项目地址: https://gitcode.com/gh_mirrors/mu/mujoco_mpc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值