当前位置:网站首页>用D435i录制自己的数据集运行ORBslam2并构建稠密点云
用D435i录制自己的数据集运行ORBslam2并构建稠密点云
2022-04-23 04:14:00 【Tang Huanyi】
一、用sdk录制rosbag
二、播放rosbag并用rviz查看topic,记下rgb和depth流话题名

三、用如下脚本(python2而不是3)保存rgb和depth图片同时生成rgb.txt、depth.txt
可以把alias python='/usr/bin/python2.7’写进bashrc,用完后记得注释掉。
四、用该脚本associate.py生成associate.txt
import argparse
import sys
import os
import numpy
def read_file_list(filename):
""" Reads a trajectory from a text file. File format: The file format is "stamp d1 d2 d3 ...", where stamp denotes the time stamp (to be matched) and "d1 d2 d3.." is arbitary data (e.g., a 3D position and 3D orientation) associated to this timestamp. Input: filename -- File name Output: dict -- dictionary of (stamp,data) tuples """
file = open(filename)
data = file.read()
lines = data.replace(","," ").replace("\t"," ").split("\n")
list = [[v.strip() for v in line.split(" ") if v.strip()!=""] for line in lines if len(line)>0 and line[0]!="#"]
list = [(float(l[0]),l[1:]) for l in list if len(l)>1]
return dict(list)
def associate(first_list, second_list,offset,max_difference):
""" Associate two dictionaries of (stamp,data). As the time stamps never match exactly, we aim to find the closest match for every input tuple. Input: first_list -- first dictionary of (stamp,data) tuples second_list -- second dictionary of (stamp,data) tuples offset -- time offset between both dictionaries (e.g., to model the delay between the sensors) max_difference -- search radius for candidate generation Output: matches -- list of matched tuples ((stamp1,data1),(stamp2,data2)) """
first_keys = first_list.keys()
second_keys = second_list.keys()
potential_matches = [(abs(a - (b + offset)), a, b)
for a in first_keys
for b in second_keys
if abs(a - (b + offset)) < max_difference]
potential_matches.sort()
matches = []
for diff, a, b in potential_matches:
if a in first_keys and b in second_keys:
first_keys.remove(a)
second_keys.remove(b)
matches.append((a, b))
matches.sort()
return matches
if __name__ == '__main__':
# parse command line
parser = argparse.ArgumentParser(description=''' This script takes two data files with timestamps and associates them ''')
parser.add_argument('first_file', help='first text file (format: timestamp data)')
parser.add_argument('second_file', help='second text file (format: timestamp data)')
parser.add_argument('--first_only', help='only output associated lines from first file', action='store_true')
parser.add_argument('--offset', help='time offset added to the timestamps of the second file (default: 0.0)',default=0.0)
parser.add_argument('--max_difference', help='maximally allowed time difference for matching entries (default: 0.02)',default=0.02)
args = parser.parse_args()
first_list = read_file_list(args.first_file)
second_list = read_file_list(args.second_file)
matches = associate(first_list, second_list,float(args.offset),float(args.max_difference))
if args.first_only:
for a,b in matches:
print("%f %s"%(a," ".join(first_list[a])))
else:
for a,b in matches:
print("%f %s %f %s"%(a," ".join(first_list[a]),b-float(args.offset)," ".join(second_list[b])))
python2 associate.py depth.txt rgb.txt > associate.txt
五、测试
/Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/D435i.yaml ./dataset/ ./dataset/associate.txt
#附一份D435i.yaml
%YAML:1.0
#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
# Camera calibration and distortion parameters (OpenCV)
Camera.fx: 615.9417724609375
Camera.fy: 616.0935668945312
Camera.cx: 322.3533630371094
Camera.cy: 240.44674682617188
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: 30.797
# 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
版权声明
本文为[Tang Huanyi]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Hurt_Town/article/details/124358133
边栏推荐
- MySQL 2013 lost connection to MySQL server during query
- [AI vision · quick review of robot papers today, issue 30] Thu, 14 APR 2022
- 硬核拆芯片
- [latex] differences in the way scores are written
- Overview of knowledge map (II)
- TreeSet after class exercises
- Xshell、Xftp连接新创建的Unbutu系统虚拟机全流程
- 使用大华设备开发行AI人流量统计出现时间不正确的原因分析
- C语言 字符常量
- Mysql---数据读写分离、多实例
猜你喜欢

【BIM+GIS】ArcGIS Pro2.8如何打开Revit模型,BIM和GIS融合?

Hard core chip removal

Express中间件②(中间件的分类)

秒杀所有区间相关问题

創下國產手機在海外市場銷量最高紀錄的小米,重新關注國內市場

Matlab minimalist configuration of vscode configuration
![[AI vision · quick review of NLP natural language processing papers today, issue 31] Fri, 15 APR 2022](/img/40/72fdf9c89ed7d063cc368e6e052d0f.png)
[AI vision · quick review of NLP natural language processing papers today, issue 31] Fri, 15 APR 2022

The whole process of connecting the newly created unbutu system virtual machine with xshell and xftp

How Zotero quotes in word jump to references / hyperlink

Nature medicine reveals individual risk factors of coronary artery disease
随机推荐
【Echart】echart 入門
Express中间件②(中间件的分类)
QT program integration easyplayer RTSP streaming media player screen flicker what is the reason?
单片机串口数据处理(1)——串口中断发送数据
RuntimeError: output with shape [4, 1, 512, 512] doesn‘t match the broadcast shape[4, 4, 512, 512]
io.Platform.packageRoot; // ignore: deprecated_member_use
[AI vision · quick review of robot papers today, issue 29] Mon, 14 Feb 2022
Express middleware ① (use of Middleware)
Summary of knowledge map (3)
Retrieval question answering system baseline
Zotero6. Version 0 quicklook cannot be used / Chinese garbled code will not be displayed
【Pytorch基础】torch.split()用法
Express中间件①(中间件的使用)
IEEE Transactions on Systems, Man, and Cybernetics: Systems(TSMC)投稿须知
优麒麟 22.04 LTS 版本正式发布 | UKUI 3.1开启全新体验
[latex] differences in the way scores are written
STM32F4单片机ADC采样及ARM-DSP库的FFT
Common string processing functions in C language
Set classic topics
Shopping mall for transportation tools based on PHP