Orbslam2 稠密点云 +D435i实现(Ubuntu18.04)

2023-05-16

系统:Ubuntu18.04
设备:Realsense D435i

一、安装相关依赖库

毕设后写的一篇通俗一些的,适合没接触过或不太会ubuntu的同学,前半部分都是一样的,
tips:需要安装一个[百度网盘],以便下载需要的文件。
→ → → orbslam2+小觅相机

相关依赖库

sudo  apt-get  install  cmake gcc g++ git vim
sudo  apt-get  install  libglew-dev
sudo  apt-get  install  libboost-dev libboost-thread-dev 
sudo  apt-get  install  libboost-filesystem-dev
sudo  apt-get  install  libpython2.7-dev
sudo  apt-get  install  build-essential

安Pangolin和Eigen
这两个库,建议是0.5和3.2版本,报错可能性小,其他版本可能会出现不兼容等各种问题,目前从git下载已经是新版,这里提供一下0.5和3.2版本

pangolin:pangolin_v0.5 提取码: edam

Eigen3:Eigen_v3.2.10 提取码: hnw9

安装:

cd  Pangolin  
mkdir  build
cd  build
cmake ..
make 
sudo make install
cd  eigen
mkdir  build
cd  build
cmake ..
make 
sudo make install

二、安装ROS Ubuntu18.04对应melodic

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

sudo apt update
sudo apt install ros-melodic-desktop-full(时间略长,需等待一会)
!复制全了别丢东西!
------------------------------------------------------------------------
sudo rosdep init
出现错误:找不到命令
解决:sudo apt install python-rosdep2
------------------------------------------------------------------------

rosdep update
出现 timed out  出现超时问题

解决:解决方法
涉及到的rosdistro文件
rosdistro 提取码: b3hb


sudo apt-get install python-rosinstall
source /opt/ros/melodic/setup.bash

创建并初始化工作目录ROS使用一个名为catkin的ROS专用构建系统。为了使用它,用户需要创建并初始化catkin工作目录,如下所示。除非用户创建新的工作目录,否则此设置只需设置一次。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make
sudo apt install net-tools
gedit ~/.bashrc
在弹出的文本中最后面添加如下两句
source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash
保存
source ~/.bashrc

进行测试:

roscore

出现错误:没发现roscore
解决:
sudo apt-get install ros-melodic-desktop

重新打开三个终端:

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

鼠标点击最后一个终端,按方向键小海龟可以移动,即是配置成功

三、编译orbslam

1.安装pcl点云库,大致按这个教程安装就可以
点云安装

2.下载 高翔博士修改后的orbslam2

git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git

我按照网上教程稍微自己稍微修改了的

复制这段内容后打开百度网盘手机App,操作更方便哦
链接:https://pan.baidu.com/s/18T6kNhHFRxoxiKYo3o3rEg 
提取码:i3CB --来自百度网盘超级会员V5的分享

如果下载高翔原版代码,解压zip,将第一个文件夹中文件,复制替换进 解压后 文件夹中 的ORB_SLAM2_modified
在这里插入图片描述

3.编译g2o
解压后找到g2o_with_orbslam2文件夹
如果下载我的应该不需要修改,高翔原版需要改动一下
1)分别对文件夹下cmakelist和g20下的cmakelist对相应语句进行注释
主文件夹下
在这里插入图片描述
g20下的
在这里插入图片描述
注释后保存

2)修改g2o/types/slam2d/edge_se2_pointxy_bearing.cpp

原代码:t.setRotation(t.rotation().angle()+_measurement);

修改后:t.setRotation((Eigen::Rotation2Dd)(t.rotation().angle()+_measurement));  

3)修改/g2o_with_orbslam2/g2o/solvers/eigen/linear_solver_eigen.h

原代码:typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::Index> PermutationMatrix;

修改后:typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::StorageIndex> PermutationMatrix;

保存后,回到g2o_with_orbslam2主文件夹下

mkdir build
cmake ..
make -j8
sudo make install

4.进入ORB_SLAM2_modified文件夹
高翔原版没有ORBvoc.txt.tar.gz需要自行下载,而后将其放置于Vocabulary文件夹下,顺手解压一下

ORBvoc.txt.tar.gz

修改文件夹中的cmakelist,将opencv和eigen3修改为自己电脑安装的版本,我前边提供的eigen3为3.2.10,我安装时ros自带的3.2的opencv。如果不清楚可以进行查询

