使用自制离线数据跑通ElasticFusion
使用自制离线数据跑通ElasticFusion
实验环境及设备
实验环境:
- Ubuntu22.04
- RTX3060
实验设备:
- 小米13(Android)
- Realsense D455
一句话总结就是,使用我的手机连接realsense去室外录制相关离线数据(.bag格式),然后转换成ElasticiFusion的.klg格式进行三维重建。

过程中还是遇到了不少坑的,比如深度图的尺度以及编码问题,导致一开始的重建总是不顺利。
代码
相关的代码我放在了这个仓库里:https://github.com/CuriosityWang/bag2klg
目录组织:

Env
编译png_to_klg
这里的代码主要参考了https://github.com/HTLife/png_to_klg
- CMake
- Boost
- zlib
- libjpeg
- OpenCV
在编译之前要修改 main.cpp 下第45行的 depth_scale 为1000,realsense默认是1000

build
cd png_to_klg
mkdir build
cd build
cmake ..
make
ros相关库
建议使用虚拟环境
numpy
pip install numpy
rosbag
pip install --extra-index-url https://rospypi.github.io/simple/ rosbag
pip install roslz4 --extra-index-url https://rospypi.github.io/simple/
cv_bridge
下载源码https://codeload.github.com/ros-perception/vision_opencv/zip/refs/heads/noetic
cd至cv_bridge文件夹
然后命令行安装
python setup.py install
sensor_image and geometry_msgs
pip install sensor_msgs --extra-index-url https://rospypi.github.io/simple/
pip install geometry_msgs --extra-index-url https://rospypi.github.io/simple/
rospy
pip install -i https://pypi.douban.com/simple rospy
cv_bridge.boost
在这里下载 https://github.com/rospypi/simple/raw/any/cv-bridge/cv_bridge-1.13.0.post0-py2.py3-none-any.whl
pip install cv_bridge-1.13.0.post0-py2.py3-none-any.whl
Usage
- run read_bag.py
python read_bad.py -n YourBagFile -d YourDepthTopic -r YourRGBTopic
- 根据提示修改 png2klg.sh相关参数
cd png_to_klg
# set the path for the depth.txt and rgb.txt. ** feed the depth file first and then rgb file **
python associate.py ../bag_data/600/depth.txt ../bag_data/600/rgb.txt > associations.txt
# to copy the associations.txt to your your_bag_data's path
cp associations.txt ../bag_data/600/associations.txt
cd build
# -w is the extracted rgb and depth images's path -o is the output
./pngtoklg -w ../../bag_data/600 -o ../../bag_data/600/600.klg -t
- run png2klg.sh
sh png2klg.sh
最后的目录应该是这样:

