Call Stack (most recent call first): /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_inte

Call Stack (most recent call first):
/opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:130 (rosidl_adapt_interfaces)
CMakeLists.txt:13 (rosidl_generate_interfaces)

--- stderr: example_ros2_interfaces                                         
CMake Error at /opt/ros/humble/share/rosidl_adapter/cmake/rosidl_adapt_interfaces.cmake:59 (message):
  execute_process(/home/gkj/miniconda3/bin/python3.10 -m rosidl_adapter
  --package-name example_ros2_interfaces --arguments-file
  /home/gkj/d2lros2/chapt3/chapt3_ws/build/example_ros2_interfaces/rosidl_adapter__arguments__example_ros2_interfaces.json
  --output-dir
  /home/gkj/d2lros2/chapt3/chapt3_ws/build/example_ros2_interfaces/rosidl_adapter/example_ros2_interfaces
  --output-file
  /home/gkj/d2lros2/chapt3/chapt3_ws/build/example_ros2_interfaces/rosidl_adapter/example_ros2_interfaces.idls)
  returned error code 1:

  Traceback (most recent call last):

    File "/home/gkj/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
      return _run_code(code, main_globals, None,
    File "/home/gkj/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
      exec(code, run_globals)
    File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/__main__.py", line 19, in <module>
      sys.exit(main())
    File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/main.py", line 53, in main
      abs_idl_file = convert_to_idl(
    File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/__init__.py", line 18, in convert_to_idl
      from rosidl_adapter.msg import convert_msg_to_idl
    File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/msg/__init__.py", line 16, in <module>
      from rosidl_adapter.resource import expand_template
    File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/resource/__init__.py", line 19, in <module>
      import em

  ModuleNotFoundError: No module named 'em'

Call Stack (most recent call first):
  /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:130 (rosidl_adapt_interfaces)
  CMakeLists.txt:13 (rosidl_generate_interfaces)

尝试

pip3 install empy失败

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/empy/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/empy/
Collecting empy
  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz
  WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1007)'))': /packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz
  WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1007)'))': /packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz
  WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1007)'))': /packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz
  WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1007)'))': /packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/3b/95/88ed47cb7da88569a78b7d6fb9420298df7e99997810c844a924d96d3c08/empy-3.3.4.tar.gz (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1007)')))

pip3 list检查,发现确实没有empy包
再次输入指令,安装成功
colcon build

--- stderr: example_ros2_interfaces                         
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
CMake Error at /opt/ros/humble/share/rosidl_generator_py/cmake/rosidl_generator_py_generate_interfaces.cmake:204 (message):
  execute_process(/home/gkj/miniconda3/bin/python3 -c 'import
  numpy;print(numpy.get_include())') returned error code 1
Call Stack (most recent call first):
  /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
  /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
  CMakeLists.txt:13 (rosidl_generate_interfaces)

同样地,补充缺失的库pip3 install numpy
再次colcon build

Traceback (most recent call last):
  File "/opt/ros/humble/share/rosidl_generator_c/cmake/../../../lib/rosidl_generator_c/rosidl_generator_c", line 8, in <module>
    from rosidl_generator_c import generate_c
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_c/__init__.py", line 15, in <module>
    from rosidl_cmake import convert_camel_case_to_lower_case_underscore
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_cmake/__init__.py", line 24, in <module>
    from rosidl_parser.parser import parse_idl_file
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_parser/parser.py", line 20, in <module>
    from lark import Lark
ModuleNotFoundError: No module named 'lark'
gmake[2]: *** [CMakeFiles/example_ros2_interfaces__rosidl_generator_c.dir/build.make:148:rosidl_generator_c/example_ros2_interfaces/msg/robot_pose.h] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:212:CMakeFiles/example_ros2_interfaces__rosidl_generator_c.dir/all] 错误 2
gmake[1]: *** 正在等待未完成的任务....
Traceback (most recent call last):
  File "/opt/ros/humble/share/rosidl_generator_cpp/cmake/../../../lib/rosidl_generator_cpp/rosidl_generator_cpp", line 8, in <module>
    from rosidl_generator_cpp import generate_cpp
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_cpp/__init__.py", line 17, in <module>
    from rosidl_cmake import generate_files
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_cmake/__init__.py", line 24, in <module>
    from rosidl_parser.parser import parse_idl_file
  File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_parser/parser.py", line 20, in <module>
    from lark import Lark
