orbslam2稠密版建图

2023-05-16

一、获取代码

高博的工作是对基本 ORB SLAM2 的扩展,基本思想是为每个关键帧构造相应的点云,然后依据从 ORB SLAM2 中获取的关键帧位置信息将所有的点云拼接起来,形成一个全局点云地图。

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

二、配置

参考:https://www.jianshu.com/p/5e7b8358893f

三、运行官方数据集

3.1 普通模式运行

在使用数据之前,需要对 rgbd_dataset_freiburg1_xyz 中的 RGB 文件和 Depth 文件进行匹配。TUM 数据官网 提供了匹配的程序 associate.py,命令为:

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

在 ~/ORB_SLAM2_modified 文件夹下运行如下格式的命令:

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /home/darren/darren_file/rgbd_dataset_freiburg1_xyz /home/darren/darren_file/rgbd_dataset_freiburg1_xyz/association.txt 

稠密版图

生成的稠密点云只有灰度,修改步骤如下:
1)在Tracking.h中声明RGB矩阵

Frame mCurrentFrame;
cv::Mat mImRGB;    //new declared
cv::Mat mImGray;

2)在Tracking.cc中定义RGB矩阵

cv::Mat Tracking::GrabImageRGBD(const cv::Mat &imRGB,const cv::Mat &imD, const double &timestamp)
{
mImRGB = imRGB;        // new
mImGray = imRGB;
......

3)在Tracking.cc中定义RGB点云映射

mpPointCloudMapping->insertKeyFrame( pKF, this->mImGray, this->mImDepth );//change the mImGray to mImRGB as next row
mpPointCloudMapping->insertKeyFrame( pKF, this->mImRGB, this->mImDepth );// new

原文链接:https://blog.csdn.net/FRIGIDWINTER/article/details/119986760

3.2 ros模式下运行

四、运行自己的数据集

4.1 zed录制bag包

4.2 bag包制作成自己的数据集

rosbag record -O image.bag /rgb/image_raw /depth_to_rgb/image_raw

 4.2.1 查看zed相机订阅话题 

rosbag info image.bag

 4.2.2 使用python脚本得到深度图和rgb 图 

python get_pic.py

import numpy
import rosbag
import cv2
import os
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from cv_bridge import CvBridgeError
rgb_path = '/path/to/save/re-edit-bag/rgb/'# absolute path of extracted rgb images
depth_path = '/path/to/save/re-edit-bag/depth/'# absolute path of extracted depth images
bridge = CvBridge()
with rosbag.Bag('/path/to/image.bag', 'r') as bag:
	num = 1
    for topic,msg,t in bag.read_messages():
        
        if topic == "/depth_to_rgb/image_raw": 
            cv_image = bridge.imgmsg_to_cv2(msg, '32FC1')
            cv_image = cv_image * 255  # 不知为何转化的深度图显示不出来。将其乘以 255 才能看到显示效果.

            # timestr = "%.8f" %  msg.header.stamp.to_sec() # 时间戳命名
            # image_name = timestr + '.png'# an extension is necessary
            image_name = str(num) + '.png'# 编号命名
            cv2.imwrite(depth_path + image_name, cv_image)  
            # 实际应用可直接保存为 numpy array
            # np.save(depth_path + image_name, cv_image)  
            print(depth_path + image_name)
        if topic == "/rgb/image_raw": 
            cv_image = bridge.imgmsg_to_cv2(msg, "bgr8")
            timestr = "%.8f" %  msg.header.stamp.to_sec()
            image_name = str(num) + '.png'
            cv2.imwrite(rgb_path + image_name, cv_image)
       num += 1
————————————————
版权声明:本文为CSDN博主「zxxRobot」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zxxxiazai/article/details/111616502

 4.2.3 在上面脚步深度和rgb相应位置添加两行代码,得到depth.txt和rgb.txt

depth.txt和rgb.txt里面保存的是时间戳

            with open('depth.txt', 'a') as depth_time_file:
                depth_time_file.write(timestr+" depth/"+image_name+"\n")

            with open('rgb.txt', 'a') as rgb_time_file:
                rgb_time_file.write(timestr+" rgb/"+image_name+"\n")

 4.2.4 得到的depth.txt和rgb.txt通过脚本得到association.txt 

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

  4.2.5 下面是得到的基本信息

 rgb图

深度图 

