装Pangolin(Pangolin起可视化作用的)
git clone https://gitee.com/maxibooksiyi/Pangolin/tree/v0.6
再把v0.6这个文件夹名称改为Pangolin
然后装些Pangolin的依赖,保险起见我没有直接运行脚本装,怕他给我更新了什么软件,其实下面这些装的时候大部分已经装了
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
cd Pangolin
mkdir build
cd build
cmake .. #有的地方写 cmake -DCPP11_NO_BOOSR=1 .. 也可以,#待验证区别
make
sudo make install
sudo ldconfig #这步容易漏掉
sudo ldconfig的作用是刷新
https://blog.csdn.net/qq_42848006/article/details/118760313
卸载2.0.0版本的ceres并装1.14.0版本的ceres
卸载源码编译安装的ceres只需要在build文件夹下打开终端运行sudo make uninstall即可
说明一下,下仓库里对应tag的时候,也是可以用git clone -b tag名称 的,就当下载某个分支一样。
git clone -b 1.14.0 https://gitee.com/maxibooksiyi/ceres-solver
cd ceres-solver/
mkdir build
cd build
cmake ..
make
sudo make install
然后就是下tag为v0.4-beta的ORB_SLAM3并编译,注意不需要专门下到一个工作空间里面。
git clone -b v0.4-beta https://gitee.com/maxibooksiyi/ORB_SLAM3
然后直接用脚本编译了
cd ORB_SLAM3
chmod +x build.sh
./build.sh
为使编译不报错,需要修改三处地方的代码。
这是第一处
OTB_SLAM3文件夹下的CMakeLists.txt里面添加下面这句(我不确定这步有没有起作用,后来似乎主要是靠更换ceres版本解决的编译报的一大堆语法错误,但是至少更换ceres版本再加上这步是没有问题的,可以解决那一大堆报错,不加这步只改ceres版本不知道是否OK,只加这步但是不改ceres版本是解决不了那些一大堆报错的,万全起见,这步还是加上,至少没坏处)
add_compile_options(-std=c++14)
这个地方有两处
error: no match for ‘operator/’ (operand types are ‘cv::Matx<float, 3, 1>’ and ‘float’) x3D = x3D_h.get_minor<3,1>(0,0) / x3D_h(3)错误
将x3D = x3D_h.get_minor<3,1>(0,0) / x3D_h(3);
修改为
x3D = cv::Matx31f(x3D_h.get_minor<3,1>(0,0)(0) / x3D_h(3), x3D_h.get_minor<3,1>(0,0)(1) / x3D_h(3), x3D_h.get_minor<3,1>(0,0)(2) / x3D_h(3));
https://blog.csdn.net/qq_45807929/article/details/120445366
改完这三处,再用./build.sh重新编译即可。
其实到这里可以下数据集跑,当然不基于ROS的,但是由于下数据集的网站网速太慢,所以我就没有在这里下数据集跑了。接着弄基于ROS的ORBSLAM。
可以接着准备编译ROS版的ORBSLAM3
先运行这两个命令,注意路径对应真实路径,应该是为了让系统能找到这个功能包。
echo "export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/maxi/ORB_SLAM3/Examples/ROS" >> ~/.bashrc
source ~/.bashrc
再运行这两个命令进行编译
chmod +x build_ros.sh
./build_ros.sh
更改订阅话题的名称再运行./build_ros.sh重新编译
参照这里去对应位置修改订阅的图像话题名称,我这里是改为订阅T265的鱼眼图像话题
下面两个命令分别是启动T265发出鱼眼图像话题,启动ORBSLAM,注意第二个命令里面的路径要跟实际路径相对应,不要直接复制。由于是单目,启动完成后,需要移动下相机使得完成初始化。
当然目前这只是初步跑通,还没有严格修改配置文件,标定等等的。还没有跑双目双目IMU的ORBSLAM3。
roslaunch realsense2_camera rs_t265_image.launch
rosrun ORB_SLAM3 Mono /home/maxi/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/maxi/ORB_SLAM3/Examples/ROS/ORB_SLAM3/Asus.yaml
下图是成功启动并完成初始化后的现象,可以在相机图像里看到熟悉的ORBSLAM的特征点方格。