macOS平台drake-visualizer弃用后的可视化方案及使用示例咨询
macOS平台Drake弃用drake-visualizer后的官方可视化方案
2022年4月及之后的Drake版本已经完全移除旧版独立桌面端drake-visualizer,目前官方唯一主推的全平台可视化方案是MeshCat网页端可视化组件,不需要额外安装独立客户端,无macOS系统兼容问题,覆盖旧版可视化的全部核心功能。
方案特性
- 不需要额外安装依赖,Python版本Drake通过pip安装时已经自带全部MeshCat相关组件
- 可视化界面通过本地浏览器打开,支持视角拖拽缩放、关节状态实时渲染、接触力/碰撞几何显示、动画录制回放
- 同时提供Python、C++接口,调用逻辑统一
- 支持本地和远程服务端部署场景
最小可运行Python示例
以下示例可以直接运行,不需要额外下载模型资源:
import numpy as np from pydrake.all import ( AddMultibodyPlantSceneGraph, DiagramBuilder, MeshcatVisualizer, Parser, Simulator, StartMeshcat, ) # 启动本地MeshCat服务 meshcat = StartMeshcat() print(f"可视化页面访问地址:{meshcat.web_url()}") # 搭建仿真系统 builder = DiagramBuilder() plant, scene_graph = AddMultibodyPlantSceneGraph(builder, time_step=1e-3) # 加载Drake内置的IIWA7机械臂模型,可替换为自定义模型路径 parser = Parser(plant) parser.AddModelsFromUrl("package://drake/manipulation/models/iiwa_description/iiwa7/iiwa7_no_collision.sdf") # 将机械臂基座固定到世界坐标系 plant.WeldFrames(plant.world_frame(), plant.GetFrameByName("iiwa_link_0")) plant.Finalize() # 绑定可视化组件到仿真系统 visualizer = MeshcatVisualizer.AddToBuilder(builder, scene_graph, meshcat) diagram = builder.Build() # 设置初始关节角度 context = diagram.CreateDefaultContext() plant_context = plant.GetMyMutableContextFromRoot(context) init_q = np.array([0, 0.3, 0, -1.2, 0, 1.6, 0]) plant.SetPositions(plant_context, init_q) # 启动仿真 simulator = Simulator(diagram, context) simulator.set_target_realtime_rate(1.0) # 先发布初始状态,避免页面加载时空白 simulator.Initialize() visualizer.ForcedPublish(context) simulator.AdvanceTo(5.0) # 保持服务运行,方便查看可视化场景 input("仿真结束,按任意键退出...")
运行说明
- 代码运行后终端会打印本地网页地址,复制到任意现代浏览器打开即可看到3D可视化场景,鼠标左键拖拽旋转视角、滚轮缩放、右键平移
- 需要录制仿真动画时,在仿真启动前调用
visualizer.StartRecording(),仿真结束后调用visualizer.PublishRecording()即可在网页端回放,支持导出为独立HTML文件分享 - C++接口调用逻辑与Python完全一致,引入头文件
drake/geometry/meshcat_visualizer.h即可调用对应接口,不需要额外配置。
内容的提问来源于stack exchange,提问作者Wc Chang
相关产品推荐
相关产品推荐

