ros2在colcon build编译时报错

问题一:

Starting >>> lslidar_msgs
--- stderr: lslidar_msgs                           
Traceback (most recent call last):
  File "/opt/ros/foxy/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py", line 21, in <module>
    from catkin_pkg.package import parse_package_string
ModuleNotFoundError: No module named 'catkin_pkg'
CMake Error at /opt/ros/foxy/share/ament_cmake_core/cmake/core/ament_package_xml.cmake:94 (message):
  execute_process(/home/chen/anaconda3/bin/python3
  /opt/ros/foxy/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py
  /home/chen/lslidar_ws/src/3.
  LSLIDAR_CX_V3.0.3_221128_ROS2/lslidar_ros/lslidar_msgs/package.xml
  /home/chen/lslidar_ws/build/lslidar_msgs/ament_cmake_core/package.cmake)
  returned error code 1
Call Stack (most recent call first):
  /opt/ros/foxy/share/ament_cmake_core/cmake/core/ament_package_xml.cmake:49 (_ament_package_xml)
  /opt/ros/foxy/share/ament_lint_auto/cmake/ament_lint_auto_find_test_dependencies.cmake:31 (ament_package_xml)
  CMakeLists.txt:28 (ament_lint_auto_find_test_dependencies)
---
Failed   <<< lslidar_msgs [14.1s, exited with code 1]
Summary: 0 packages finished [14.5s]
  1 package failed: lslidar_msgs
  1 package had stderr output: lslidar_msgs
  1 package not processed
解决方法:
pip install catkin_pkg   

或者

pip3 install catkin_pkg

另外,发现.msg文件在定义消息类型时,在文件中进行赋值操作的变量必须是大写,否则就会报错。

bool female=true    #赋值操作时,变量字母必须是大写,否则编译会报错
bool male=false
string name
int64 age
float64 height
string address

需要改为:

bool FEMALE=true    #赋值操作时,变量字母必须是大写,否则编译会报错
bool MALE=false
string name
int64 age
float64 height
string address

继续报错可能还需要安装rospkg:

pip install rospkg

问题二:

安装好catkin_pkg后,执行colcon build,仍报错如下:

Starting >>> lslidar_msgs
--- stderr: lslidar_msgs                         
CMake Error at /opt/ros/foxy/share/rosidl_adapter/cmake/rosidl_adapt_interfaces.cmake:60 (message):
  execute_process(/home/chen/anaconda3/bin/python3 -m rosidl_adapter
  --package-name lslidar_msgs --arguments-file
  /home/chen/lslidar_ws/build/lslidar_msgs/rosidl_adapter__arguments__lslidar_msgs.json
  --output-dir
  /home/chen/lslidar_ws/build/lslidar_msgs/rosidl_adapter/lslidar_msgs
  --output-file
  /home/chen/lslidar_ws/build/lslidar_msgs/rosidl_adapter/lslidar_msgs.idls)
  returned error code 1:
  Traceback (most recent call last):
    File "/home/chen/anaconda3/lib/python3.7/runpy.py", line 193, in _run_module_as_main
      "__main__", mod_spec)
    File "/home/chen/anaconda3/lib/python3.7/runpy.py", line 85, in _run_code
      exec(code, run_globals)
    File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/__main__.py", line 19, in <module>
      sys.exit(main())
    File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/main.py", line 55, in main
      pathlib.Path(relative_path), output_dir)
    File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/__init__.py", line 18, in convert_to_idl
      from rosidl_adapter.msg import convert_msg_to_idl
    File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_adapter/msg/__init__.py", line 16, in <module>
      from rosidl_adapter.resource import expand_template
    File "/opt/ros/foxy/lib/python3.8/site-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/foxy/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:130 (rosidl_adapt_interfaces)
  CMakeLists.txt:31 (rosidl_generate_interfaces)
---
Failed   <<< lslidar_msgs [1.69s, exited with code 1]
Summary: 0 packages finished [2.04s]
  1 package failed: lslidar_msgs
  1 package had stderr output: lslidar_msgs
  1 package not processed
问题分析:

这是缺少了em依赖导致的,可以通过安装empy解决

解决方法:

安装empy:

sudo apt-get install python-empy  

或者

pip install empy  

问题三:

Starting >>> lslidar_msgs
--- stderr: lslidar_msgs                            
Traceback (most recent call last):
Traceback (most recent call last):
  File "/opt/ros/foxy/share/rosidl_generator_cpp/cmake/../../../lib/rosidl_generator_cpp/rosidl_generator_cpp", line 8, in <module>
  File "/opt/ros/foxy/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/foxy/lib/python3.8/site-packages/rosidl_generator_c/__init__.py", line 15, in <module>
    from rosidl_generator_cpp import generate_cpp
  File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_generator_cpp/__init__.py", line 17, in <module>
    from rosidl_cmake import convert_camel_case_to_lower_case_underscore
  File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_cmake/__init__.py", line 24, in <module>
    from rosidl_cmake import generate_files
  File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_cmake/__init__.py", line 24, in <module>
    from rosidl_parser.parser import parse_idl_file
  File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_parser/parser.py", line 20, in <module>
    from rosidl_parser.parser import parse_idl_file
  File "/opt/ros/foxy/lib/python3.8/site-packages/rosidl_parser/parser.py", line 20, in <module>
    from lark import Lark
ModuleNotFoundError: No module named 'lark'
    from lark import Lark
ModuleNotFoundError: No module named 'lark'
make[2]: *** [CMakeFiles/lslidar_msgs__cpp.dir/build.make:183:rosidl_generator_cpp/lslidar_msgs/msg/lslidar_packet.hpp] 错误 1
make[1]: *** [CMakeFiles/Makefile2:469:CMakeFiles/lslidar_msgs__cpp.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....
make[2]: *** [CMakeFiles/lslidar_msgs__rosidl_generator_c.dir/build.make:167:rosidl_generator_c/lslidar_msgs/msg/lslidar_packet.h] 错误 1
make[1]: *** [CMakeFiles/Makefile2:219:CMakeFiles/lslidar_msgs__rosidl_generator_c.dir/all] 错误 2
make: *** [Makefile:141:all] 错误 2
---
Failed   <<< lslidar_msgs [5.83s, exited with code 2]
Summary: 0 packages finished [6.18s]
  1 package failed: lslidar_msgs
  1 package had stderr output: lslidar_msgs
  1 package not processed
解决方法:
pip install lark
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值