ubuntu20.04在noetic下编译orbslam2

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.库安装

bash 复制代码
sudo apt-get update
sudo apt-get install  cmake gcc g++ git
sudo apt-get install libblas-dev liblapack-dev

2.安装Pangolin0.5

bash 复制代码
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

bash 复制代码
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版本

bash 复制代码
#原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中头文件修改

bash 复制代码
#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文件中

bash 复制代码
 # 参考链接: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文件发送至手机端进行安装。

bash 复制代码
git clone https://github.com/hitcm/Android_Camera-IMU.git

2.安装工具包

bash 复制代码
sudo apt-get install ros-noetic-imu-tools  # 修改对应自己的 ROS 版本

3.查看自己电脑的ip 地址:

bash 复制代码
ip address

获得地址后,在手机端打开Camera-Imu.apk,将ip地址输入,点击Connect

4.调用手机相机

bash 复制代码
第一个终端:
roscore
第二个终端


    cd Android_Camera-IMU

    roslaunch android_cam-imu.launch

在rviz中设置:

在By topic中添加Image显示图像,添加Imu显示imu(注意要将Fixed Frame的map修改为//imu,之后会显示/imu)

在运行ORB_SLAM2之前对相机进行标定

安装相机校准功能包:

bash 复制代码
sudo apt-get install ros-noetic-camera-calibration

sudo apt-get install libcanberra-gtk-module
bash 复制代码
终端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

运行

bash 复制代码
终端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
相关推荐
bohu836 小时前
亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效
linux·opencv·ubuntu·dlib·microros·亚博
hunter20620613 小时前
ubuntu调用图形化网络测试工具
网络·测试工具·ubuntu
jcrose258014 小时前
Ubuntu二进制部署K8S 1.29.2
linux·ubuntu·kubernetes
Gemma's diary15 小时前
Ubuntu开发中的问题
linux·运维·ubuntu
秋说16 小时前
本地Ubuntu轻松部署高效性能监控平台SigNoz与远程使用教程
linux·运维·ubuntu
幻想编织者1 天前
Ubuntu实时核编译安装与NVIDIA驱动安装教程(ubuntu 22.04,20.04)
linux·服务器·ubuntu·nvidia
hunter2062061 天前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
张3蜂1 天前
docker Ubuntu实战
数据库·ubuntu·docker
白粥行1 天前
linux-ubuntu学习笔记碎记
linux·ubuntu
PaLu-LI2 天前
ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果
c++·人工智能·opencv·学习·ubuntu·计算机视觉