使用D435i相机跑ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图编译(实时彩色点云地图加回环+保存点云地图)

2023-05-16

目录

  • 前言
    • 系统版本
  • 一、准备工作
    • 下载源码
  • 二、编译 ./build.sh
    • 1.删除一些build文件夹
    • 2.创建 Vocabulary 文件夹
    • 3.编译
      • 1)错误1
    • 4.解决 段错误(核心已转储)
      • 改动一
      • 改动二
    • 5.viewer视图里只有坐标系,没有点云
      • 1.改动`pointcloudmapping.h`文件
      • 2.查看TUMx.yaml文件里有没有点云地图的参数,没有就加在最后面
    • 6.运行TUM数据集
  • 三、编译 ./build_ros.sh
    • 1.将该工程添加至 **ROS_PACKAGE_PATH**
    • 2.编译前修改一个文件
    • 3.编译
      • 1.错误1
      • 2.错误2
    • 4.运行


前言

本文写于2022年11月25日。

系统版本

Ubuntu18.04 + ROS melodic


一、准备工作

ORB-SLAM2_RGBD_DENSE_MAP-master 是基于 ORB_SLAM2 改动的, ORB_SLAM2 编译前一些库的安装以及编译时的报错参考此篇博客

下载源码

ORB-SLAM2_RGBD_DENSE_MAP-master源码地址
建立ROS工作空间 ~/ORB-SLAM2_ws/src
如果没有安装 Ros Melodic ,参考Ubuntu18.04安装Ros Melodic 以及测试rviz
如果安装了 Ros Melodic ,没有创建ROS空间,参考此篇博客


二、编译 ./build.sh

1.删除一些build文件夹

删除ORB-SLAM2_RGBD_DENSE_MAP-master/Thirdparty/DBoW2/build 文件夹

2.创建 Vocabulary 文件夹

ORB_SLAM2 下的 Vocabulary 子文件夹复制粘贴到 ORB_SLAM2_modified 文件夹下

3.编译

进入 ORB_SLAM2_modified 文件夹

cd ORB_SLAM2_modified

build.sh 文件权限

chmod +x build.sh

编译 build.sh 文件

./build.sh

1)错误1

在这里插入图片描述原因ORB-SLAM2_RGBD_DENSE_MAP-master/tools里的bin_vocabulary文件出问题了,在编译的时候会将此文件删除导致出现该文件不存在的问题。
在这里插入图片描述解决办法
1)打开build.sh文件,将最后几行注释掉
在这里插入图片描述编译一下,ORB-SLAM2_RGBD_DENSE_MAP-master/tools里的bin_vocabulary文件正常了,将build.sh文件,将最后几行取消注释再次编译,不报错了。

在这里插入图片描述
下面两个问题解决参考链接

4.解决 段错误(核心已转储)

改动一

CMakeLists.txt 中删除 -march=native(12行左右)

#原来的
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3 -march=native")

#改成
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3")

Thirdparty/g2o/CMakeLists.txt中删除 -march=native(57行左右)

#原来的
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native") 
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -march=native") 

#改成
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") 
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3") 

改动二

在有定义Eigen的头文件中添加预编译命令EIGEN_MAKE_ALIGNED_OPERATOR_NEW
我在include路径下Converter.h、LoopClosing.h、PointCloude.h这三个文件做了修改
在这里插入图片描述
LoopClosing.h文件,将下面的注释了,在上面添加了
在这里插入图片描述
在这里插入图片描述
我改了之后偶尔也会遇到段错误,暂时没啥办法。

5.viewer视图里只有坐标系,没有点云

1.改动pointcloudmapping.h文件

#原来的
bool loopbusy;
#改为
bool loopbusy = false;

由于我安装了pcl1.8的库,作者源码给了pcl1.7的库,导致pointcloudmapping.h头文件重复包含了,整个代码是灰色的,所以将作者源码pcl整个文件夹删掉了,并且将CMakeLists.txtfind_package( PCL 1.7 REQUIRED )改成了find_package( PCL 1.8 REQUIRED )

2.查看TUMx.yaml文件里有没有点云地图的参数,没有就加在最后面

PointCloudMapping.Resolution: 0.01
meank: 50
thresh: 2.0

6.运行TUM数据集

