Jetson平台ROS Noetic中cv_bridge与OpenCV版本冲突致段错误求助
解决ROS Noetic cv_bridge与OpenCV版本冲突导致的段错误问题
问题根源
你遇到的是apt官方安装的ros-noetic-cv-bridge与Jetson Ubuntu 20.04自带的OpenCV版本不匹配问题:ros-noetic-cv-bridge基于OpenCV 4.2编译,但Jetson系统默认提供的是OpenCV 4.5.4,链接时两个版本的库混编导致符号冲突,最终触发段错误。
解决方案:重新编译cv_bridge适配系统OpenCV
直接重新编译cv_bridge源码,让它基于系统的OpenCV 4.5.4构建,彻底消除版本冲突:
步骤1:创建专用工作空间
mkdir -p ~/cv_bridge_ws/src cd ~/cv_bridge_ws/src catkin_init_workspace步骤2:拉取cv_bridge Noetic分支源码
git clone https://github.com/ros-perception/vision_opencv.git cd vision_opencv git checkout noetic步骤3:编译cv_bridge
回到工作空间根目录,指定系统OpenCV的CMake配置路径(Jetson架构为aarch64,路径固定):cd ~/cv_bridge_ws catkin_make --cmake-args -DOpenCV_DIR=/usr/lib/aarch64-linux-gnu/cmake/opencv4步骤4:设置环境变量优先使用编译后的cv_bridge
将编译后的工作空间环境变量加入bashrc,确保ROS优先加载我们编译的版本:echo "source ~/cv_bridge_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
验证
重新编译你的ROS项目,版本冲突警告会消失,运行包含cv::circle的代码时也不会再触发段错误。
注意:不要卸载系统自带的OpenCV 4.5.4,Jetson的CSI相机、CUDA组件等都依赖该版本;也无需保留apt安装的ros-noetic-cv-bridge,编译后的版本会自动覆盖其优先级。
内容的提问来源于stack exchange,提问作者Aurelien Montmejat
相关产品推荐
相关产品推荐