association.txt文件 

 4.2.6 运行代码

 ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1_self.yaml /home/darren/darren_file/vedio_darren/around_ground /home/darren/darren_file/vedio_darren/around_ground/association.txt 

Tip: TUM1_self.yaml里面需要修改自己的相机参数

 4.2.7 得到稠密地图

 

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

orbslam2稠密版建图 的相关文章

  • 简单又好看的按钮,扁平化按钮。

    今天分享一下流行的扁平化按钮 完全不需要用到图片哦 效果图如下 xff1a 里面有2个按钮都是一样的模式 只要修改的色值就可以 下面跟我来更新你的UI吧 首先编写 button xml 代码如下 lt xml version 61 34 1
  • Android 获取运营商信息(完整版)-解决高通,MTK等双卡问题

    由于国内的运营商问题 xff0c 双卡手机获取IMSI号问题要根据厂商API 来实现 下面我们就来做一套完整的分析运营商获取IMSI号逻辑 1 xff0c 首先我们要判断手机的平台 1 1 xff0c 判断手机是否MTK平台 public
  • AstarPathfindingProject 中RVO碰撞体扩展

    原本库中只有矩形RVO碰撞体 xff0c 如果要添加自己的需要继承RVOObstacle抽象类 xff0c 重写里面的方法 例如下面的圆柱形碰撞 using UnityEngine if UNITY EDITOR using UnityEd
  • Android中抓取手机视频流数据。

    目前实时抓取手机视频数据有2种方法 xff0c 一种是通过camera的回调获取源数据 xff0c 这里获取的源数据是没有编码的数据 有的人发送yuv数据然后在那绘制图片 xff0c 也说视频聊天 xff0c 真是可笑 这种方式是可是实现视
  • Android 使用AudioRecord录音相关和音频文件的封装

    在Android中录音可以用MediaRecord录音 xff0c 操作比较简单 但是不够专业 xff0c 就是不能对音频进行处理 如果要进行音频的实时的处理或者音频的一些封装 就可以用AudioRecord来进行录音了 这里给出一段代码
  • Android 中使用MediaRecorder进行录像详解(视频录制)

    在这里给出自己的一个测试DEMO xff0c 里面注释很详细 简单的视频录制功能 package com video import java io IOException import android app Activity import
  • Android手机中获取手机号码和运营商信息

    代码如下 xff1a package com pei activity import android app Activity import android os Bundle import android view View import
  • C语言下划线开头的函数

    首先 xff0c C 43 43 里关于下划线的问题是源于C语言 xff0c 因为C 43 43 允许用extern C 来修饰代码以C语言语法方式编译 然后说C语言里的下划线 xff1a C语言确实允许以下划线开头的函数存在 xff0c
  • 校验和计算方法

    1 说明 xff1a 1 校验和覆盖的内容 xff1a IP校验和 xff1a IP首部 ICMP校验和 xff1a ICMP首部 43 ICMP数据 xff1b UDP TCP校验和 xff1a 首部 43 数据 43 12个字节伪首部
  • 布谷鸟算法浅谈与简单应用

    简介 布谷鸟算法是由剑桥大学Xin She Yang教授和S Deb于2009年提出的一种新兴的启发算法 xff0c 是一种通过模拟自然界当中布谷鸟 xff08 也就是杜鹃 xff0c 故该算法也称为杜鹃算法 xff09 在繁育后代的行为而
  • torchvision中inception v3的实现

    一 torchvision中inception v3的网络结构 论文中给的结构如下图所示 但是torchvision中的inception v3结构中并不是这么实现的 下面解释一下torchvision中的inception v3结构 xf
  • 实践 基于Arduino 的 平衡车

    完成样子 因为只是学习验证 xff0c 没用电烙铁 xff0c 只用了面包板来连接各个组件 xff0c 中间用扎带固定 xff08 不稳定 xff09 完成后能基本保持平衡 xff0c 但太大力去推容易倒 平衡原理 通过负反馈实现平衡 xf
  • CMake入门-04-自定义编译选项

    工作环境 系统 xff1a macOS Mojave 10 14 6CMake Version 3 15 0 rc4 Hello World 自定义编译选项 CMake 允许为项目增加编译选项 xff0c 从而可以根据用户的环境和需求选择最
  • Linux 驱动开发简单实例

    Xiuye XY于 2021 08 03 19 17 07 发布343 收藏 3 分类专栏 xff1a 笔记 C C 43 43 Linux 版权 编辑笔记同时被 3 个专栏收录正在上传 重新上传取消 128 篇文章0 订阅 订阅专栏 编辑
  • ros下编译安装package

    原文地址 配置Release目录 catkin config install修改CMakeList txt文件 修改节点中CMakeLists txt文件 假设此处我们的节点项目名称为 test node 即CMakeLists txt中p
  • 什么是解耦?

    什么是解耦 解耦就是用数学方法将两种运动分离开来处理问题 对项目划分为多个模块这种做法你有什么看法 xff1f 优势 劣势有哪些 xff1f 多模块化项目优势在于 xff1a 提高代码的重用率 xff0c 可维护性高 xff0c 架构灵活
  • HDFS-Tiering 数据分层存储

    1 背景 随着小米业务迅猛发展 xff0c 存储到 HDFS 集群的数据量不断增大 xff0c 存储成本也不断攀升 尤其是海外 HDFS 集群每 GB 数据的成本是国内集群的 10 倍左右 xff0c 如何优化海外集群的存储成本变得非常迫切
  • 米家插件平台的技术实践之路

    2016年小米正式发布米家品牌 xff0c 此后米家开始接入第三方的智能硬件产品 xff0c 小米的IoT生态也迎来了快速发展 截止到2020年Q3 xff0c 小米AIoT平台已连接的IoT设备 xff08 不包括智能手机及笔记本电脑 x
  • 拥抱开源 | Xiaomi Vela团队成果连连,喜讯不断

    Xiaomi Vela是基于开源实时操作系统NuttX打造的物联网操作系统 xff0c Vela可以在各种物联网硬件上提供统一的软件平台 xff0c 通过丰富的组件和标准化的软件框架 xff0c 打通碎片化的物联网应用场景 今年Xiaomi
  • 将开源进行到底!小米新一代Kaldi荣获2022数博会“领先科技成果”奖

    5月26日 xff0c 数博会开幕式当天揭晓了 2022中国国际大数据产业博览会数博发布之领先科技成果 奖 xff0c 小米公司 新一代Kaldi 项目 xff0c 凭借全自研的创新成果和突出的社会价值 xff0c 获得评委会一致认可 xf

