You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2节点可通过python3运行但ros2 run执行失败的问题排查

解决ROS2运行YOLOv5节点时ModuleNotFoundError: No module named 'models'的问题

问题根源

  1. 安装路径不匹配:你的CMakeLists.txt将scripts/models、scripts/utils安装到了share/${PROJECT_NAME}目录,但执行脚本ros_recognition_yolo.py被安装到lib/${PROJECT_NAME}目录,Python运行时无法从lib目录定位到share下的模块文件。
  2. 错误的依赖声明:package.xml中添加了<exec_depend>models</exec_depend>和<build_depend>models</build_depend>,但models并非ROS官方包,只是你项目内的本地文件夹,这些依赖声明完全多余且无效。

解决方案

步骤1:调整CMakeLists.txt的安装路径

修改CMakeLists中的安装规则,让models、utils与执行脚本处于同一目录:

# 替换原有的install(DIRECTORY...)部分
install(
  DIRECTORY scripts/models scripts/utils
  DESTINATION lib/${PROJECT_NAME}
)

install(PROGRAMS
  scripts/ros_recognition_yolo.py
  DESTINATION lib/${PROJECT_NAME}
)

步骤2:清理package.xml的无效依赖

删除package.xml中的以下两行:

<exec_depend>models</exec_depend>
<build_depend>models</build_depend>

步骤3:重新编译并运行

执行以下命令完成编译与测试:

colcon build --packages-select yolobot_recognition
source install/setup.bash
ros2 run yolobot_recognition ros_recognition_yolo.py

内容的提问来源于stack exchange,提问作者Poguinho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:40:08