前言
第一次运行,有些坑,然后告诉一下大家该如何自己解决的思路,毕竟每个人的实际运行环境不一样。
系统:联想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_SLAM2的ROS的话,需要将以前的配置注释掉
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:是将B→A
更改链接指向ln -snf C B:是将B→C
在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个参数,RGBD是5个参数,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.RGB与D对齐信息文件: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.相机0、1对齐信息文件: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文章来源:https://www.toymoban.com/news/detail-718063.html
总结
其实把这个运行出来后,ORB-SLAM2也可以跑出来了,步骤一样的,主要困难点在于过程中的不断报错,需要自己去一个个的解决,我自己也碰到了很多坑,好歹一个个的都解决了,希望这个能帮到大家!文章来源地址https://www.toymoban.com/news/detail-718063.html
到了这里,关于Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!