最近更新时间:2026-06-08 16:37:55
MuJoCo 是一款通用物理引擎,旨在促进机器人技术、生物力学、图形动画、机器学习以及其他需要快速准确地模拟铰接式结构与环境交互的领域的研究和开发。MuJoCo 是一个带有 C API 的 C/C++ 库,面向研究人员和开发人员。运行时模拟模块经过优化,可最大程度地提升性能,并基于内置 XML 解析器和编译器预先分配的低级数据结构进行操作。用户使用原生 MJCF 场景描述语言定义模型。此外,还可以加载 URDF 模型文件。该库包含一个原生 GUI 的交互式可视化功能,并以 OpenGL 渲染。MuJoCo 可用于实现基于模型的计算,例如控制综合、状态估计、系统辨识、机构设计、通过逆动力学进行数据分析以及机器学习应用的并行采样。
Gazebo 是 ROS 系统中最为常用的三维物理仿真平台,支持动力学引擎,可以实现高质量的图形渲染,不仅可以模拟机器人及周边环境,还可以加入摩擦力、弹性系数等物理属性。Gazebo 仿真平台可以帮助验证机器人算法、优化机器人设计、测试机器人场景应用,为机器人开发提供更多可能。
MuJoCo:
高精度动力学计算。
轻量级与高效性。
灵活的模型描述与配置。
强化学习友好性。
Gazebo:
多机器人与复杂环境仿真。
高保真传感器模拟。
与 ROS(机器人操作系统)深度集成。
可视化与调试工具。
MuJoCo:
机器人动力学与控制算法研究。
强化学习(RL)训练。
生物力学仿真。
Gazebo:
多机器人协作与群体智能。
机器人感知与导航算法测试。
工业机器人系统集成验证。
机器人教学与培训。
本实践基于容器部署方式,适用于高弹性需求的业务,可以更方便地分配资源,支持即开即用。需创建容器集群和资源池后新建开发任务,使用 IDE 和基于容器的远程访问工具启动仿真服务。
在星流平台中提前创建以下计算资源:
GPU节点的资源组,该GPU节点需具有足够的硬盘空间且已安装GPU显卡驱动。
基于GPU资源组创建相应的GPU 队列。
若平台已有资源组,但当前资源组无可用的GPU节点,可参考管理资源组-新增节点相关内容进行添加。
确保有可用的弹性 IP,用于自定义服务的公网访问。具体可参考弹性 IP 相关文档进行创建。
推荐使用 Chrome 浏览器访问远程桌面。
登录星流平台,在顶部导航栏,选择 训练与仿真 > 开发任务。
在开发任务管理页面,点击 +新建。
在新建开发任务页面,按照如下要求配置各项参数:
任务名称:用户自定义即可。
镜像类型:选择官方镜像。
镜像:选择目标仿真服务对应的官方镜像。
仿真 Gazebo :选择 gazebo-harmonic-ros2-jazzy官方镜像。
仿真 MuJoCo :选择 mujoco3.3.4官方镜像。
资源组:选择准备工作中提前创建好的 GPU 资源组。
队列:选择准备工作中提前创建好的 GPU 队列。
资源规格:根据实际情况选择相应的 GPU 类型,设置 GPU 卡数、CPU 核数和内存。
挂载配置:可根据实际情况选择相应存储配置。
自定义服务:点击添加自定义服务,配置以下参数:
服务名称:用户自定义即可。
端口:设置为 4000。
访问类型:勾选公网访问。若无可用的弹性 IP,则可参考弹性IP相关文档,进行新建。
其它参数保持默认或根据实际情况进行修改即可。
完成上述参数设置后,点击确定,返回开发任务列表页面,等待开发任务状态变为运行中。
在开发任务列表页面,点击指定任务操作列中的连接,通过 Web IDE 任意方式连接到容器终端即可。本实践采用 Jupyter Notebook 形式,具体可参考连接开发任务相关内容。
前文创建开发任务的操作中,自定义服务设置访问端口为 4000,需将当前开发任务所在实例的安全组增加入站规则。
在星流平台,点击左侧导航栏 资源管理 > 资源组。
在资源组列表内,找到前文操作中所使用的资源组,点击其名称或 ID,进入详情页面。
在资源配置区域,查看当前资源组所在的 VPC 网络。
登录金山云网络控制台,在左侧导航栏选择安全组(防火墙),在顶部搜索框内选择上一步 VPC 网络,点击目标安全组名称和 ID,进入其详情页面。
选择入站规则页签,点击添加,开放端口 4000。
在终端执行以下命令,启动 kasmVNC 远程桌面服务。
/docker_config/entrypoint.sh若上述命令无法开启服务,可尝试执行如下命令。
vncserver :1 -websocketPort 4000 -rfbport 5901 -publicIP <自定义服务公网IP> -interface 0.0.0.0使用浏览器访问 https://<自定义服务公网IP>:4000 以连接远程桌面,推荐使用 Chrome 浏览器。连接登录账号密码默认为 root 和 kasmvncpasswd,登录后即可远程使用仿真服务。
以下操作适用于选择 gazebo-harmonic-ros2-jazzy 镜像的开发任务。
连接 Gazebo 仿真桌面后,打开终端输入 gz sim 打开 Gazebo 客户端。
点击运行官方示例,模拟机器人关节运动。
Gazebo镜像内置ros2 jazzy,可以尝试以下示例检测ros是否正常。
在一个终端中,运行 C++ :talker
ros2 run demo_nodes_cpp talker在第二个终端中,运行 Python :listener
ros2 run demo_nodes_py listener如果看到以下结果,listener能接受到talker发布的信息,说明ros能正常工作。
以下操作适用于选择 mujoco3.3.4 镜像的开发任务。
连接 MuJoCo 仿真桌面后,新建一个 Python 脚本并添加以下内容,用来加载 MuJoCo 自带的 XML 模型文件 humanoid.xml:
import mujoco
# 您的实际安装路径
model_path = '/root/mujoco-3.3.4/model/humanoid/humanoid.xml'
model = mujoco.MjModel.from_xml_path(model_path)
data = mujoco.MjData(model)
print(data)
# 调用计时 API 确保其他组件正常安装
for _ in range(1000):
mujoco.mj_step(model, data)
print("Test done.")在终端运行示例:
python test.py 回显如下:
<mujoco._structs.MjData object at 0x7f4e78633370>
Test done.执行下面的命令运行仿真器:
/root/mujoco-3.3.4/bin/simulate /root/mujoco-3.3.4/model/humanoid/humanoid.xml运行后会弹出仿真器,此时需要确认以下几点是可用的:
小人在没有干预的情况下逐渐躺到在地面;
右侧打开 Control 面板拖动控制条,小人对应的关节是可动的;
纯净模式
