当前位置: 首页 > news >正文

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

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-IMUroslaunch 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-calibrationsudo 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

相关文章:

  • AI:99-基于深度学习的飞机故障检测与维修
  • 美团赚钱更难了,Q3核心业务利润率下降2%,市值一年缩水近6000亿
  • 【细说Java内部类】
  • java stream的常见操作
  • 智能优化算法应用:基于头脑风暴算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 深度学习中的各类评价指标
  • Datawhale聪明办法学Python(task3变量与函数)
  • Docker笔记:容器转换成镜像,导出导入镜像,数据拷贝,查看日志
  • digit函数
  • 一文搞懂OSI参考模型与TCP/IP
  • js-过滤制表符
  • iOS按钮控件UIButton使用
  • Docker 安装Apache Superset 并实现汉化和快速入门
  • 构建自己专属seata-server 镜像(分布式事务)?(第二篇)
  • Android:FragmentHostCallback
  • 分享的文章《人生如棋》
  • angular学习第一篇-----环境搭建
  • Create React App 使用
  • in typeof instanceof ===这些运算符有什么作用
  • Javascript 原型链
  • JAVA多线程机制解析-volatilesynchronized
  • java取消线程实例
  • leetcode46 Permutation 排列组合
  • Python3爬取英雄联盟英雄皮肤大图
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 关于使用markdown的方法(引自CSDN教程)
  • 检测对象或数组
  • 前端攻城师
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深入 Nginx 之配置篇
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • $jQuery 重写Alert样式方法
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)fgets与fputs函数详解
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (补)B+树一些思想
  • (多级缓存)多级缓存
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)linux下的时间函数使用
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net web项目 调用webService
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net与java建立WebService再互相调用
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [2]十道算法题【Java实现】
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [Android]竖直滑动选择器WheelView的实现
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)