pkg-config --modversion opencv

在这里插入图片描述
修改cmakelist为对应版本
在这里插入图片描述
来到/ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/CMakeLists.txt
查看这 5 处是否正确,并也将对应的库版本号修改为自己安装的版本
在这里插入图片描述
修改后,删除
/ORB_SLAM2_modified/build,
/ORB_SLAM2_modified/Thirdparty/DBoW2/build
/ORB_SLAM2_modified/Thirdparty/g2o/build
删掉三个 build 文件夹

在ORB_SLAM2_modified下右键打开终端

cd ORB_SLAM2_modified/Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make 

从新在ORB_SLAM2_modified下右键打开终端

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j8

数据集测试,数据集需自行下载,我提供的代码中dataset中有两个下载好直接能用的数据集
如果自己下载需要对rgbd和depth进行关联

python associate.py rgb.txt depth.txt > associations.txt

示例命令
./Example/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt path_to_settings path_to_sequence path_to_association
在ORB_SLAM2_modified打开终端执行

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml datasets/rgbd_dataset_freiburg1_xyz  datasets/rgbd_dataset_freiburg1_xyz/association.txt

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml datasets/rgbd_dataset_freiburg1_room  datasets/rgbd_dataset_freiburg1_room/association.txt

高翔原版似乎没有地图保存和彩色,如果需要保存地图,或者地图不是彩色,请参考文章中间部分
保存地图,地图不是彩色

保存的点云在主文件夹下,名称vslam.pcd,当前文件夹打开终端
在这里插入图片描述

pcl_viewer vslam.pcd  (查看点云)

四、安装D435i SDK

Ubuntu18.04 + ROS melodic 安装使用 RealSenseD435i

Ubuntu18.04下安装RealSense D435i相机的SDK和ROS包

五、编译orbslam +ROS

1.来到ORB_SLAM2_modified文件夹
在打开的文本最后添加你的ROS路径,保存

gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/你的目录/ORB_SLAM2_modified/Examples/ROS

保存后在终端输入

source ~/.bashrc
chmod +x build_ros.sh
./build_ros.sh

2.修改ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/src/ros_rgbd.cc文件,把rgb_topic和depth_topic订阅话题修改为

 "/camera/color/image_raw";
 "/camera/aligned_depth_to_color/image_raw";

ORB_SLAM2_modified下从新打开终端

chmod +x build.sh 
./build.sh
chmod +x build_ros.sh
./build_ros.sh

从新打开终端,查看内参

roscore
roslaunch realsense2_camera rs_rgbd.launch 
rostopic echo /camera/color/camera_info

没有rs_rgbd.lunch
解决:sudo apt-get install ros-melodic-rgbd-launch
终端中显示的K,为参数,其中
K = [fx 0 cx 0 fy cy 0 0 1 ] 基线50mm

修改参数,得到一个新的D435i.yaml

%YAML:1.0
 
#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
 
# Camera calibration and distortion parameters (OpenCV) 
Camera.fx: 909.559875
Camera.fy: 909.740478
Camera.cx: 645.366455
Camera.cy: 366.805908

Camera.k1: 0.0
Camera.k2: 0.0
Camera.p1: 0.0
Camera.p2: 0.0
Camera.p3: 0.0

Camera.width: 640
Camera.height: 480
# Camera frames per second 
Camera.fps: 30.0

# IR projector baseline times fx (aprox.)
# bf = baseline (in meters) * fx, D435i的 baseline = 50 mm 
Camera.bf: 50.0
 
# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1
 
# Close/Far threshold. Baseline times.
ThDepth: 40.0
 
# Deptmap values factor
DepthMapFactor: 1000.0
 
#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------
 
# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000
 
# ORB Extractor: Scale factor between levels in the scale pyramid 	
ORBextractor.scaleFactor: 1.2
 
# ORB Extractor: Number of levels in the scale pyramid	
ORBextractor.nLevels: 8
 
# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast			
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7
 
#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize:2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500
 
PointCloudMapping.Resolution: 0.01
meank: 50
thresh: 2.0

运行,打开三个终端

roscore
roslaunch realsense2_camera rs_rgbd.launch
rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/D435i.yaml