随机推荐

  • 小米AI实验室4篇论文入选语音技术顶会INTERSPEECH 2022

    滴滴 重磅消息新鲜出炉 xff01 xff01 全球语音领域顶级会议 INTERSPEECH 2022公布了论文入选名单 xff0c 小米 AI 实验室4篇论文被接收 INTERSPEECH 是由国际语音通信协会ISCA组织的语音领域的顶级
  • 干货 | 足式机器人运动控制发展方向——轨迹优化

    运动控制技术的进步使得足式机器人的运动能力更强 xff0c 而近来轨迹优化作为主流学术研究方向 xff0c 能够为足式机器人运动控制的发展提供可能的指引 本期技术干货 xff0c 我们邀请到了小米工程师徐喆 xff0c 向我们介绍足式机器人
  • GPS定位

    链接 天地图 xff0c 免费的 xff0c API开放的地图定位系统 链接 RTK和GPS定位 链接 rtk 精确定位 简介 链接 GPS RTK PPK三种定位技术的原理及应用 双频定位 xff0c 双频信号协同工作 xff0c 提供亚
  • 清华软件论坛 | 推动移动传感的极限:AIoT时代的智能健康和数字家庭

    清华软件论坛 xff0c 是在清华大学软件学院成立20周年之际创立的 xff0c 旨在探索软件科学基础理论 创新软件前沿技术 思辩软件工程方法 促进学科交叉融合 xff0c 持续提升清华软件发展水平 xff0c 清华大学软件学院打造 清华软
  • 国家级表彰 | 小米人工智能实验室声学语音团队荣获“全国工人先锋号”荣誉称号...

    小米人工智能实验室声学语音团队代表王育军接受央视采访 4月27日 xff0c 小米集团技术委员会人工智能实验室声学语音团队荣获由中华全国总工会颁发的 全国工人先锋号 荣誉称号 颁奖典礼在人民大会堂举行 xff0c 小米声学语音技术总监王育军
  • Tech Talk | 还原照片不同亮度范围细节——RAW HDR技术

    拍照时 xff0c 你是否遇到过这些情况呢 xff1f 拍摄的成片暗区过暗 xff0c 高亮区域过曝 逆光拍摄中 xff0c 会出现 鬼影 暗部噪声偏大导致图像出现瑕疵 照片的高光和暗区细节得总是不到完美呈现 xff0c 这是所有拍摄设备都
  • 技术人文 | 你的加入,会为更多人争取避险时间

    如图文未加载 xff0c 请刷新后重试 今天是第15个全国防灾减灾日 xff0c 不仅要提高意识预防于未然 xff0c 其实你也可以贡献一份力量 2019年 xff0c 小米与成都高新减灾所共同探索 合作研发 xff0c 发布了全球首个操作
  • 一篇文章搞懂HDFS管理权限

    小米的HDFS承载了公司内多个部门几十条业务线的几十PB数据 xff0c 这些数据有些是安全级别非常高的用户隐私数据 xff0c 也有被广泛被多个业务线使用的基础数据 xff0c 不同的业务之间有着复杂的数据依赖 因此 xff0c 如何管理
  • 2018年度小米运维盘点

    元旦假期一眨眼就没了 xff0c 2018年也嗖的一下就过去了 xff0c 这一年里发生的大事件你都还记得吗 xff1f 下面就让小编带你回顾一下过去这一年里小米运维的知识点吧 xff01 2018年我们推送了很多被读者认可的文章 xff0
  • 网络工程师眼中的自动化运维

    本文从一名网工从业者的角度出发 xff0c 探讨了在企业网运维过程中 xff0c 网络工程师可以用什么样的工具让网络更加透明高效 上篇文章回顾 xff1a Apache Ranger Hadoop ACL控制工具 引言 网络就像wifi x
  • 浅谈动态追踪技术

    本文主要介绍了动态追踪技术 xff0c 并举例说明动态追踪技术的应用 身为一个SRE xff0c 工作中经常会遇到各种奇奇怪怪的服务异常问题 这些问题在staging xff08 测试环境 xff09 没有发现 xff0c 但放到真实的生产
  • 深入浅出计算机视觉(一)

    本文通过案例引入计算机视觉基本知识 xff0c 并浅析其基本任务中的图像分类 图像分割进展及应用 历史文章回顾 xff1a HBase Replication详解 Foreword前言 先上几个计算机视觉应用的案例 xff1a 6月6日至8
  • orbslam2 安装与运行

    目录 一 更新apt库 xff0c 更新软件列表 二 安装git xff0c 用于从Github上克隆项目到本地 三 下载orbslam2源码 四 安装C 43 43 11编译器 cmake 五 安装Pangolin 六 安装Eigen3
  • strstr函数的用法

    包含文件 xff1a string h 函数名 strstr 函数原型 xff1a extern char strstr char str1 char str2 功能 xff1a 从字符串str1中查找是否有字符串str2 xff0c 如果
  • 冒泡排序、插入排序,选择排序区别

    在代码的写法上表现为 xff1a 冒泡排序 xff1a 在某一个元素的冒泡过程中 xff0c 当前元素与其他元素比较后可能需要进行互换操作 xff0c 而这个操作可能执行多次 选择排序 xff1a 当前元素只交换一次 xff08 或0次 x
  • Prometheus 环境搭建

    1 ubuntu和ros安装 lt 安装ubuntu对应的ros版本 gt 2 prometheus px4配置 prometheus px4是Prometheus项目配套使用的PX4固件 xff0c Prometheus项目的仿真模块依赖
  • E: 无法定位软件包 的解决办法

    one solution 1 sudo apt get update 更新目录 2 sudo apt get upgrade xff08 更新文件 xff09 3 sudo apt get dist upgrade xff08 更新依赖关系
  • gnome-terminal用法解析

    gnome terminal命令用于打开一个新的终端 xff0c 直接在命令行 gnome terminal 就可以打开一个新的终端 xff0c 有一些常用参数 xff1a 打开后自动最大化 gnome terminal maximize打
  • 仿真1 - takeoff_land

    实验步骤 xff1a xff08 1 xff09 将遥控器开机并通过USB接口接入电脑 xff08 2 xff09 输入以下命令启动起飞降落仿真demo cd xff5e Prometheus Scripts simulation tuto
  • orbslam2稠密版建图

    一 获取代码 高博的工作是对基本 ORB SLAM2 的扩展 xff0c 基本思想是为每个关键帧构造相应的点云 xff0c 然后依据从 ORB SLAM2 中获取的关键帧位置信息将所有的点云拼接起来 xff0c 形成一个全局点云地图 git