使用如下命令./bin/rgbd_tum Vocabulary/ORBvoc.bin path_to_settings path_to_sequence path_to_association
我的命令如下

./bin/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /home/d/文档/数据集/TUM数据集/rgbd_dataset_freiburg3_long_office_household /home/d/文档/数据集/TUM数据集/rgbd_dataset_freiburg3_long_office_household/associations.txt

在这里插入图片描述
最后保存了result.pcd点云文件

在这里插入图片描述

三、编译 ./build_ros.sh

1.将该工程添加至 ROS_PACKAGE_PATH

打开终端输入

sudo gedit ~/.bashrc

在最后一行插入

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ORB-SLAM2_ws/src/ORB-SLAM2_RGBD_DENSE_MAP-master/Examples/ROS

注: ~/catkin_orb/src/ 为我 ORB-SLAM2_RGBD_DENSE_MAP-master 的路径,需要改成自己的文件路径

刷新 bash

source ~/.bashrc

检验 ROS path 是否被识别

echo $ROS_PACKAGE_PATH

显示了刚刚加入的路径,说明ROS路径配置成功了

2.编译前修改一个文件

3.编译

进入 ORB_SLAM2_modified 文件夹

cd ORB_SLAM2_modified

build_ros.sh 文件权限

chmod +x build_ros.sh

编译 build_ros.sh 文件

./build_ros.sh

1.错误1

在这里插入图片描述

找不到pcl库,原来是Examples/ROS/ORB_SLAM21/CMakeLists.txt也是在找pcl1.7库,把include_directories(/usr/include/pcl-1.7)改成include_directories(/usr/include/pcl-1.8)

2.错误2

编译时这样
在这里插入图片描述
运行时这样
在这里插入图片描述
解决办法:(具体为啥不清楚,但是这样编译后可以运行)
步骤1:删掉ORB-SLAM2_RGBD_DENSE_MAP-master/lib文件夹下的图片中三个文件
在这里插入图片描述步骤2:在ORB-SLAM2_RGBD_DENSE_MAP-master/Examples/ROS/ORB_SLAM21/CMakeLists.txt里做如下修改
在这里插入图片描述

4.运行

首先在进入到realsense-ros下,打开终端

source devel/setup.bash

roslaunch realsense2_camera rs_rgbd.launch

接着在~/ORB-SLAM2_ws/src/ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下再打开一个终端输入

rosrun ORB_SLAM21 RGBD Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM21/MyD435i.yaml

运行一直会有问题段错误 (核心已转储),但是多运行几次就可以了。
在这里插入图片描述

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

