Berkeley Humanoid Lite 的 scripts/sim2real/visualize.py
scripts/sim2real/visualize.py 只负责接收数据并画图,不负责控制逻辑。
初始化环境
1 | visualizer = MujocoVisualizer(Cfg( |
这里的 num_joints 会对应到 MujocoEnv 的这个部分
1 | if cfg.num_joints == 22: |
UDP 接收线程
1 | def receive_udp_data(robot_observation_buffer): |
共享数据缓冲区
1 | robot_observation_buffer = np.zeros((35,), dtype=np.float32) |
35 个维度通常包含:
- 基座姿态(四元数 4)
- 基座角速度(3)
- 关节位置(12)
- 关节速度(12)
- 其他(如上一次动作指,或足端接触力等,共 4 个)
具体含义取决于 berkeley_humanoid_lite 的定义,但 35 是非常典型的大小。
启动线程与主循环
1 | udp_receive_thread = threading.Thread(target=receive_udp_data, args=(robot_observation_buffer,)) |
daemon = True:防止程序关闭时,后台 UDP 线程还在空转导致进程无法结束。
visualizer.step 会根据缓冲区里的最新数据(由 UDP 线程不断刷新),更新 MuJoCo 中机器人的关节角度和基座位置,并渲染一帧画面。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Isaac Sim Plus ROS 2!