运行视频b站:【视觉slam Orbslam2+D435i 稠密点云,记录-哔哩哔哩
在这里插入图片描述
过程中会遇到各种问题,需要大家自己解决喽,因为问题各不相同,所以大家就自行搜索解决,我只记录了一下自己从配置到运行的大致过程。

我遇到最多的问题是这个:
核心转储:核心转储解决

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Orbslam2 稠密点云 +D435i实现(Ubuntu18.04) 的相关文章

  • 第五/六章 立创EDA软件介绍/STM32核心板原理图设计

    目录 一 立创EDA软件介绍 二 学习目标 三 原理图设计流程 四 STM32核心板原理图 五 完成原理图的设计 六 常见问题及解决办法 一 立创EDA软件介绍 百度百科 xff1a PCB printed circuit board 即印
  • MediaCodec 编码解码踩坑记录

    概述 在MediaCodec的生命周期内存在三种状态 xff1a Stopped Executing or Released xff0c 其中 Stopped状态包含三种子状态 xff1a Uninitialized Configured
  • 第七章 STM32核心板PCB设计(布局布线+注意的疑难问题)

    目录 一 本章简介 二 学习目标 三 PCB设计流程 四 PCB规则设置 五 布局规则 六 布线注意事项 第一步 xff1a 创建 第二步 xff1a 布局 第三步 xff1a 布线 第四步 xff1a DRC检查 回答几个问题 xff1a
  • YoungTalk-STM32入门100步-总篇

    这个系列的笔记是为了学习单片机STM32而做的 xff01 来记录自己的学习路程 xff0c 解答一些自己的疑惑 xff01 xff08 本系列的所有内容都是以杜洋老师的视频为主线的 xff0c 再加上自己做的一些笔记 xff0c 网上找的
  • Python多线程编程(详细:适合小白入门)

    目录 前言 一 进程 1 多任务 2 进程 3 多进程完成多任务 3 1进程的创建步骤 3 2通过进程类创建进程对象 3 3创建进程和启动的代码 4 进程执行带有参数的任务 5 获取进程编号 6 进程的注意点 6 1主进程会等待所有的子进程
  • 关于深度学习中三维矩阵的理解(RGB图像的输入)

    usr bin env python coding utf 8 34 34 34 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • (目标检测)①数据集的建立(拍摄收集、数据集标注)

    目录 一 拍摄收集 xff08 一 xff09 视频拍摄 xff08 二 xff09 将MP4文件截取出图片 二 数据集标注 1 打开图片所在的文件夹 2 修改输出文件夹 3 图片标注 这一系列的博客将会帮助我自己 xff08 和大家 xf
  • myCobot pro 机械臂(4)正向运动学——改进DH表示法(开发环境:python)

    我只能说 xff0c 写这篇博客太艰难了 一定要沉住耐心 这个型号的机械臂与官方给的手册里面的参数是有出入的 感谢 台大机器人学课程 机器人学之运动学笔记 3 机械臂DH表示法 43 正向运动学 xff08 Forward Kinemati
  • myCobot pro 机械臂(5)Robotics Toolbox for MATLA(开发环境:matlab)

    感谢 机器人工程师进阶之路 xff1a matlab robotics toolbox安装方法 目录 一 matlab robotics toolbox安装方法 二 改进DH法对myCobot进行仿真 一 matlab robotics t
  • myCobot pro 机械臂(6)逆向运动学

    机械臂逆运动学求解常用的方法有几何法 解析法 数值法 从求解的方式和计算的效率上来看 xff0c 几何法和解析法会考虑机械臂结构不同而造成的差异 xff0c 因此对于不同结构的机械臂会有特定的求解方式 通常来说 xff0c 这两种方法具有速
  • STM32开发基础知识入门

    C语言基础 位操作 对基本类型变量可以在位级别进行操作 1 不改变其他位的值的状况下 xff0c 对某几个位进行设值 先对需要设置的位用 amp 操作符进行清零操作 xff0c 然后用 操作符设值 2 移位操作提高代码的可读性 3 取反操作
  • 蜂鸣器实验

    蜂鸣器介绍 这里采用的是有源蜂鸣器 xff0c 有源蜂鸣器自带了振荡电路 xff0c 一通电就会发声 xff1b 无源蜂鸣器则没有自带震荡电路 xff0c 必须外部提供 2 5Khz 左右的方波驱动 xff0c 才能发声 STM32的单个
  • CodeBlocks 20.03版的若干已知问题及其解决方法

    CodeBlocks 20 03在Win10上运行时会出现一些问题 xff0c 我通过搜索网络找到了解决办法 xff0c 下面分享给大家 一 改变编辑器的字体后引发 wxWidgets debug alert A debugging che
  • sumo的简单使用

    sumo简单教程 安装配置环境变量文件配置运行python文件生成真实路网python调用 如果你也对交通仿真感兴趣 xff0c 且是一个小白 xff0c 但是有python基础 xff0c 我想我可以帮到你 安装 首先安装为我们入门的第一
  • Kube-Prometheus Stack监控mysql

    准备环境 mysql 环境可以搭建2个或者一个来进行监控 我这个是搭建了2个一个使用容器启动 xff0c 一个二进制安装如图所示 配置mysql exporter进行采集数据 apiVersion apps v1 span class to
  • Promise

    一 定义 xff1a 所谓Promise xff0c 简单说就是一个容器 xff0c 里面保存着某个未来才会结束的事件 xff08 通常是一个异步操作 xff09 的结果 从语法上说 xff0c Promise 是一个对象 xff0c 从它
  • 全国大学生智能汽车竞赛硬件篇(二)—电磁信号采集部分

    对于智能车硬件的整体框架主要由5部分组成 xff1a 电磁信号采集与处理部分 电机驱动部分 电源管理部分 主控部分 其他部分 xff08 停车模块等 xff09 1 电磁信号采集部分 这一部分对于电磁组别至关重要 xff0c 对与摄像头组别
  • 嵌入式笔试(1)—海康威视试题

    单选 xff08 15题 xff09 第一题 栈简介 栈由操作系统 xff08 编译器 xff09 自动分配释放 xff0c 用于存放函数的参数值 局部变量等 xff0c 其操作方式类似于数据结构中的栈 堆简介 堆由开发人员分配和释放 xf
  • 常用通信协议——IIC详解(全网最全)

    一 IIC 简介 I2C xff08 Inter Integrated Circuit xff09 是内部整合电路的称呼 xff0c 是一种串行通讯总线 xff0c 使用多主从架构 xff0c 由飞利浦公司在1980年为了让主板 嵌入式系统
  • 常用通信协议——IIC协议编程实现

    一 IIC连接实物示意图 二 IIC协议程序编写的要点 xff1a 1 空闲状态 2 开始信号 3 停止信号 4 应答信号 5 数据的有效位 6 数据传输 三 IIC驱动编写 1 硬件准备 此处使用正点原子Mini板STM32F103 xf

