目录
- 1 问题背景
- 2 问题探索
- 3 问题解决
- 4 告别Bug
1 问题背景
环境:
- ROS2 Humble
- Ubuntu22.04
现象:运行
colcon build
后由cpp
编译生成的python
导出库(如自定义消息、服务等),其版本与由python setup.py
安装的python
库版本不一致,导致诸如
rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'msg_lab_py'
等问题
2 问题探索
检查发现,本地存在两个不同版本的python
解释器,分别对应出现问题的版本号3.10
和3.11
,这表明conda
虚拟环境的引入将导致colcon build
进行构建和安装时CMake
使用的python
解释器版本与python setup.py
使用的版本不同。
因此解决问题的核心是使用同一个环境的python
解释器。
首先卸载全局的colcon
编译选项,避免编译过程中错选
sudo apt remove python3-colcon-*
接着创建虚拟环境,原理可看Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)
conda create -n ros2 python=3.10
并切换到虚拟环境
conda activate ros2
创建后如下所示
在该虚拟环境中安装colcon
编译依赖项
pip install -U colcon-common-extensions
以及其他依赖项
pip install catkin_pkg numpy lark setuptools==58.2.0
此时可能还会出现问题
ImportError: /home/winter/anaconda3/envs/ros2/bin/../lib/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so)
解决方法是安装gcc
conda install -c conda-forge gcc=12.1.0
至此已经可以成功编译
3 问题解决
总结一下修复的流程:
- 创建虚拟环境
conda create -n ros2 python=3.10
- 切换到虚拟环境
conda activate ros2
- 安装
colcon
构建系统pip install -U colcon-common-extensions
- 安装其他依赖项
pip install catkin_pkg numpy lark setuptools==58.2.0 conda install -c conda-forge gcc=12.1.0
4 告别Bug
本文收录于《告别Bug》专栏,该专栏记录人工智能领域中各类Bug以备复查,文章形式为:问题背景 + 问题探索 + 问题解决,订阅专栏+关注博主后可通过下方名片联系我进入AI技术交流群帮忙解决问题
🔥 更多精彩专栏:
- 《ROS从入门到精通》
- 《Pytorch深度学习实战》
- 《机器学习强基计划》
- 《运动规划实战精讲》
- …