ubuntu20.04在noetic下编译orbslam2
参考链接1:https://blog.csdn.net/qq_58869016/article/details/128660588
参考链接2:https://blog.csdn.net/dong123456789e/article/details/129693837
在noetic下的安装环境
1.库安装
sudo apt-get update
sudo apt-get install cmake gcc g++ git
sudo apt-get install libblas-dev liblapack-dev
2.安装Pangolin0.5
sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
git clone https://github.com/cheukwaylee/Pangolin-0.5
cd Pangolin
mkdir build
cd build
cmake ..
make -j
sudo make install
3.源码编译安装Eigen3.3.9:
http://eigen.tuxfamily.org/index.php?title=Main_Page
mkdir build
cd build
cmake ..
make
sudo make install
4.ROS-Noetic自带Opencv4.2,因此无需另外安装Opencv。
在编译之前需要修改的地方
第一处修改
将ORB_SLAM2, Example/ROS/ORB_SLAM2 以及Thirdparty/DBoW2下的CMakelist.txt中修改opencv版本
#原find_package(OpenCV 3.0 QUIET)
find_package(OpenCV 4.2 QUIET)
if(NOT OpenCV_FOUND)
find_package(OpenCV 2.4.3 QUIET)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
endif()
endif()
第二处修改
ORBextractor.h中头文件修改
#include <vector>
#include <list>
// #include <opencv/cv.h> 这一行注释掉,添加以下两行
#include<opencv2/imgproc/imgproc_c.h>
#include <opencv2/highgui/highgui_c.h>
第三处修改
在Example/Monocular ,Stereo,RGB-D下面的.cc文件中
# 参考链接:https://blog.csdn.net/m0_56140527/article/details/132496600
#将下行中CV_LOAD_IMAGE_UNCHANGED替换为cv::IMREAD_UNCHANGED
# im = cv::imread(vstrImageFilenames[ni],CV_LOAD_IMAGE_UNCHANGED);
im = cv::imread(vstrImageFilenames[ni],cv::IMREAD_UNCHANGED);
#这是因为opencv4.x以上,有些宏,API名字改了,需要改为新的
#CV_LOAD_IMAGE_UNCHANGED 改为 cv::IMREAD_UNCHANGED
#CV_LOAD_IMAGE_GRAYSCALE 改为 cv::IMREAD_GRAYSCALE
#CV_LOAD_IMAGE_COLOR 改为 cv::IMREAD_COLOR
#CV_LOAD_IMAGE_ANYDEPTH 改为 cv::IMREAD_ANYDEPTH
#CV_MINMAX 改成 NORM_MINMAX
调用安卓相机实时运行单目模式下的slam
1、下载Android_Camera-IMU,将其中的Camera-Imu.apk文件发送至手机端进行安装。
git clone https://github.com/hitcm/Android_Camera-IMU.git
2.安装工具包
sudo apt-get install ros-noetic-imu-tools # 修改对应自己的 ROS 版本
3.查看自己电脑的ip 地址:
ip address
获得地址后,在手机端打开Camera-Imu.apk,将ip地址输入,点击Connect
4.调用手机相机
第一个终端:
roscore
第二个终端
cd Android_Camera-IMU
roslaunch android_cam-imu.launch
在rviz中设置:
在By topic中添加Image显示图像,添加Imu显示imu(注意要将Fixed Frame的map修改为//imu,之后会显示/imu)
在运行ORB_SLAM2之前对相机进行标定
1.
安装相机校准功能包:
sudo apt-get install ros-noetic-camera-calibration
sudo apt-get install libcanberra-gtk-module
终端1运行:
roscore
终端2运行:
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/camera/image_raw camera:=/camera --no-service-check
标定后,点击
CALIBRATE
SAVE
查看标定以后的文件内容如右图所示。 <camera_matrix type_id=“opencv-matrix”> 是相机内参矩阵,顺序为 fx, 0, cx; 0, fy, cy; 0, 0, 1。 <distortion_coefficients type_id=“opencv-matrix”> 是畸变参数,其顺序为 k1, k2, p1, p2, k3。
然后在/catkin_ws/src/ORB_SLAM2/Examples/Monocular/目录下中新建一个配置文件 AndroidPhone.yaml
运行
终端1:
roscore
终端2:
cd Android_Camera-IMU
roslaunch android_cam-imu.launch
终端3:
rosrun ORB_SLAM2 Mono /home/xxx/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xxx/catkin_ws/src/ORB_SLAM2/Examples/Monocular/AndroidPhone.yaml