# ROS2 RViz2加载URDF网格报错Could not load mesh resource

> 原文链接：https://robotics.hellobike.com/pitfalls/2024-07-17-robotics-se-112246
> 频道：pitfalls | 更新日期：2024-07-17 | 标签：auto, stackexchange, urdf
> 核心摘要：RViz2无法加载STL/DAE网格，因路径未关联包名。需将网格纳入ROS2包，构建并source后使用package://协议引用。

# ROS2 RViz2加载URDF网格报错Could not load mesh resource

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[ROS 2 humble hawksbill's rviz 2 not able to load either STL or DAE files. How can i resolve this?](https://robotics.stackexchange.com/questions/112246/ros-2-humble-hawksbills-rviz-2-not-able-to-load-either-stl-or-dae-files-how-ca)（Robotics Stack Exchange #112246）

**状态**：已解决

## 问题

在ROS 2 Humble中启动RViz2时，URDF解析报错“Could not load mesh resource”，提示无法加载指定绝对路径下的STL或DAE文件。即使文件物理路径正确且终端可访问，RViz2仍无法渲染几何体，robot_state_publisher虽能正常发布TF但模型显示缺失。

## 环境

ROS 2 Humble Hawksbill, RViz2, Ubuntu (root用户), Python launch文件, colcon构建系统

## 解决办法

1. 将STL/DAE网格文件移入标准ROS 2功能包的`meshes`目录下，确保目录结构符合ament/colcon规范。
2. 修改URDF/xacro中的mesh filename属性，弃用绝对路径，改用`package://<package_name>/meshes/<file>.stl`格式引用资源。
3. 在工作空间根目录执行`colcon build`命令重新编译包含网格资源的功能包。
4. 在运行launch文件的终端中执行`source install/setup.bash`以刷新资源索引与环境变量。
5. 重新启动Python launch文件，RViz2即可通过资源检索机制正确加载并渲染网格模型。

原问题作者：ahiyantra；采纳答案作者：ahiyantra。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #112246：ROS 2 humble hawksbill's rviz 2 not able to load either STL or DAE files. How can i resolve this?](https://robotics.stackexchange.com/questions/112246/ros-2-humble-hawksbills-rviz-2-not-able-to-load-either-stl-or-dae-files-how-ca)