ubuntu18 x86 D435i ORBSLAM3 ROS安装及使用

安装

1.Pangolin

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin && mkdir build
cd build && cmake ..
cd .. 
cmake -B build
cmake --build build

2.Eigen3

git clone https://github.com/eigenteam/eigen-git-mirror 
cd eigen-git-mirror 
mkdir build 
cd build 
cmake .. 
sudo make install
#安装后,头文件安装在/usr/local/include/eigen3/

3.Opencv 3.4.3

打开网站,选择3.4.3, 再点击sources,下载得到.zip文件,最后解压

https://opencv.org/releases/page/5/

开始安装依赖 , 然后编译

cd opencv-3.4.3

sudo apt-get install cmake

sudo apt-get install build-essential

sudo apt-get install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

mkdir build

cd build

cmake ..

sudo make

sudo make install

然后一堆操作

首先将OpenCV的库添加到路径,可以让系统找到

sudo gedit /etc/ld.so.conf.d/opencv.conf

在文件末尾添加

/usr/local/lib

执行如下命令使得刚才的配置路径生效:

sudo ldconfig

打开bashrc

sudo gedit /etc/bash.bashrc

在末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

保存后,重新运行配置

source /etc/bash.bashrc

更新

sudo updatedb

找到 opencv-3.4.3/samples/cpp/example_cmake 目录下,官方已经给出了一个cmake的example,拿来测试。按顺序执行:

cmake .

make

./opencv_example

可看到打开了摄像头,在左上角有一个hello opencv ,即表示配置成功。

4.Boost

打开网站

Boost Downloads

寻找历史版本 1_77_0.zip,下载解压

cd ./boost_1_77_0

./bootstrap.sh

sudo ./b2 install

5.ORBSLAM3

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3
chmod +x build.sh

将/ORB_SLAM3/CMakeLists.txt中第33行的
find_package(OpenCV 4.4)
改为find_package(OpenCV 3.4.3)

./build.sh

6.ORBSLAM3_ROS

6.1

gedit ~/.bashrc

在最后一行加上 

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ORB_SLAM3/Examples/ROS

6.2 

把Examples_old下的ROS文件夹复制到Examples下 

6.3

最后编译一下 (可以去修改下CMakeLists里的opencv版本,让它和主目录的统一下)

chmod +x build_ros.sh
./build_ros.sh

6.4 可能的问题

问题1:CMake Error at CMakeLists.txt:2 (include):   include could not find load file:      /core/ro 

 这是个路径问题,网上都在瞎掰掰,根本原因是使用了 sudo指令来运行./build_ros.sh,环境变量改变以至于找不到${ROS_ROOT}

解决方法:

首先在~/ORB_SLAM3/Examples/ROS/ORB_SLAM3目录下,执行清除命令(这一步很重要,我卡在这里很久。原因在于这里的build文件夹有超级用户权限,一旦不加sudo之后根本没有权限修改)

sudo rm -r build

返回~/ORB_SLAM3,重新执行  ./build_ros.sh

剩下的是常规问题,详见ORB_SLAM3 ROS编译及使用D435I运行_orbslam3 ros_云端舞步的博客-CSDN博客

使用——非ROS

1.修改对应文件

错误:terminate called after throwing an instance of 'rs2::invalid_value_error'   what():  object doesn't 

解决方法:

gedit ~/ORB_SLAM3/Examples/Stereo-Inertial/stereo_inertial_realsense_D435i.cc

注释掉如图位置的两行代码

./ORB_SLAM3/build.sh

2. 运行程序

./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml

如果遇到提示 not enough acceleration,晃一晃相机让它有个加速度就行

使用——ROS

1.创建yaml文件

在项目文件夹下,

touch myD435i.yaml
gedit myD435i.yaml

把下面这些复制进去,保存退出(在2中进一步修改)

%YAML:1.0

#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
Camera.type: "PinHole"

 
# Camera calibration and distortion parameters (OpenCV) 
Camera.fx: 905.8228759765625
Camera.fy: 905.6454467773438
Camera.cx: 640.6072998046875
Camera.cy: 364.5034484863281

Camera.k1: 0.0
Camera.k2: 0.0
Camera.p1: 0.0
Camera.p2: 0.0
Camera.p3: 0.0

Camera.width: 720
Camera.height: 1280
# Camera frames per second 
Camera.fps: 30.0

# IR projector baseline times fx (aprox.)
# bf = baseline (in meters) * fx, D435i的 baseline = 50 mm 
Camera.bf: 50.0
 
# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1
 
# Close/Far threshold. Baseline times.
ThDepth: 40.0
 
# Deptmap values factor
DepthMapFactor: 1000.0
 
#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------
 
# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000
 
# ORB Extractor: Scale factor between levels in the scale pyramid     
ORBextractor.scaleFactor: 1.2
 
# ORB Extractor: Number of levels in the scale pyramid    
ORBextractor.nLevels: 8
 
# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast            
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7
 
#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize:2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500
 
PointCloudMapping.Resolution: 0.01
meank: 50
thresh: 2.0

2.修改相机的.launch文件 

在~/catkin_ws/src/realsense-ros/realsense2_camera/launch文件夹下,打开rs_camera.launch,按图示修改这三项并保存。这样就会多出infra1和infra2话题。

然后使用命令:

roslaunch realsense2_camera rs_camera.launch
rostopic echo /camera/infra1/camera_info

得到:

K矩阵就是对应左边这个3*3的矩阵 

 根据K矩阵对应修改1中的myD435.yaml文件

 3.修改ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc文件的订阅消息

修改110和111两行,如图

4.重新执行编译指令(这个不要忘了)

./build_ros.sh

5. 关闭结构光

roslaunch realsense2_camera rs_camera.launch
rosrun rqt_reconfigure rqt_reconfigure

 打开后将camera->stereo_module中的emitter_enabled设置为off(0)

 6.运行

roslaunch realsense2_camera rs_camera.launch
rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt myD435i.yaml false

问题1:经常会 Fail to track local map,效果很差,不懂为什么

问题2:Segmentation fault (core dumped) 

其实这不是具体的问题,沿着报错往上一行行慢慢找,找到真正的问题再去搜(你搜这个关键词是找不到解决办法的)

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一瓶独立的花露水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值