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
相关推荐
牧以南歌〆2 小时前
在Ubuntu主机中修改ARM Linux开发板的根文件系统
linux·arm开发·驱动开发·ubuntu
cuijiecheng20185 小时前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
bemyrunningdog14 小时前
Mock数据
linux·运维·ubuntu
Winner130015 小时前
Debian、Buildroot 和 Ubuntu 都是基于 Linux 的系统区别
linux·ubuntu·debian
一心0921 天前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上1 天前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
snoopyfly~1 天前
Ubuntu 24.04 LTS 服务器配置:安装 JDK、Nginx、Redis。
java·服务器·ubuntu
BD_Marathon1 天前
Ubuntu下Tomcat的配置
linux·ubuntu·tomcat
BD_Marathon1 天前
Ubuntu:Tomcat里面的catalina.sh
linux·ubuntu·tomcat
BD_Marathon1 天前
设置LInux环境变量的方法和区别_Ubuntu/Centos
linux·ubuntu·centos