随机推荐

  • Linux驱动编程篇(四)——LED驱动(二)LED驱动框架

    为应对多种芯片或开发板适配的LED驱动程序 xff0c 同时减少开发流程 xff0c 故需要在APP 驱动程序 硬件三个部分中添加一个部分 xff0c 用于放置各单板LED驱动程序的公共部分 一 LED驱动程序框架的流程图 二 对于公共部分
  • Linux驱动编程篇(五)——驱动设计的思想(面向对象)(分层)(分离)

    Liunx驱动 61 驱动框架 43 硬件操作 61 61 61 Liunx驱动 61 驱动框架 43 单片机 对于驱动的的框架 xff0c 大体有三种设计思想 xff1a 1 面向对象 xff1b 2 分层 xff1b 3 分离 xff0
  • 嵌入式Android底层开发(一)——安卓开发的整体框架与简述

    一 Android简介 Android是一种基于Linux内核 xff08 不包含GUN组件 xff09 的自由及开放源代码的操作系统 xff0c 主要使用于移动设备 xff0c 如智能手机和平板电脑 xff0c 由美国Google公司和开
  • 旋转矩阵

    关注下方公众号 xff0c 分享硬核知识 作者 小K 出品 公众号 xff1a 小K算法 xff08 ID xff1a xiaok365 xff09 01 故事起源 有这样的一种矩阵 xff0c 从左上角开始 xff0c 顺时针从外向里旋转
  • 【转】 linux port scan

    https www binarytides com tcp syn portscan in c with linux sockets Port Scanning searches for open ports on a remote sys
  • 嵌入式Android音频系统(一)Android音频系统专栏开篇

    对于安卓音频系统 xff0c 在前面我们已经讲了大致框架 xff0c 嵌入式Android底层开发 xff08 六 xff09 Android音频系统 总体框架 本专栏将对Android音频系统进行更细致的阐述 xff0c 同时这些也是我的
  • 嵌入式Android音频系统(二)Android音频系统的专用名词解释

    对于Android音频系统学习时可能会出现许多名词 xff0c 这些词光看字面意思可能无法直接理解 xff0c 为了更好的对Android系统进行学习 xff0c 特开一章对Android音频系统会出现的名词进行解释 xff0c 欢迎大家补
  • 嵌入式Android音频系统(三)Android音频系统涉及的文件

    本专栏将对Android音频系统进行更细致的阐述 xff0c 同时这些也是我的学习笔记 xff0c 如有错误欢迎大家在评论区批评指正 xff0c 谢谢大家 本专栏的学习资料来源 xff1a 本专栏的学习资料主要来自韦东山老师的Android
  • 使用ros从realsence相机中获取图像

    第一部分 从相机中提取出视频并拆分成帧 文章目录 第一部分 从相机中提取出视频并拆分成帧前言一 使用ros从realsence相机中获取录制的视频并播放1 开启ros内核2 打开realsense相机3 查看当前话题4 在相机界面显示RGB
  • ROS进行深度相机的标定

    前言 自己使用标定板对深度相机进行标定 参考 xff1a http wiki ros org camera calibration Tutorials MonocularCalibration 一 准备标定板 在下面的网站中可下载棋盘格标定
  • Realsense SDK安装以及ROS版安装

    一 Realsense SDK2 安装 1 注册服务器公钥 sudo apt get update amp amp sudo apt get upgrade amp amp sudo apt get dist upgrade sudo ap
  • STM32学习笔记(四)蜂鸣器实验

    STM32F103ZET6之蜂鸣器实验 文章目录 STM32F103ZET6之蜂鸣器实验前言一 原理图二 程序源码1 beep h2 beep c3 main c 三 实验结果总结 前言 对于STM32的学习可分为3个版本 1 寄存器版本
  • STM32学习笔记(五)按键输入实验

    STM32F103ZET6之按键输入实验 文章目录 STM32F103ZET6之按键输入实验前言一 原理图二 程序源码1 key h2 key c3 main c 三 实验结果总结 前言 对于STM32的学习可分为3个版本 1 寄存器版本
  • linux虚拟机无法关闭防火墙

    新手在操作虚拟机时经常会出现各种奇怪的bug 例如宿主机无法访问虚拟机里的tomcat Docker registry nginx等问题 往往是因为没关闭防火墙 I service iptables stop xff08 特点是 xff1a
  • stm32串口收发总结

    stm32串口的使用过程 xff1a 1 使能串口时钟 xff0c 同时使能串口对应的GPIO的时钟 xff1b 2 设置串口引脚的输入输出模式 速率 xff0c 并初始化GPIO引脚 xff1b 3 对于需要接收数据的串口 xff0c 配
  • 1、树莓派3B+ 开箱安装系统及入门使用的基本设置

    一直想学习Linux的开发 xff0c 补充高端应用的开发的短板 xff0c 苦于没有时间 xff0c 最近有点时间购买了当前最火的卡片计算机 xff0c 树莓派3B plus版本 xff0c 淘宝购买 xff0c 同城发货 xff0c 拿
  • 【晕晕晕】对softmax函数进行改进

    改进softmax函数 span class token keyword def span span class token function softmax1 span span class token punctuation span
  • 几种查找文献的方式

    几种常用查找文献的方式 1 Nature杂志官网 百度进入Nature杂志的官网 xff08 https www nature com xff09 xff0c 如下图所示 xff0c 点击右上角的Search xff0c 即可利用文献关键词
  • Ubuntu18.04 配置orbslam2环境+小觅相机测试(零基础)

    写在前面 xff1a ubuntu的安装建议采用双系统模式 xff0c 不建议用虚拟机 xff0c 会出现奇怪错误导致配置环境失败 本教程使用 ubuntu18 04 xff0c 双系统的安装请自行搜索教程安装 本人的毕业设计做的是slam
  • Orbslam2 稠密点云 +D435i实现(Ubuntu18.04)

    系统 xff1a Ubuntu18 04 设备 xff1a Realsense D435i 一 安装相关依赖库 毕设后写的一篇通俗一些的 xff0c 适合没接触过或不太会ubuntu的同学 xff0c 前半部分都是一样的 xff0c tip