📚 示例程序#

小技巧

模型和代码详见 MotrixSim Docs 仓库

在运行示例之前,请先参考 🛠️ 环境准备 完成环境准备。

我们提供了一系列示例程序帮助您从零开始掌握 MotrixSim 的使用方法。

在所有平台上(Linux、Windows、MacOS),您可以通过

uv run examples/{example_name}.py

来运行您感兴趣的示例

备注

关于 MacOS (aarch64-apple-darwin) 平台的特别说明

  • 如果示例使用了 🎨 渲染器(RenderApp),则需要使用:

    uv run mxpython examples/{example_name}.py
    
  • 如果示例不使用 RenderApp(仅进行物理仿真计算),则使用 uv run 即可,与其他平台一致

大多数需要可视化渲染的示例(如机械臂控制、机器人运动等)都会使用 RenderApp,需要使用 uv run mxpython

基础入门#

展示

文件

简介

empty

empty.py

创建空场景,相当于 Hello World 示例。

falling_ball

falling_ball.py

小球在重力作用下下落,展示如何创建modeldata

API 演示#

展示

文件

简介

actuator

actuator.py

获取和配置actuator的参数。

body

body.py

body相关 API 的使用,这里的body特指根节点的 world body。

joint

joint.py

joint相关 API 的使用,包括读写dof_positiondof_velocity

link

link.py

link相关 API 的使用。

model

model.py

model相关 API 的使用,包括单模型多实例的场景。

options

options.py

使用options对模拟器进行参数配置。

site_and_sensor

site_and_sensor.py

sitesensor相关 API 的使用。

friction

friction.py

摩擦力配置的场景。

parallelsim

parallelsim.py

多环境并行仿真。

inverse kinematics

ik.py

展示如何使用 MotrixSim 内置的 IK 模块进行逆运动学求解。

load_from_str

load_from_str.py

从字符串加载 MJCF 模型,展示如何直接从 XML 字符串创建场景。

combine_msd

combine_msd.py

组合多个 MSD 模型,展示如何使用 Scene.attach() 方法将多个模型附加到一起,支持变换和命名空间前缀。

geom

geom.py

几何体相关 API 的使用,展示如何访问和查询几何体的位置、速度等信息。

hfield

hfield.py

高度场 API 的使用,展示如何访问地形高度数据并进行统计分析。

camera_control

camera_control.py

相机控制 API 的使用,展示如何启用/禁用系统相机和场景相机,以及获取相机位姿。

custom_ui

custom_ui.py

自定义 UI 元素的使用,展示如何添加按钮和开关等交互控件。

交互控制#

展示

文件

简介

keyboard_car

keyboard_car.py

使用键盘操控小车移动,展示键盘事件的使用。使用 W 键向前移动,S 键向后移动。 转向:使用 A 键向左转,D 键向右转

mouse_click

mouse_click.py

使用鼠标点击地面移动小球,展示鼠标事件的使用。

gizmos

gizmos.py

3D 辅助绘图系统的使用,展示如何绘制球体、立方体、胶囊体、箭头、网格等可视化辅助元素。

物理仿真#

展示

文件

简介

gyroscope

gyroscope.py

陀螺的物理仿真场景。

gyroscope_zero_gravity

gyroscope_zero_gravity.py

零重力环境下的陀螺场景,展示角动量守恒的物理特性。

newton_cradle

newton_cradle.py

牛顿摆的物理仿真场景。

slope

slope.py

方块在斜坡上滚动的物理仿真模型。

local_arm

local_arm.py

由简单几何形状和joint组成的机械臂。

adhesion

adhesion.py

使用吸附功能的机械臂。

机器人应用#

展示

文件

简介

go1

go1.py

go1 机械狗的随机运动,展示如何引入神经网络和使用.onnx文件。

go2

robot_locomotion.py

go2 机械狗的键盘控制示例,方向键和wasd控制机械狗行走与转向。使用 uv run examples/robot_locomotion.py --robot go2 运行该示例。

g1

robot_locomotion.py

g1 人形机器人的键盘控制示例,方向键和wasd控制机器人行走与转向。使用 uv run examples/robot_locomotion.py --robot g1 运行该示例。

g1_parlour

robot_locomotion.py

g1 人形机器人在室内客厅场景的键盘控制示例,方向键和wasd控制机器人行走与转向。使用 uv run examples/robot_locomotion.py --robot g1 --scene parlour 运行该示例。

robotic_arm

robotic_arm.py

斯坦福机械臂使用移动命令序列进行小球的抓取与摆放。

grasp_shaking_test

grasp_mx.py

Franka Panda 机械臂的抓取与抖动测试,展示机械臂如何抓取物体并保持稳定。支持 --object 参数选择物体类型(cube/ball/bottle),--shake 参数控制是否抖动,--record 参数录制视频。

渲染与可视化#

展示

文件

简介

render_settings

render_settings.py

渲染设置配置示例,展示如何使用 RenderSettings 配置阴影、屏幕空间环境光遮蔽(SSAO)等渲染效果。

partial_rendering

partial_rendering.py

批量渲染中的选择性渲染控制,展示如何在多环境并行仿真中动态控制特定场景的可见性。按 A/D 键切换部分场景可见性,Q/E 键控制所有场景。

share_lights_between_envs

share_lights_between_envs.py

多环境间的光源共享优化,展示如何在并行仿真中共享光源以提升性能。使用 --share_lights=False 参数可禁用光源共享。