ROS1 Ubuntu系统运行ORB_SLAM3报段错误(核心已转储)

6 篇文章 0 订阅
1 篇文章 0 订阅

<先看后面的重要提醒!!!!!!>
运行单目+IMU案例

1.第一个终端

roscore

2.第二个终端
在SLAM3工程文件夹下进入终端:

rosrun ORB_SLAM3 Mono_Inertial Vocabulary/ORBvoc.txt Examples_old/Monocular-Inertial/EuRoC.yaml true

在这里插入图片描述在这里插入图片描述

查询原因说是cv_bridge对opencv指向问题,cv_bridge默认指向ros安装自带的opencv3.2.0,就会与自己安装的opencv产生冲突

**

cv_bridge与opencv指向解决方法:

**

  • 第一种
    修改ros安装路径中的cv_bridge相关文件的路径,指向自己安装的opencv
sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake

在这里插入图片描述在这里插入图片描述在这里插入图片描述

使用sudo apt install ros-melodic-desktop-full安装的ros,会默认安装opencv3.2.0版本到/usr/include,/usr/lib,/usr/share三个目录。
但是如果自己从opencv官网源码编译安装的,opencv会默认安装到usr/local下对应的三个子目录。

将路径改成自己安装opencv默认的对应的子目录。

sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridge-extras.cmake

在这里插入图片描述

将版本号改为自己安装的版本号

cd /opt/ros/melodic/lib/
sudo gedit pkgconfig/cv_bridge.pc

在这里插入图片描述

同样,将相关路径改成自己的
最后catkin_make项目即可。
但在实操中,还是警告了
在这里插入图片描述在这里插入图片描述

发现还是关联到ros默认的安装版本,感觉应该是重新编译ros才生效,然后再重新catkin_make项目。

  • 第二种
    下载cv_bridge包编译
    下载网址:https://gitee.com/bingobinlw/cv_bridge
mkdir -p cv_bridge_ws/src
cd cv_bridge_ws/src
git clone https://gitee.com/bingobinlw/cv_bridge //此链接适用于18.04
cd ..

在这里插入图片描述

将自己安装的opencv编译生成的build文件路径加入CMakeLists.txt
在这里插入图片描述在这里插入图片描述在这里插入图片描述

修改为
在这里插入图片描述

编译cv_bridge包:

catkin_make

最后,在所需要使用cv_bridge的ros包里的CMakeLists.txt文件中添加opencv路径以及cv_bridge路径

set(OpenCV_DIR "your-path/opencv-x.x.x/build")
set(cv_bridge_DIR your-path/cv_bridge_ws/devel/share/cv_bridge/cmake)

例如:此处修改SLAM3中ros包中slam3的CMakeLists.txt
在这里插入图片描述在这里插入图片描述

删除之前编译产生的文件,重新编译项目。真是很糟糕,白忙活一场,这方法对我的还是不起效果,还是报如下错误。
在这里插入图片描述

  • 第三种
    卸载ROS自动安装的cv_bridge,重新安装
    1)卸载原版本cv_bridge
sudo apt-get remove ros-melodic-cv-bridge

2)下载新版本cv_bridge
网址:https://github.com/ros-perception/vision_opencv
选择melodic对应的cv_bridge
3)修改cv_bridge中的cmakelists.txt
在这里插入图片描述在这里插入图片描述

将find_package(OpenCV 3.4.5 REQUIRED中的版本号改成你安装的版本号
4)cmake单独编译cv_bridge
在cv_bridge文件夹下,进入终端

mkdir build
cd build
cmake ..
make
sudo make install

5)在项目中需要的cmaklist.txt中添加cv_bridge的cmake路径

set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)  //在find_package前面

在这里插入图片描述

我在以下三个CMakeLists.txt都添加了cv_bridge的cmake路:
/home/fei/ORB_SLAM3/CMakeLists.txt
/home/fei/ORB_SLAM3/Thirdparty/DBoW2/CMakeLists.txt
/home/fei/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
6)重新编译ros版本的ORB_SLAM3
编译时报错:

– Configuring incomplete, errors occurred!
See also “/home/fei/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/build/CMakeFiles/CMakeOutput.log”.

make: *** 没有指明目标并且找不到 makefile。 停止.
首先,我在.bashrc文件添加了该ROS项目的路径,所以不是该原因造成的。
应该是删除了ROS自安装的cv_bridge,而在编译时,系统还是自动从ROS路径查找,所以,将自己的安装的cv_bridge包复制粘贴到ROS的安装对应路径下。
根目录无法复制文件夹,所以终端输入:

sudo nautilus

