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

构建ROS包时出现CMake执行em.py返回错误码1如何解决

ROS Noetic qrcode_detection功能包CMake编译报错修复方案

本报错触发在ROS消息自动生成阶段,是generate_messages()执行时调用empy模板解析器返回错误码1导致,可按以下步骤排查修复:

1. 检查empy依赖安装状态

ROS Noetic依赖源安装的Python3版本empy,不要使用pip安装的版本,避免冲突:

  • 先卸载pip安装的empy:pip3 uninstall empy
  • 安装系统源版本:sudo apt install python3-empy

2. 确认Python版本匹配

ROS Noetic仅支持Python3,执行python --version确认输出为3.x版本。若环境默认指向Python2,编译时指定Python3路径即可:
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

3. 排查自定义msg/srv文件格式错误

如果功能包内定义了自定义消息/服务,检查以下内容:

  • 消息字段类型均为ROS标准类型,无拼写错误
  • 消息文件首行无空行、无特殊字符
  • CMakeLists.txt中add_message_files配置的文件名正确,.msg后缀未遗漏

4. 核对构建配置文件

package.xml配置要求

必须添加消息生成、运行相关依赖:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
<depend>std_msgs</depend> <!-- 消息依赖std_msgs时必须添加,其他依赖同理 -->

CMakeLists.txt配置要求

  • find_package配置项需加入message_generation及用到的消息依赖(如std_msgs)
  • generate_messages配置项需列出依赖的消息包:
generate_messages(
  DEPENDENCIES
  std_msgs
)
  • catkin_package配置项需加入message_runtime:
catkin_package(
  CATKIN_DEPENDS message_runtime std_msgs
)

5. 清空缓存重新编译

所有配置修改完成后,删除旧的编译缓存再重新构建:

cd ~/catkin_ws
rm -rf build devel
catkin_make

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:06:03