ModuleNotFoundError: No module named 'lark'
gmake[2]: *** [CMakeFiles/example_ros2_interfaces__cpp.dir/build.make:160:rosidl_generator_cpp/example_ros2_interfaces/msg/robot_pose.hpp] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:317:CMakeFiles/example_ros2_interfaces__cpp.dir/all] 错误 2
gmake: *** [Makefile:146:all] 错误 2
---
Failed   <<< example_ros2_interfaces [1.35s, exited with code 2]


同样地,补充缺失的库pip3 install lark
再次colcon build

a1@1:~/桌面/n10p$ colcon build Starting >>> lslidar_msgs --- stderr: lslidar_msgs CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list): list index: 1 out of range (-1, 0) Call Stack (most recent call first): CMakeLists.txt:30 (rosidl_generate_interfaces) CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list): list index: 1 out of range (-1, 0) Call Stack (most recent call first): CMakeLists.txt:30 (rosidl_generate_interfaces) CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list): list index: 1 out of range (-1, 0) Call Stack (most recent call first): CMakeLists.txt:30 (rosidl_generate_interfaces) CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list): list index: 1 out of range (-1, 0) Call Stack (most recent call first): CMakeLists.txt:30 (rosidl_generate_interfaces) CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list): list index: 1 out of range (-1, 0) Call Stack (most recent call first): CMakeLists.txt:30 (rosidl_generate_interfaces) CMake Error at /opt/ros/humble/share/rosidl_generator_c/cmake/rosidl_generator_c_generate_interfaces.cmake:69 (message): Target dependency '/n10p/build/lslidar_msgs/rosidl_adapter/lslidar_msgs/msg/LslidarDifop.idl' does not exist Call Stack (most recent call first): /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include) /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions) CMakeLists.txt:30 (rosidl_generate_interfaces) --- Failed <<< lslidar_msgs [14.2s, exited with code 1] Summary: 0 packages finished [19.5s] 1 package failed: lslidar_msgs 1 package had stderr output: lslidar_msgs 1 package not processed
最新发布
07-23
colcon build --packages-select learning_action [0.466s] WARNING:colcon.colcon_core.package_identification:Failed to parse ROS package manifest in 'src/learning_action': Error(s) in package 'src/learning_action/package.xml': Error(s): - The generic dependency on 'rclcpp' is redundant with: exec_depend Starting >>> learning_action --- stderr: learning_action Error parsing '/home/ly/mySpace/src/learning_action/package.xml': Traceback (most recent call last): File "/opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py", line 150, in <module> main() File "/opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py", line 53, in main raise e File "/opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py", line 49, in main package = parse_package_string( File "/usr/lib/python3/dist-packages/catkin_pkg/package.py", line 786, in parse_package_string raise InvalidPackage('Error(s):%s' % (''.join(['\n- %s' % e for e in errors])), filename) catkin_pkg.package.InvalidPackage: Error(s) in package '/home/ly/mySpace/src/learning_action/package.xml': Error(s): - The generic dependency on 'rclcpp' is redundant with: exec_depend CMake Error at /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package_xml.cmake:95 (message): execute_process(/usr/bin/python3 /opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py /home/ly/mySpace/src/learning_action/package.xml /home/ly/mySpace/build/learning_action/ament_cmake_core/package.cmake) returned error code 1 Call Stack (most recent call first): /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package_xml.cmake:49 (_ament_package_xml) /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:226 (ament_package_xml) CMakeLists.txt:17 (rosidl_generate_interfaces) --- Failed <<< learning_action [0.97s, exited with code 1] Summary: 0 packages finished [1.42s] 1 package failed: learning_action 1
03-26
<think>嗯,用户运行了colcon build --packages-select learning_action命令,结果报错了。错误信息显示在处理package.xml时出现了问题,具体是依赖项rclcpp的冗余。用户可能需要帮助解决这个构建错误。 首先,我需要回忆一下ROS2中package.xml的结构。在ROS2的package.xml里,依赖分为build_depend、exec_depend、test_depend等。而用户可能使用了<depend>标签,这其实是通用的,会被展开为build、exec和test依赖。但错误提示说generic dependency on 'rclcpp'被exec_depend冗余了,说明在package.xml中同时存在<depend>rclcpp</depend>和<exec_depend>rclcpp</exec_depend>。这样会导致重复,因为<depend>已经包含了exec_depend的部分,所以系统认为这是冗余的。 接下来,需要告诉用户如何修改package.xml。正确的做法是保留其中一个。如果rclcpp在构建时需要(比如头文件),并且运行时也需要,那么应该使用<depend>。但如果只是在运行时需要,可能只需要<exec_depend>。不过通常像rclcpp这样的依赖,作为ROS2客户端库,可能同时需要构建和运行时依赖,所以应该用<depend>替换掉单独的exec_depend,或者删除其中一个重复的条目。 另外,错误日志中的CMake部分也提到了问题出在解析package.xml时,所以用户必须检查该文件的结构是否正确,是否有重复的依赖声明。可能用户在之前添加依赖时不小心重复了,或者使用了不同的标签导致冲突。 还需要提醒用户,修改package.xml后需要重新运行colcon build,并且可能需要清理之前的构建目录,比如删除build、install、log文件夹,或者使用--cmake-clean-cache选项来确保重新生成构建文件。 此外,用户可能对ROS2的依赖管理不太熟悉,所以需要解释清楚不同依赖标签的区别,以及如何正确使用它们,避免未来的类似错误。例如,说明build_depend是构建时需要的依赖,exec_depend是运行时依赖,test_depend是测试时的依赖,而depend则是同时包含build和exec的依赖。因此,当同时需要构建和运行时依赖时,使用depend更简洁,而不需要分开写,否则会导致冗余。 最后,确认用户是否还有其他可能的错误,比如package.xml的格式是否正确,比如标签是否正确闭合,是否有拼写错误等,但根据错误提示,当前主要问题是依赖项的冗余,所以优先解决这一点。</think>这个错误提示表明在`learning_action`功能包的`package.xml`文件中存在依赖声明冗余的问题。以下是分步解决方案: $\textcolor{red}{\textbf{错误原因分析}}$ 1. 在`package.xml`中同时使用了泛型依赖`<depend>`和具体依赖`<exec_depend>`声明同一个依赖项`rclcpp` 2. ROS2的`<depend>`标签是复合标签,相当于同时包含`build_depend`+`exec_depend`+`test_depend` 3. 当同时使用`<depend>`和`<exec_depend>`声明同一个依赖项时,会产生冗余 $\textcolor{green}{\textbf{解决方案}}$ 1. 打开`package.xml`文件: ```bash nano src/learning_action/package.xml ``` 2. 修改依赖声明($\textcolor{blue}{\text{二选一}}$): $\textcolor{blue}{\text{方案一}}$:保留泛型声明 ```xml <depend>rclcpp</depend> <!-- 删除原有的 <exec_depend>rclcpp</exec_depend> --> ``` $\textcolor{blue}{\text{方案二}}$:使用具体声明 ```xml <build_depend>rclcpp</build_depend> <exec_depend>rclcpp</exec_depend> <!-- 删除原有的 <depend>rclcpp</depend> --> ``` 3. 保存文件后重新构建: ```bash colcon build --packages-select learning_action --symlink-install ``` $\textcolor{orange}{\textbf{补充说明}}$ 1. 建议优先使用`<depend>`声明ROS2核心依赖(如`rclcpp`),该标签会自动处理构建/执行/测试依赖 2. 仅在需要单独控制构建/运行时依赖时才使用`<build_depend>`和`<exec_depend>` 3. 可使用`rosdep`工具验证依赖: ```bash rosdep check learning_action ``` 4. 若问题持续,可尝试清理构建缓存: ```bash rm -rf build/ install/ log/ colcon build --packages-select learning_action ``` $\textcolor{purple}{\textbf{验证成功构建的特征}}$ 当看到以下输出时表示构建成功: ```bash Summary: 1 package finished [X.Xs] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值