入门
先决条件
- 虚幻引擎 5.4+
- Windows 10/11
- Python 3.11+ (可选,用于外部策略控制)
安装
- 将代码库克隆到你的虚幻引擎项目
Plugins/目录中:cd "YourProject/Plugins" git clone https://github.com/URLab-Sim/UnrealRoboticsLab.git - 构建第三方依赖项(一次):
Windows 的预编译二进制文件包含在
cd UnrealRoboticsLab/third_party # 运行 third_party/build_all.ps1third_party/install/(MuJoCo、libzmq、CoACD)中。 - 在虚幻引擎中打开你的
.uproject文件 -- 插件会自动加载。 - (可选)设置用于外部控制的 Python 桥接:
cd UnrealRoboticsLab/urlab_bridge pip install uv uv sync
导入你的第一个机器人
来自 MJCF XML
- 获取机器人 XML(例如,来自 MuJoCo Menagerie )。
- 将 XML 文件拖入 Unreal 内容浏览器。导入程序会自动运行
Scripts/clean_meshes.py,将网格转换为 GLB 格式(如果缺少 Python,则会优雅地回退到其他格式)。 - 蓝图会自动生成,其中包含所有关节、实体、执行器和传感器等组件。
快速转换(静态网格)
- 在关卡中放置静态网格体对象(家具、道具等)。
- 给每个动作者添加一个
MjQuickConvertComponent。 - 设置为 动态(Dynamic) 表示物理碰撞,设置为 静态(Static) 表示固定碰撞。
- 启用
ComplexMeshRequired非凸形状(使用 CoACD 分解)。
场景设置
- 在你的关卡中放置一个
MjManager动作者(每个关卡一个)。 - 将导入的机器人蓝图放置在关卡中。
- 点击播放(Play)——物理模拟自动开始。
- MjSimulate 小部件将显示(如果管理器中
bAutoCreateSimulateWidget已启用)。
控制机器人
从仪表盘
- 使用 MjSimulate 小部件中的执行器滑块来移动关节。
- 将控制源设置为 UI(在管理器上或每关节),以使用仪表板滑块而不是 ZMQ。
来自 Python (ZMQ)
cd进入urlab_bridge/.- 安装:
uv sync(或者pip install -e .). - 运行策略:
uv run src/run_policy.py --policy unitree_12dof - 或者使用图形用户界面:
uv run src/urlab_policy/policy_gui.py - 选择您的关节和策略,点击开始。
从蓝图
// 设置执行器控制值
MyArticulation->SetActuatorControl("left_hip", 0.5f);
// 读取关节状态
float Angle = MyArticulation->GetJointAngle("left_knee");
// 读取传感器数据
float Touch = MyArticulation->GetSensorScalar("foot_contact");
TArray<float> Force = MyArticulation->GetSensorReading("wrist_force");
所有的功能都是可调用的蓝图BlueprintCallable.
调式可视化
请参阅 快捷键 了解键盘快捷键。