Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)

这篇具有很好参考价值的文章主要介绍了Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

第一次运行,有些坑,然后告诉一下大家该如何自己解决的思路,毕竟每个人的实际运行环境不一样。
系统:联想Y7000,Ubunru20.04(已经安装ros noetic,推荐小鱼的一键安装ros)直接终端输入:

wget http://fishros.com/install -O fishros && . fishros

显卡驱动已经安装好,采用的GPU1050Ti
显卡安装,建议就用系统自带的安装方式(设置里面有附加驱动,点击一下,等一会就好)
如果不幸没有那就要手动安装了,给大家一个我之前参考的链接:link
自己电脑的显卡切换以及查看:

sudo prime-select nvidia # 切换nvidia显卡
sudo prime-select intel  # 切换intel显卡
sudo prime-select query  # 查看当前使用的显卡

如果大家的和我的一样那么将会自带下列环境(pcl1.10 opencv4.2.0 eigen3.3.7
可以用下列两条命令查看(随便哪一条都可以),以eigen3为例:

apt-show-versions | grep eigen3
或
pkg-config --modversion eigen3

说了一些有的没的,但这些后续学习都得安装,不然图形化太卡了。
目标:使用ros运行的软件包ORBSLAM2_with_pointcloud_map


一、前期准备

源码下载:

git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git
https://github.com/xiaobainixi/ORB-SLAM2_RGBD_DENSE_MAP.git

1.提取orbslam2_modified.zip文件
2.将这个文件夹下两个文件夹都放到上一级目录,进行覆盖和替换,然后就可以删除orbslam2_modified文件夹了
3.然后下载

git clone https://github.com/wylnii/ORBSLAM2_with_pointcloud_map.git

4.替换原包中的ORB_SLAM2_modified文件夹下的所有文件
(注意这次编译的是不带闭环的稠密见图)
5.闭环稠密建图采参考带闭环的稠密建图
下载地址如下

https://github.com/xiaobainixi/ORB-SLAM2_RGBD_DENSE_MAP.git

二、pangolin0.5安装以及opencv3.4.5

pangolin0.5安装

下载源码包进行安装

git clone https://github.com/cheukwaylee/Pangolin-0.5.git

如果下载太慢的,建议执行下列命令:

git clone https://ghproxy.com/https://github.com/cheukwaylee/Pangolin-0.5.git

配置环境

 sudo apt-get install libglew-dev
 
 sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
 

然后安装,我用的-j6,电脑配置不好的用-j2吧

cd Pangolin
mkdir build
cd build
cmake ..
make -j6
sudo make install

因为没有指定安装路径,所以默认安装在usr下bin,lib,local,share,include
如果出现编译安装错误,首先给大家的建议是看报错信息,将报错信息粘贴到CSDN上,一般都有解决方案的,然后按要求改就好了。给大家贴一个比较全的报错解决连接pangolin报错解决

opencv3.4.5安装

由于安装ros noetic后系统里面就安装了opencv4,在进行ORBSLAM2_with_pointcloud_map源码编译会出出现很多opencv头文件报错,这是因为opencv4中头文件进行了一些修改,需要你自己一个个去重新找一下修改。
源码包下载:
opencv3.4.5下载
安装依赖

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev 

这里说一下自定义安装到某一个位置的指令-D CMAKE_INSTALL_PREFIX=,后续要用的。
等号后面就是你想要安装的位置,我是在/usr/local/下建立一个文件夹opencv3.4.5,路径就如下图

cmake -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.5  -D CMAKE_BUILD_TYPE="Rlease" -D OPENCV_GENERATE_PKGCONFIG=ON ..
//下面是带有第三方的cv附加库,自己改一下文件位置
sudo cmake -D CMAKE_BUILD_TYPE="Release" -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.5 -D OPENCV_EXTRA_MODULES_PATH=~/ThirdParts/opencv-3.4.5/opencv_contrib-3.4.5/modules opencv-3.4.5/opencv_contrib-3.4.5/modules/ -DOPENCV_ENABLE_NONFREE=True -D OPENCV_GENERATE_PKGCONFIG=ON..

编译安装:

cd opencv3.4.5
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.5  -D CMAKE_BUILD_TYPE="Rlease" -D OPENCV_GENERATE_PKGCONFIG=ON ..
make -j6
sudo make install

相关配置:

# 第一步
sudo gedit /etc/ld.so.conf.d/opencv.conf
输入:
/usr/local/opencv3.4.5/lib

# 第二步
sudo ldconfig 
sudo gedit ~/.bashrc 
在末尾输入:
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/opencv3.4.5/lib/pkgconfig
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/opencv3.4.5/lib

# 第三步
source ~/.bashrc
sudo updatedb
pkg-config --modversion opencv
出现3.4.5即可
pkg-config --modversion opencv4
出现4.2.0是ros中的版本

在后续改CMakeLists时候:
在find(OpenCV REQUIRED)前输入:set(CMAKE_PREFIX_PATH “/usr/local/opencv3.4.5”)
参考链接在已有OpenCV4的情况下安装OpenCV3

三、D435相机驱动安装

下载realsense SDK,源码链接:

https://gitcode.net/mirrors/intelrealsense/librealsense.git

安装相关依赖:

sudo apt install libudev-dev pkg-config libgtk-3-dev
sudo apt install libusb-1.0-0-dev pkg-config
sudo apt install libglfw3-dev
sudo apt install libssl-dev

安装权限脚本

cd ~/librealsense
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger

编译安装

cd Pangolin
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make -j6
sudo make install

测试驱动是否安装成功,要插上相机

cd librealsense/build/examples/capture
./rs-capture
会看到画面
然后结束运行,重新开一个终端输入
realsense-viewer
是一个图形化界面
另外一种方案
1.注册密钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
2.添加服务器
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
3.安装realsense-viewer的libraries
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
4.安装开发者和debug的包
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
5.验证
realsense-viewer

有报错或者想在ros下运行的可以参考下面链接
参考链接ubuntu20.04 安装RealSenseD435驱动

四、ORBSLAM2_with_pointcloud_map编译执行

为了后期不会出现奇怪的问题,比如你都全部make成功了,能显示图像,但是相机移动就段错误(核心已转储),前期先改一下CMakeLists.txt文件。

编译g2o_with_orbslam2包
j6看自己的电脑性能行不行。
这一步问题不大,有问题参考这个链接,都可以解决的。
高翔分享ORBSLAM2_with_pointcloud_map安装问题总结
还有问题就贴error到CSDN,都有解决方案
然后进行编译

cd g2o_with_orbslam2
mkdir build
cmake ..
make -j6

更改ORB_SLAM2_modified包配置

先打开ORB_SLAM2_modified下的CMakeLists.txt文件,改一些配置

1.将这个-march=native删除,不然后续会出现核心已转储的报错,其实主要是g2o的第三方库里面的需要删除,
但是避免问题,每一个CMakeLists.txt文件里的-march=native我都删除了

2.为了避免pcl的编译问题,在第三行加
set( CMAKE_CXX_STANDARD 14)

3.opencv3.4.5配置,在find_package(OpenCV 3.0 REQUIRED)上一行添加,其实每一个文件中用到opencv都得这样设置
set(CMAKE_PREFIX_PATH "/usr/local/opencv3.4.5")

4.Eigen3 改为对应的版本
find_package(Eigen3 3.3.7 REQUIRED)

5.pcl的版本
find_package( PCL 1.10 REQUIRED )

编译Thirdparty包

不建议直接跑build.sh文件,出现问题不好改
打开build.sh文件,自己逐个编译,有问题也好找
小技巧吧,先make -j6,出现问题后再make,可以很快定位错误处
-----------------------------------------------------
DBoW2里的CMakeLists.txt文件也需要改
这个-march=native删除
在find_package(OpenCV 3.0 REQUIRED)上一行添加
set(CMAKE_PREFIX_PATH "/usr/local/opencv3.4.5")
----------------------------------------------
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j6
---------------------------------------------
g2o里的CMakeLists.txt文件也需要改
这个-march=native删除
--------------------------------------------------
cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j6
-------------------------------------------------
下载ORBvoc.txt.tar.gz放置于Vocabulary文件夹下
git clone https://github.com/raulmur/ORB_SLAM2.git
将ORB_SLAM2中的Vocabulary下的ORBvoc.txt.tar.gz放置于Vocabulary文件夹下
然后解压就好
-----------------------------------------------
将其转化为二进制
./tools/bin_vocabulary

编译ORB_SLAM2_modified包

cd ORB_SLAM2_modified/
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j6

这里错误比较多,不过也还好

在下列源码中加入#include<unistd.h>
可能漏了一些,大家按照报错信息可以改的,主要还是在源码的修改上,CSDN上给出了解决方案

Examples/Monocular/mono_kitti.cc

Examples/Monocular/mono_tum.cc

Examples/RGB-D/rgbd_tum.cc

Examples/Stereo/stereo_euroc.cc

Examples/Stereo/stereo_kitti.cc

src/LocalMapping.cc

src/LoopClosing.cc

src/System.cc

src/Tracking.cc

src/Viewer.cc

ros下编译ORB_SLAM2_modified包
配置一下电脑环境

gedit ~/.bashrc
# 添加一下命令,如果以前配置过ORB_SLAM2ROS的话,需要将以前的配置注释掉
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/你的目录/ORB_SLAM2_modified/Examples/ROS
保存,关闭
source ~/.bashrc
sudo updatedb
rospack profile
echo ${ROS_PACKAGE_PATH} 
会出现你刚刚加的ros路径

编译:

cd Examples/ROS/ORB_SLAM2
CMakeLists.txt文件,改一些配置,还是和之前一样
1.set( CMAKE_CXX_STANDARD 14)
2.-march=native删除
3.修改对应版本
set(CMAKE_PREFIX_PATH "/usr/local/opencv3.4.5")
find_package(OpenCV 3.0 QUIET)
find_package(Eigen3 3.3.7 REQUIRED)
find_package(PCL 1.10 REQUIRED)
4.这个要改一下,如下
set(LIBS
        ${OpenCV_LIBS}
        ${EIGEN3_LIBS}
        ${Pangolin_LIBRARIES}
        ${PCL_LIBRARIES}
        ${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
        ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
        ${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
        -lboost_system
        # opencv_core3 
        # opencv_imgproc3
        # opencv_highgui3
        )
-------------------------------------------------------

mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j6
老规矩,出现啥错误就找,然后改,只要不是cmake阶段出错,都能解决
我在这个阶段出现过cmake在manifest.xml文件出现问题的
是python问题,可能是你的python指向的是2.7,而cmake是要版本3以后的
解决方案:软链接
sudo ln -snf /usr/bin/python3 /usr/bin/python
------------------------------------
ln -s A B:是将BA
更改链接指向ln -snf C B:是将BC
在usr/bin文件下查看python的链接情况
ls -al *python*

五、执行

如果上面的你都make通过了,那么恭喜,可以开始跑代码了(可以跑实物,也可以跑数据包)这里我都说一下:
数据包运行
TUM数据集
2.放在自己能找到的目录,建议和Example同级,建立一个data文件夹,解压在里面
这里associations.txt 文件是使用associate.py处理的得到的

 python associate.py 路径/rgb.txt 路径/depth.txt > associations.txt
 Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml data/rgbd_dataset_freiburg1_xyz data/rgbd_dataset_freiburg1_xyz/associations.txt 
这里出现一个报错:
./Examples/RGB-D/rgbd_tum: symbol lookup error:
 ./Examples/RGB-D/rgbd_tum: undefined symbol: 
 _ZN9ORB_SLAM26SystemC1ERKSsS2_NS0_7eSensorEb

我使用c++filt  _ZN9ORB_SLAM26SystemC1ERKSsS2_NS0_7eSensorEb 查看
ORB_SLAM2::System::System
(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&,
 std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, 
 ORB_SLAM2::System::eSensor, bool)
参数输入有问题,mono是4个参数,RGBD5个参数,stereo是6个参数

 RGB-D执行参数顺序:5个,以空格分隔
*	1.可执行文件:rgbd_tum
*	2.离线词典文件:ORBvoc.txt
*	3.参数文件:TUM1.yaml	(下载的数据集freiburg1/2/3分别对应TUM1/2/3.yaml)
*	4.RGB-D文件夹:如rgbd_dataset_freiburg1_desk
*	5.RGBD对齐信息文件:associations.txt

————————————————
 Monocular执行参数顺序:5个,以空格分隔
 1. 1.可执行文件:mono_tum
 2. 2.离线词典文件:ORBvoc.txt
 3. 3.参数文件:TUM1.yaml	(下载的数据集freiburg1/2/3分别对应TUM1/2/3.yaml)
 4. 4.RGB文件夹:如rgbd_dataset_freiburg1_desk

————————————————
 Stereo执行参数顺序:6个,以空格分隔
*	1.可执行文件:stereo_euroc
*	2.离线词典文件:ORBvoc.txt
*	3.参数文件:EuRoC.yaml
*	4.相机0数据文件夹:如 V1_03_difficult/mav0/cam0/data
*	5.相机1数据文件夹:如 V1_03_difficult/mav0/cam1/data
*	6.相机01对齐信息文件:EuRoC_TimeStamps/V103.txt

————————————————
建议使用bin文件下的可执行文件(当然Example子文件里的也可以)
./bin/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml data/rgbd_dataset_freiburg1_xyz data/rgbd_dataset_freiburg1_xyz/associations.txt

D435相机运行

修改ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/src/ros_rgbd.cc文件,
把rgb_topic和depth_topic订阅话题修改为
 "/camera/color/image_raw";
 "/camera/aligned_depth_to_color/image_raw";
----------------------------------------------------
roslaunch realsense2_camera rs_rgbd.launch
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml 

参考:
https://blog.csdn.net/subiluo/article/details/88975979
https://blog.csdn.net/weixin_43828675/article/details/117421064

总结

其实把这个运行出来后,ORB-SLAM2也可以跑出来了,步骤一样的,主要困难点在于过程中的不断报错,需要自己去一个个的解决,我自己也碰到了很多坑,好歹一个个的都解决了,希望这个能帮到大家!文章来源地址https://www.toymoban.com/news/detail-718063.html

到了这里,关于Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 工程(十)——github代码ubuntu20.04在ROS环境运行单目和RGBD相机ORB-SLAM3稠密

    博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论交流一起学习。 加稠密建图:git@github.com:huashu996/ORB_SLAM3_Dense_YOLO.git 纯净版:git@github.com:huashu996/ORB_SLAM3.git orb-slam3的整个环境配置还是比较麻烦的,先将一些坑写在前面,供大家参考和避开这些坑。 orb-slam3的配置要求

    2024年01月25日
    浏览(34)
  • ubuntu20.04安装ROS【详细】

    Ubuntu20.04安装ROS与Ubuntu18.04大差不差,安装过程基本没出现问题,按以下教程操作即可。 该命令打开源文件可能会比较慢 将文件里的替换为 然后执行 再执行 1.新建文件夹,并进入文件夹 2、下载项目 若找不到命令,安装git即可 3、另打开一个终端,备份原文件 4、安装rosdep 5、替

    2024年02月12日
    浏览(47)
  • Ubuntu20.04安装ROS----鱼香ROS一键安装

    输入以下命令行: 选择1 选择1 ROS1 选择1   下载noetic版本 ROS2 选择3 下载galactic版本

    2024年02月05日
    浏览(51)
  • ubuntu20.04安装ros问题解惑

    一、配置密钥问题 问题描述: 在安装ROS noetic时,当运行以下命令时, 可能会遇到以下错误 问题分析: 主要原因就是http://raw.githubusercontent.com是墙外地址,无法访问 解决方法: 从另一个网址获取密钥 然后继续按照官方步骤操作即可。 二、rosdep连接超时的问题 报错 问题描述 执

    2024年02月15日
    浏览(47)
  • 【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程

    由于自己装过两次 ROS,但是重头再来一遍还是遇到了很多困难。尤其是当遇到以前遇到过的问题,我依然会手足无措,翻边互联网的边边角角,试很多遍错才能解决问题。于是便萌发了写下这个 ROS安装指南 的想法。 这里整理了我安装 ROS 的流程以及遇到的所有问题,也提供

    2024年02月03日
    浏览(66)
  • Ubuntu20.04同时安装ROS1和ROS2

    每版的Ubuntu系统版本都有与之对应ROS版本的,每一版ROS都有其对应版本的Ubuntu版本,不可随便装,ubuntu20.04对应ROS1 noetic和ROS2 foxy版本。_ros1和ros2共存 文章目录 Ubuntu20.04同时安装ROS1和ROS2共存 一、换源 1.1 通过软件更新 1.2 通过修改源文件(建议) 二、安装ROS1(noetic) 三、安

    2024年02月09日
    浏览(53)
  • 《Ubuntu20.04环境下的ROS进阶学习1》

            在上节我们已经逛了逛ROS官方应用商店和全球最大开源平台github。为了方便阅读代码和启动程序,本节我们来下载两个好用的app,当然是在Ubuntu上。         这里为了方便我们直接打开谷歌浏览器,输入vscode官网https://code.visualstudio.com/ 下载完成后他会在您的主目

    2024年03月09日
    浏览(44)
  • 《Ubuntu20.04环境下的ROS进阶学习0》

            在上一专栏,我们了解了ROS的基本功能。这一专栏将会在此基础上做出进一步拓展学习。那么首先我们要学会下载并阅读别人的代码。常用的两个应用商店一个是ROS的官方应用商店ROS index,另一个就是我们熟知的github了。走,去逛逛。         这里我们先打开浏览

    2024年03月11日
    浏览(76)
  • Ubuntu20.04同时安装ROS1和ROS2共存

    每版的Ubuntu系统版本都有与之对应ROS版本的,每一版ROS都有其对应版本的Ubuntu版本,不可随便装,ubuntu20.04对应ROS1 noetic和ROS2 foxy ROS2 Galactic版本。当然最方便的是使用鱼香ROS一键安装: 但我们接下来使用手动安装。 老规矩,先换源 打开软件更新 选择Download from-Other,找到C

    2024年02月08日
    浏览(34)
  • ROS Neotic(Ubuntu 20.04)如何正确安装OpenCV

    鱼香ROS提供了一个全面且方便的脚本,可以直接运行来安装系统对应版本的ROS,同时也可以使用该命令来安装许多有趣的东西 本文安装的为无contrib版本的OpenCV GitHub OpenCV 项目地址 在源代码的目录下依次执行上方的命令,第四步cmake的过程中可以增加相关的参数来自定义Open

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包