wget http://fishros.com/install -O fishros && . fishros
输入1,就根据提示一步一步来
sudo apt update
sudo apt install git cmake gcc g++
直接源码安装
sudo apt-get install libeigen3-dev
sudo apt install libglew-dev libpython2.7-dev
(pangolin0.6版本下载) (0.6版本下载)选择Source code(tar.gz)
(安装出错参考) pangolin安装出错解决
mkdir build
cd build
cmake ..
make
sudo make install
//安装后pangolin将在 /usr/local/include/中找到
可能会是缺少依赖:
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
在你所放置的Pangolin文件下
cd build/examples/HelloPangolin
./HelloPangolin
运行此示例,效果显示是一个红绿蓝立方体,表示即为安装成功
教程一: ubuntu16.04+Opencv3.4.3+opencv_contrib3.4.3安装编译全过程
教程二:ubuntu18.04中安装opencv3.2
DBoW2 和 g2o 在源码的第三方库中,无需下载,后面直接编译即可。
ORB_SLAM3官网下载
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
打开ORB_SLAM3中build.sh可以看到5个需要编译的第三方库
直接执行以下命令,可一次性编译这5个文档,一次成功是最省事了,但报错不易查找问题
cd ORB_SLAM3
chmod +x build.sh
./build.sh
故建议单独进行编译
在ORB_SLAM3文件夹下打开终端
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
在/ORB_SLAM3下开终端
cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
在/ORB_SLAM3下开终端
cd Thirdparty/ Sophus
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
在/ORB_SLAM3下开终端
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
报错1:Could not find a configuration file for package “OpenCV” that is compatible
with requested version “4.4”.
原因:此处我安装的是opencv3.4.2
解决:将/ORB_SLAM3/CMakeLists.txt中第33行
find_package(OpenCV 4.4)
此处的4.4改为3.4.2即可,即
find_package(OpenCV 3.4.2)
再次编译
报错2:realsense2config.cmake
解决:sudo apt-get install ros-melodic-realsense2-camera
EuRoC 数据集下载
如图,Downloads下的ASL Dataset Format,点击任意link下载即可
/ORB_SLAM3下新建Datasets,将下载好的文件MH_01_easy(就是图中第一个Machine Hall 01)放入Datasets,并改名为MH01
ROS bag也下载一个
另一个ORB_SLAM3
找到MH01对应sensor的命令运行即可,如:
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml /home/nj/ORB_SLAM3/Datasets/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo
./euroc_examples.sh
sudo apt-get install ros-melodic-realsense2-camera
(先硬件连接好后,测试摄像头能否正常打开,启动)
roslaunch realsense_camera rs_rgbd.launch
修改相机启动文件路径:/opt/ros/melodic/share/realsense2_camera/launch/rs_rgbd.launch
在此路径下/opt/ros/melodic/share/realsense2_camera/launch/打开终端
sudo gedit rs_rgbd.launch
改1:第78行,第79行改false为true
改2:图像大小改为640*480
保存
在路径/ORB_SLAM3/Examples/Stereo-Inertial下RealSense_D435i.yaml文件内参等配置按需要进行修改
运行脚本开始运行ORB-SLAM3:
./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml
原作者将ROS部分放到了/ORB_SLAM3/Examples_old位置,后续编译是进入old中
打开bashrc,执行
sudo gedit ~/.bashrc
在~/.bashrc中添加环境变量,将以下复制粘贴到最后一行:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples_old/ROS
(绿色PATH改为自己的路径,如我的是:/home/nj/ORB_SLAM3/Examples_old/ROS)
cd Examples_old/ROS/ORB_SLAM3
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j4
报错1:/home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/…/…/…/include/ImuTypes.h:29:10: fatal error: sophus/se3.hpp: 没有那个文件或目录
#include
解决1:找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3下的CMakeLists.txt 修改它,include_directories中添加
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
解决:
(1)找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ros_mono_ar.cc文件:
将第151行的 cv::Mat Tcw = mpSLAM→TrackMonocular(cv_ptr→image,cv_ptr→header.stamp.toSec());
替换为:
cv::Mat Tcw;
Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
cv::eigen2cv(Tcw_Matrix, Tcw);
(2)找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ViewerAR.cc文件:
将第405行的vPoints.push_back(pMP→GetWorldPos());
替换为:
cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);
(3)还是ViewerAR.cc文件:
将532行的cv::Mat Xw = pMP→GetWorldPos();
替换为:
cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);
解决:加头文件
在/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR/ViewerAR.h中加入如下:
#include
#include
#include
再次重新编译,可算ok了
1.开启三个终端
roscore
2.在ORB_SLAM3下打开终端(每开一次都要source)
source /home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/build/devel/setup.bash
rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples_old/Stereo/EuRoC.yaml /home/nj/下载/MH_01_easy.bag
(第一个参数为系统的主程序执行文件 Stereo
第二个参数为特征词典 Vocabulary/ORBvoc.txt
第三个参数为相机参数 Examples_old/Stereo/EuRoC.yaml
后续如果要使用自己的数据集,是需要修改这个文件的。而这个地方,也需要注意你下载的数据集和相机参数文件对应
第四个参数为数据集路径 /home/nj/下载/MH_01_easy.bag)
3.跑包
rosbag play --pause –clock MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu
出现问题:
运行显示如下,无法跟踪上,是话题没同步还是哪里对应上
原因:上面的命令是启动双目的配置,但文件中缺少左右摄像头标定的内参,所以无法跟踪,需要的话就标了放进去编译启动,下面是以现有参数,启动单目,表明能运行成功就好
解决:
路径/home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/ros_mono_inertial.cc源码中查看订阅话题/camera/image_raw,100
开启三个终端
1.
roscore
2.在ORB_SLAM3下打开终端(每开一次都要source)
source /home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/build/devel/setup.bash
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples_old/Monocular-Inertial/EuRoC.yaml
rosbag play --pause MH_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu
结束