在弹出的文件界面将/usr/local/share/中的cv_bridge
在这里插入图片描述

复制到/opt/ros/melodic/share中
在这里插入图片描述

删除刚编译产生的文件,再次编译:

chmod +x ./build_ros.sh
./build_ros.sh

没有再报版本冲突警告
继续前面的案例运行到第二个终端:
在这里插入图片描述

测试其他项目是否正常
测试ORB_SLAM2:
第一个终端:roscore
第二个终端:roslaunch usb_cam usb_cam-test.launch
在这里插入图片描述

果然报错,解决方案依次运行以下指令:

sudo apt-get install ros-melodic-usb-cam
sudo apt-get install ros-melodic-camera-calibration
sudo apt-get install ros-melodic-image-view

第三个终端:

rosrun ORB_SLAM2 Mono /home/fei/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/fei/ORB_SLAM2/ost.yaml

结果正常。
测试VINs_Mono:结果也正常
但是我返回来测试ORB_SLAM3时又不行了,又是冲突,核心已转储。原因是为解决相机问题安装的三个包,又再一次装回了原来的cv_bridge。

  • 第四种
    前言:不用卸载ros自安装的cv_bridge,按照上述第三种中cv_bridge安装方法编译,或者这里可以参考下面的安装方法,两种方法随便一种都可以。
    另一种cv_bridge安装编译方法:
    (1)下载安装包
    网址:https://github.com/ros-perception/vision_opencv
    在这里插入图片描述

选择对应ros版本的vision_opencv

(2)修改cv_bridge的CMakeLists.txt
在这里插入图片描述

在vision_opencv/cv_bridge中打开CMakeLists.txt,将其中的opencv版本改成自己安装的版本
在这里插入图片描述

(3)编译
在cv_bridge文件夹下进入终端:

mkdir build
cd build
cmake ..
make
sudo make install

(4)覆盖ros默认安装的libcv_bridge.so
终端输入sudo nautilus
在这里插入图片描述

将我们刚安装的cv_bridge中产生的libcv_bridge.so复制,粘贴到ros该lib的路径中,覆盖原来的libcv_bridge.so
在这里插入图片描述

该方法是在各种尝试后,又返回警告,仔细观察:
usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so,may conflict with libopencv_core.so.3.4
usr/bin/ld: warning: libopencv_imgproc.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.3.4
usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so,may conflict with libopencv_core.so.3.4

把需要的这几个libopencv_core.so.3.4、libopencv_imgproc.so.3.4、libopencv_imgproc.so.3.4放入跟3.2一样的路径中,再把第一种方法中的cv_bridgeConfig.cmake文件只修改set_libraries中的版本号,重新编译slam3项目还是报一样的错误。随后根据/opt/ros/melodic/lib/libcv_bridge.so,将其覆盖成自己安装的libcv_bridge.so,重新编译slam3通过了。

(5)测试
重新编译slam3 ros版本

chmod +x ./build_ros.sh
./build_ros.sh

在这里插入图片描述

没有警告,运行带imu的也没有报核心已转储。
测试ORB_SLAM2和VINs_Mono也没有任何问题。

重要提醒:
不是前三种对我不行,而是项目的CMakeLists.txt中引用ROS的方式不一样。
1)如果是:
在这里插入图片描述

则使用第四种方法有效

2)如果是:
在这里插入图片描述

则前三种都有效

3.第三个终端:
在有目标数据包文件夹下进入终端:

rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu

在这里插入图片描述在这里插入图片描述

Ubuntu 20.04上安装ORB_SLAM3的步骤如下: 1. 打开终端,并执行以下指令来安装依赖项: ``` sudo apt-get install libglew-dev doxygen sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev sudo apt-get install libpng-dev ``` 2. 从ORB_SLAM3官网下载稳定版本V0.6(请避免使用master版本,因为它可能与其他库发生冲突)。 3. 解压缩下载的文件,进入解压后的目录: ``` cd Orb_SLAM3 ``` 4. 在终端中执行以下指令编译ORB_SLAM3: ``` chmod +x build.sh ./build.sh ``` 5. 安装realsense2库(可选): ``` # 注册public key sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE # 添加apt源 sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u # 安装 sudo apt install librealsense2-dkms librealsense2-utils librealsense2-dev ``` 完成以上步骤后,ORB_SLAM3将成功安装在Ubuntu 20.04上。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ubuntu20.04安装并运行ORB_SLAM3(一路顺风版)](https://blog.csdn.net/weixin_56566649/article/details/125280841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Ubuntu 20.04 安装 ORB_SLAM3(包含ROS版)](https://blog.csdn.net/zhuxiaoyang2000/article/details/120716609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值