urlab_bridge
用于 虚幻机器人实验室 (Unreal Robotics Lab, ULab) 的 Python 中间件,即通过 ZeroMQ 将神经网络策略连接到 MuJoCo-in-Unreal 仿真。
运行预训练的运动策略、可视化关节状态和摄像头流,或将所有内容桥接到 ROS 2,即所有操作均可通过单个 Python 包完成。
安装
conda activate hutb_3.11
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 重新打开cmd
# 递归克隆仓库
git clone https://github.com/donghaiwang/URLab_Bridge.git --recursive
# 推荐 uv,安装方法:https://hellowac.github.io/uv-zh-cn/getting-started/installation/#__tabbed_1_2
cd URLab_Bridge
uv sync # 核心依赖 (ZMQ, NumPy, OpenCV, DearPyGui)
cd
pip install -e .
# 运行策略 (可选):
uv sync --extra policy # + PyTorch, ONNX 等
uv pip install -e ./RoboJuDo # 策略框架 (内置的子模块):安装模块 robojudo
仪表盘(关节、传感器、摄像头、执行器控制)无需策略扩展即可正常工作。只有当您需要运行神经网络策略时才需要 RoboJuDo。
需要 Python 3.11 或更高版本。
快速开始
# 启动仪表盘 (关节/传感器/相机查看器、执行器控制、可选策略运行器),注意在关卡中必须放置 AMjManager,否则连接不上
uv run src/run.py --ui
# 以无头模式(不打开图形界面)运行特定策略
uv run src/run.py --policy unitree_12dof --prefix g1
# 测试 ZMQ 连接
uv run src/run.py --test --prefix g1
可用策略
| 关键字 | 机器人 | 自由度(Degrees of Freedom, DOF) | 描述 | 需要永久人形控制(Perpetual Humanoid Control , PHC) |
|---|---|---|---|---|
unitree_12dof |
G1 | 12 | 基本行走——WASD 扭转控制 | |
unitree_wo_gait |
G1 | 29 | 无需步态时钟即可进行全身行走 | |
smooth |
G1 | 29 | 更平稳的步行策略 | |
beyondmimic_dance |
G1 | 29 | 动作模仿——舞蹈 | Y |
h2h |
G1 | 21 | 人体运动重定向 | Y |
amo |
G1 | 29 | 自适应运动优化 | Y |
twist_tracker |
G1 | 12 | 带扭动功能的运动追踪器 | Y |
go2_wtw |
Go2 | 12 | 沿着这些路行走的崎岖地形 |
标记为 PHC 的策略需要 RoboJuDo 内部安装 PHC 子模块。
ZMQ 协议
URLab 通过 ZeroMQ PUB/SUB 套接字发布二进制打包的数据。所有主题都以划分名称为前缀(例如 g1/)。
| 主题模式 | 方向 | 有效载荷格式 |
|---|---|---|
{prefix}/joint/{id} |
Unreal -> Python | <Ifff (ID, pos, vel, acc) |
{prefix}/sensor/{name} |
Unreal -> Python | <I ID + <I dim + f*N floats |
{prefix}/camera/{name} |
Unreal -> Python | Raw BGRA bytes (dedicated socket) |
{prefix}/control |
Python -> Unreal | <I count + (<If)*N (ID, value) pairs |
- 状态套接字(默认
tcp://127.0.0.1:5555):关节和传感器数据,最高采样率达 1000 Hz。 - 控制套接字(默认
tcp://127.0.0.1:5556):策略发送目标位置。 - 相机套接字(默认
tcp://127.0.0.1:5558):通过单独的套接字传输高带宽图像流。
ROS 2 桥接
ros2_broadcaster.py 将 ZMQ 流重新发布为标准的 ROS 2 主题(JointState、Image、Float64MultiArray)。需要已加载的 ROS 2 工作空间(Humble/Jazzy)。
source /opt/ros/humble/setup.bash
uv run src/ros2_broadcaster.py
许可证
Apache 2.0 -- see LICENSE.
Copyright 2026 Jonathan Embley-Riches.
相关软件包
该软件包是 Unreal Robotics Lab 的 Python 配套软件包,Unreal Robotics Lab 是一个 Unreal Engine 插件,嵌入了 MuJoCo 物理引擎,用于模拟到现实的机器人研究。