问题一:
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