- 在编译好的ElasticFusion下运行
./ElasticFusion -l 600.klg
Refer
https://github.com/HTLife/png_to_klg
使用自制离线数据跑通ElasticFusion的更多相关文章
- CocoStuff—基于Deeplab训练数据的标定工具【二、用已提供的标注数据跑通项目】
一.说明 本文为系列博客第二篇,主要讲述笔者在使用该团队提供已经标注好的COCO数据集进行训练的过程. 由于在windows中编译Caffe和Deeplab特别的麻烦,笔者并没有去探索,后续可能会去尝 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(21)-权限管理系统-跑通整个系统
系列目录 这一节我们来跑通整个系统,验证的流程,通过AOP切入方式,在访问方法之前,执行一个验证机制来判断是否有操作权限(如:增删改等) 原理:通过MVC自带筛选器,在筛选器分解路由的Action和c ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(21)-权限管理系统-跑通整个系统
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(21)-权限管理系统-跑通整个系统 这一节我们来跑通整个系统,验证的流程,通过AOP切入方式,在访问方法之 ...
- ubuntu12.04+fuerte 下跑通lsd-slam——使用usb摄像头
上一篇介绍了如何使用数据集跑lsd-slam,这篇介绍如何用一个普通的usb摄像头跑lsd-slam,默认ubuntu12.04,fuerte已经安装好,workspace也已设置,如果没有,请参考上 ...
- ubuntu12.04+fuerte 下跑通lsd-slam——数据集
lsd-slam(下载链接:https://github.com/tum-vision/lsd_slam)提供了两种方法,一种是用数据集(下载地址http://vision.in.tum.de/lsd ...
- JVM知识在离线数据中的运用
又是飞花的季节了.多愁善感的林妹妹看到柳絮说:“嫁与东风春不管,凭尔去,忍淹留.”宝姐姐看了却来一句:“好风凭借力送我上青云”. 特别羡慕情商高的人,经常在想他们是怎么做到的.从来看不出他们不喜欢谁, ...
- 师傅领进门之6步教你跑通一个AI程序!
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 源码下载地址请点击原文查看. 初学机器学习,写篇文章mark一下,希望能为将入坑者解点惑.本文介绍一些机 ...
- Truffle3.0集成NodeJS并完全跑通(附详细实例,可能的错误)
Truffle3.0集成NodeJS并完全跑通(附详细实例,可能的错误) Truffle3.0集成NodeJS并完全跑通(附详细实例,可能的错误) 升级到Truffle3.0 如果之前安装的是Truf ...
- 终于跑通分布式事务框架tcc-transaction的示例项目
1.背景 前段时间在看项目代码的时候,发现有些接口的流程比较长,在各个服务里面都有通过数据库事务保证数据的一致性,但是在上游的controller层并没有对一致性做保证. 网上查了下,还没找到基于Go ...
- 使用Typescript重构axios(二)——项目起手,跑通流程
0.系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三)- ...
随机推荐
- 20. C++快速入门--并发基础
参考:<Professional c++>,<并发编程实战> 1 基本概念 1.1 竞争 原子性 "原子"(atomic)操作是指一种不可分割的操作, 即在 ...
- 重拾 SSH:从基础到安全加固
安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,属于应用层协议.OpenSSH 是最流行的 SSH 实现,它是大量操作系统的默认组件 OpenSSH 套 ...
- day05-面向对象编程:基础语法
Java面向对象:类的基础语法 [ 任务列表 ] 1.面向对象快速入门 2.什么是面向对象 3.类的基础语法--构造器 4.类的基础语法--this关键字 5.类的基础语法--封装 6.类的基础语法- ...
- Nodify学习 伍:添加移除连接控制器,设置节点初始位置
前置 移除连接 要删除连接,只需监听来自连接器本身或编辑器的断开连接事件,并删除具有连接器作为源或目标的连接.为了简单起见,我们将为 NodifyEditor 实现 DisconnectConnect ...
- [业界方案] ClickHouse业界解决方案学习笔记
[业界方案] ClickHouse业界解决方案学习笔记 目录 [业界方案] ClickHouse业界解决方案学习笔记 0x00 摘要 0x01 简介 0x02 OLAP场景的特点 0x03 选型原因 ...
- nacos(五): 读取nacos配置并实现动态刷新
接上回<nacos(四): 创建第一个消费者Conumer(单体)>,这一篇将介绍如何读取nacos中的配置,并实现动态刷新. 首先,需要先引入spring-cloud-starter-a ...
- Linux - 禁ping & 开放访问端口
适用于Linux操作系统 禁ping 1.编辑 /etc/sysctl.conf 文件,文件末尾增加如下内容后,保存退出. net.ipv4.icmp_echo_ignore_all = 1 2.在命 ...
- Scala高阶函数 1
package com.wyh.day01 /** * * 高阶函数 */ object ScalaFun3 { def main(args: Array[String]): Unit = { //定 ...
- 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程序,新手也能快速上手!
大家好,我是狂师. 在当今数字化时代,智能客服已成为提升用户体验.提高运营效率的关键工具. 今天,我们将为大家带来一个超级简单的教程,教你如何在短短3分钟内,利用腾讯微搭平台,将满血 DeepSeek ...
- Vigenere密码无密钥求解
0.前言 最近摸了很长时间的鱼,然后最近突然想搞一个Vigenere密码的自动求解,花了不到一天来实现了一下这个东西,不过受限于自己的水平,没有搞的太难.当然,代码部分不是全部都是从 0 开始的,关于 ...