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
相关推荐
zhaowangji10 小时前
ubuntu虚拟机装载共享文件夹导致的诡异错误
linux·运维·ubuntu
sorel_ferris12 小时前
Ubuntu-24.04中Docker-Desktop无法启动
linux·ubuntu·docker
多多*12 小时前
OJ在线评测系统 登录页面开发 前端后端联调实现全栈开发
linux·服务器·前端·ubuntu·docker·前端框架
OkeyProxy13 小时前
怎麼在Ubuntu上設置全局代理
ubuntu·代理模式·proxy模式·ip代理·海外ip代理
nfgo14 小时前
快速体验Linux发行版:DistroSea详解与操作指南
linux·ubuntu·centos
读书,代码与猫17 小时前
【裸机装机系列】10.kali(ubuntu)-安装nvidia独立显卡步骤
ubuntu·kali·nvidia·linux安装nvidia显卡·ubuntu安装nvidia·裸机安装linux
厨 神1 天前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
鸡鸭扣1 天前
虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通
linux·运维·ubuntu
Jouzzy1 天前
【Android安全】Ubuntu 16.04安装GDB和GEF
android·ubuntu·gdb
安得权1 天前
Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的
linux·前端·ubuntu