使用D435i相机跑ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图编译(实时彩色点云地图加回环+保存点云地图) 的相关文章

  • ROS | 机器人操作系统简介

    ROS 机器人操作系统简介 1 ROS基本概念2 ROS架构2 1 OS层2 2 中间层2 3 应用层 3 通信机制4 计算图4 1 节点 xff08 Node xff09 4 2 节点管理器 xff08 Master xff09 4 3
  • 3-1 图文并茂说明raid0,raid1, raid10, raid01, raid5等原理

    文章目录 简介RAID类型RAID0RAID1RAID5RAID6RAID10RAID01 RAID对比图 简介 一 RAID 是什么 xff1f RAID xff08 Redundant Array of Independent Disk
  • 3-2至3-8 创建一个至少有两个PV组成的大小为20G的名为testvg的VG

    文章目录 1 在vmware添加多块20G的硬盘 xff0c 并创建分区2 创建一个至少有两个PV组成的大小为20G的名为testvg的VG xff0c 要求PE大小为16M xff0c 而后在卷组中创建大小为5G的逻辑卷testlv 挂载
  • 3-9 静态配置网卡IP,centos/ubuntu实现

    文章目录 centos配置IPubuntu配置IP centos配置IP span class token comment 显示当前IP地址 xff0c 为DHCP获取 span span class token function host
  • 3-10 图文并茂解释TCP/IP 3次握手4次断开

    文章目录 前言TCP报文首部TCP数据传输3次握手4次断开 前言 TCP IP传输协议 xff0c 即传输控制 网络协议 xff0c 也叫作网络通讯协议 它是在网络的使用中的最基本的通信协议 TCP IP传输协议对互联网中各部分进行通信的标
  • 3-11 网卡绑定bond0的实现

    文章目录 前言centos网卡绑定ubuntu网卡绑定故障测试 前言 网卡绑定bond又称多网卡 bonding xff0c 是将多块网卡绑定同一IP地址对外提供服务 xff0c 可以实现高可用或者负载均衡 然而直接给两块网卡设置同一IP地
  • 3-12 使用expect登陆远程主机并安装应用

    文章目录 前言一键脚本脚本验证免密登陆安装mysql安装apache退出 前言 实现免密登陆脚本 expect登陆远程主机 xff0c 将生成的密钥写入到目标主机 expect测试远程登陆 1 xff09 通过shift读取脚本参数 2 x
  • 4-1 定时任务的示例10个

    文章目录 前言基本命令与格式示例 前言 Linux crontab 是用来定期执行程序的命令 当安装完成操作系统之后 xff0c 默认都已经安装 xff0c 并启动此任务调度命令 crond 命令每分钟会定期检查是否有要执行的工作 xff0
  • 4-2 Linux进程和内存概念

    文章目录 前言进程状态进程优先级内存模型进程内存关系 前言 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源 一般来说 xff0c Linux系统会在进程之间共享程序代码和系统函数库 xff0c 所以在任何时刻内存中都
  • 4-3 Linux启动流程

    文章目录 前言经典启动流程1 按下电源2 开机自检 BIOS 3 MBR引导4 GRUB菜单5 加载内核6 运行init进程7 读取 etc inittab8 读取 etc rc sysinit初始化系统9 运行 etc rc d rcN
  • pixhawk光流,思码光thone-flow的使用

    测试硬件 xff1a Holybro pixhawk FMU V5 测试固件 xff1a V1 13 测试光流 xff1a thone flow 这此从淘宝店家 xff08 玩物励志科技 xff09 购买了迷你光流传感器 xff0c 也就是
  • ROS | 工作空间及功能包的创建

    ROS 工作空间及功能包的创建 1 创建工作空间2 创建功能包 1 创建工作空间 工作空间是一个存放工程开发相关文件的文件夹 xff0c 创建工作空间首先在Linux系统中打开一个新的终端 xff0c 并按照以下步骤输入指令 mkdir p
  • Spring-Aop的使用

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 Aoc的相关术语二 aop使用步骤三 aop中获取切面的一些信息三 aop中设置切面的优先级 前言 Spring两大核心
  • 步骤二:Ubantu18.04中Realsense的安装(T265)

    1 安装realsense SDK git clone https ghproxy com https github com IntelRealSense librealsense 此处参考上一篇jetsonnano安装ros的文章 xff
  • 步骤四:T265和Mavros通讯

    阿木的volans项目连接t265与px4是在2022年暑假实验的 但是随后在九月初再试实验时 由于一些暂时不知明的原因 无法联机 于是 我们改用了官网的连接方法 下面附上官网链接 T265 Intel Realsense Tracking
  • PX4报错问题整理

    1 装好机能够正常解锁 xff0c mannual模式 xff0c 能够起飞 xff0c 但飞行大幅摇晃 xff0c 最后侧翻 常见解答 xff0c 电调校准 xff0c 加速度计校准 但我们是因为电机的kv值不同 xff0c 出了乌龙 2
  • 步骤六: Jetson nano平台部署TensorRT加速Yolo4-Tiny网络

    在无人机飞行任务中需要识别特定的物体 所以神经网络的部署非常重要 而jetson自带的tensorrt技术能够很好的优化我们的网络 提升识别速度 步骤1 了解环境 非必要 确定TensorRT的python库所在的环境 已经其他的必须库所在
  • Android NDK 实现视音频播放器源码

    目录 xff1a CMake配置环境项目 xff0c gradle代码块 xff1a 项目流程图 xff1a ffmpeg解封装解码流程API概况 xff1a activity main xml 搭建C 43 43 上层 xff1a Jav
  • STL(标准模板库)

    概念 xff1a STL xff1a 标准模板库 xff0c 是C 43 43 标准库的重要组成部分 xff0c STL xff0c 英文全称 s tandard template library xff0c 中文可译为 标准模板库 或者
  • mobx的基础知识

    1 mobx的安装 xff1a yarn add mobx mobx react lite 这个针对于函数式组件的安装 2 mobx的类组件安装 xff1a yarn add mobx mobx react 这个是对类组件的安装 app 代

随机推荐