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
相关推荐
打工仔折腾 AI9 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
缘友一世16 小时前
GLM5.3 CyberSec w4A16本地部署[10]:CUDA 图捕获与编译开关
ubuntu·vllm·glm5.3 cybersec
m0_5474866616 小时前
《Ubuntu Linux操作系统与实验教程》全套PPT课件2026
linux·ubuntu·操作系统
John_Hui17 小时前
第 1 篇:VMware 安装 Ubuntu 24.04.3 Server
linux·运维·ubuntu
缘友一世17 小时前
GLM5.3 CyberSec w4A16本地部署[15]:抗退化采样与思考档
ubuntu·vllm·glm5.3 cybersec
心随_风动19 小时前
Ubuntu系统安装Apache服务教程
linux·ubuntu·apache
John_Hui19 小时前
第 3 篇:配置 JDK 17 环境
java·开发语言·ubuntu
Zevalin爱灰灰19 小时前
Linux入门第一部分(Ubuntu入门篇) 第三章 shell脚本入门(一)
linux·ubuntu·嵌入式
hhhjhl19 小时前
Zod 跨端三方库仓颉适配全流程
linux·运维·ubuntu
西索斯coding21 小时前
qwen3.8-max 和 minimax-m3 改后端仓库实测复核:补丁通过率与调用成本别急着排冠军
linux·运维·ubuntu·ai