Lafida多目数据集实测

Lafida 数据集

paper:J. Imaging | Free Full-Text | LaFiDa—A Laserscanner Multi-Fisheye Camera Dataset
官网数据:https://www.ipf.kit.edu/english/projekt_cv_szenen.php
官网:KIT-IPF-Software and Datasets - LaFiDa
标定数据下载:http://www2.ipf.kit.edu/~pcv2016/downloads/calibration.zip

0 简介

该数据集由一个头戴式多鱼眼相机系统一个移动激光扫描仪组合而成,还从采样率为 360
Hz 的动作捕捉系统中获得了精确的六自由度(6 DoF)真值姿态。


rigid_body系即动作捕捉系统坐标系,三个白色的是被动球形反向反射标记的校准棒,用于动作捕捉系统

在室内和室外环境中记录了多个序列,包括不同的运动特征、照明条件和场景动态。

所提供的序列由三台硬件触发完全同步的鱼眼相机和同一平台上的移动激光扫描仪拍摄的图像组成。总共提供了六条轨迹。每个轨迹还包括所有传感器的内在和外在校准参数及相关测量值。

此外,我们还将最常用的外置激光扫描仪工具箱推广到相机校准,以便与任意中央相机(如全向或鱼眼投影)配合使用。

基准数据集以知识共享署名协议(CC-BY 4.0)在线发布,其中包含原始传感器数据以及时间戳、校准和评估脚本等规格。

所提供的数据集可用于多鱼眼相机和/或激光扫描仪同步定位与绘图(SLAM)。

对比其他数据集,我们有多个视角的硬同步触发的相机数据:

1 采集设备

设备参数:雷达/相机/动作捕捉

1.1 激光扫描仪

Hokuyo(日本大阪)公司的 UTM-30LX-EW 激光扫描仪,激光脉冲波长为 λ = 905nm,角度分辨率为 0. 25 ◦,视场(FoV)为 270 ◦。距离精度在0.1 米至 10 米之间为 ±30 毫米。指定的脉冲重复频率为 43 kHz,即每秒捕捉 40 条扫描线(40 Hz)。Laserscaner提供的激光扫描仪数据包括每个3D点的扫描角度、距离和强度。为了保持测量数量的恒定,只使用第一次激光返回和第一次强度。因此,每次激光扫描仪旋转的最终测量数量是1080个。

1.2 多相机系统

多鱼眼相机系统(MCS)由多传感器和集成的FPGA组成,硬件触发的图像采集和图像预处理由该平台处理,因此所有图像都是像素同步采集的。

三个分辨率为 754×480 像素的 CMOS相机传感器连接到以 25 Hz 采样率运行的平台上。

Lensagon 鱼眼镜头(BF2M12520),焦距为 1.25 毫米,视场角约为185 ◦。

1.3 动作捕捉系统rigid_body

为了获取多传感器头盔系统运动的精确 6 DoF 地面实况,我们使用了一套运动捕捉系统
(OptiTrack Prime 17W),该系统配有八个硬件触发的高速摄像头。

该系统需要事先进行校准,方法是在摄像机观察到的范围内挥动带有三个被动球形反向反射标记的校准棒。由于校准棒的精确度量尺寸是已知的,所有运动捕捉摄像机的姿势都可以通过度量恢复。运动捕捉系统校准后,可通过三角测量法以 360 Hz 和亚毫米精度跟踪标记的 3 DoF 位置。要确定头盔系统的 6 DoF 运动,至少需要三个标记来创建一个独特的坐标框架。

多个标记的组合称为rigid body,我们系统的刚体定义如图 1d 所示。

2 标定


标定数据下载:http://www2.ipf.kit.edu/~pcv2016/downloads/calibration.zip 

Calibration/
├── Extrinsic_Laserscanner_to_MCS_Calibration 激光扫描仪到MCS中心外参
│   ├── cam2_to_scanner.mat
│   └── cam2_to_scanner.txt
├── Extrinsic_MCS_Calibration 各个相机到MCS中心外参
│   ├── MCS_calibration_cayley.txt
│   ├── MCS_calibration.mat
│   └── MCS_calibration.txt
├── Extrinsic_Rigid_Body_to_MCS_Calibration MCS到RigidBody中心外参
│   ├── MCS_to_RigidBody.mat
│   └── MCS_to_RigidBody.txt
└── Intrinsic_Camera_Calibrations 各个相机的内参
    ├── calib_results_back.txt
    ├── calib_results_left_cam2.txt
    ├── calib_results_right.txt
    ├── Omni_Calib_Results_back.mat
    ├── Omni_Calib_Results_left.mat
    └── Omni_Calib_Results_right.mat

2.1 内参标定(Intrinsic_Camera_Calibrations)

使用Ocam-Toolbox计算每个摄像头的内参,再配合一些改进。具体过程和改进的代码:GitHub - urbste/ImprovedOcamCalib: This is an add-on to the OCamCalib toolbox by Scaramuzza et al.​​​​​​P

2.2 相机外参(Extrinsic_MCS_Calibration)

三个相机到MCS中心(其位置由 OptiTrack 系统给出)的变换矩阵,MCS坐标系和cam2(left camera)方向一致,位置不一致。

2.3 激光外参(Extrinsic_Laserscanner_to_MCS_Calibration)

给出的是cam2到激光的矩阵变换。

2.4 rigid body外参(Extrinsic_Rigid_Body_to_MCS_Calibration)

给出的是MCS到rigid的外参,rigid坐标系的原点设置在第一球形刚体标记上。

3 数据

3.1 场景


outdoor 和 indoor

http://www2.ipf.kit.edu/~pcv2016/downloads/indoor_dynamic.zip 采集设备在房间里绕圈移动,人们在周围漫步。
http://www2.ipf.kit.edu/~pcv2016/downloads/indoor_static.zip 在房间里没有人四处走动静态场景,采集设备在房间内绕圈移动,然后上下移动。
http://www2.ipf.kit.edu/~pcv2016/downloads/outdoor_rotation.zip 中庭被外墙包围,天气多云,静态场景,采集设备绕其垂直轴旋转。http://www2.ipf.kit.edu/~pcv2016/downloads/outdoor_static.zip 中庭被外墙包围,天气多云,静态场景,录制两段数据,操作者从后到前、从左到右。http://www2.ipf.kit.edu/~pcv2016/downloads/outdoor_static2.zip 中庭被外墙包围,天气多云,静态场景,随机游走。
http://www2.ipf.kit.edu/~pcv2016/downloads/outdoor_large_loop.zip 中庭被外墙包围,天气多云,采集设备正在移出跟踪系统的范围,并以闭环方式围绕整个中庭移动,包含一个闭环。移动出跟踪系统的范围没有真值。

3.2 文件

内部时间戳:通用时间戳,可与其他传感器同步。
传感器时间戳:传感器的时间戳,不可用于同步。

  • LS_Dist.txt

包含激光扫描仪和被照射表面之间的距离。
文件头部:内部时间戳* | 传感器时间戳** | 距离
距离以毫米为单位。

  • LS_Dir.txt

包含点的方向。
文件头部:内部时间戳* | 传感器时间戳** | 方向角度
角度以度为单位。

  • LS_Intensity.txt

包含每个点的强度。
文件头部:内部时间戳* | 传感器时间戳** | 强度

  • Lspoint.txt  (数据包中并未找到)

包含激光扫描仪坐标系中的点坐标。
文件头部:时间戳* | Lspoint
坐标以米为单位。

  • Quaternion.txt (数据包中并未找到)

包含传感器位置的四元数表示。
文件头部:内部时间戳* | (传感器位置)| (四元数:X Y Z W)
坐标以米为单位。

  • Tracker.txt (数据包中并未找到)

包含刚体标记2的位置。
文件头部:内部时间戳* | NatNet时间戳 | (传感器位置)| (传感器坐标系X轴)| (传感器坐标系Y轴)| (传感器坐标系Z轴)
坐标以米为单位。

  • 图片

三个鱼眼相机数据:/work/data/MultiCol/outdoor_static2
    ├── imgs
    │   ├── cam0
    │   ├── cam1
    │   └── cam2

  •  rigid_body.txt

动作捕捉系统给出的结果,可做真值。
文件头部:内部时间戳* | (传感器坐标系X轴)| (传感器坐标系Y轴)| (传感器坐标系Z轴)|(四元数:X Y Z W)
坐标以米为单位。
PS:轨迹中有些动态捕捉很差,建议剔除
indoor_dynamic :
2228163,2234005~2234059

 

实际测试

1 MultiCol

cd src/MultiCol-SLAM && ./Examples/Lafida/multi_col_slam_lafida ./Examples/small_orb_omni_voc_9_6.yml ./Examples/Lafida/Slam_Settings_indoor2.yaml ./Examples/Lafida/calibration /work/data/MultiCol/outdoor_static2

第一个是字典文件的路径。

第二个是slam设置文件的路径。代码提供的四个配置文件差不过,需要修改traj.StartFrame和traj.EndFrame,其他的暂时不用动。

第三个是校准文件的目录,自动读取InteriorOrientationFisheyeXXX.yaml(内参)和MultiCamSys_Calibration.yaml(到MCS系统的外参),ps:和calibration压缩包提供的数据不太一样,我是用代码提供的内外参测试的。

第四个是图像的目录,解压对应的数据压缩包即可。

最后轨迹保留在MultiCol-SLAM/MKFTrajectory.txt中。

  • ​outdoor_static2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/298207.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32_串口重定向

这里写目录标题 前言1、需要勾选Use Micro LIB2、不需要勾选Use Micro LIB 前言 最近在学习LVGL时遇到了一个坑,我原来使用的重定向方法必须要勾选Use Micro LIB,否则程序会卡死,但是在移植LVGL时又发现不能勾选Use Micro LIB,否则…

第一届长城杯初赛部分wp(个人解题思路)

目录 Black web babyrsa2 APISIX-FLOW cloacked 本人不是很擅长ctf,这只是我自己做出的西部赛区部分题的思路,仅供参考 Black web 访问http://192.168.16.45:8000/uploads/1711779736.php 蚁剑连接 访问/var/www/html/u_c4nt_f1nd_flag.php babyr…

springboot项目引入swagger

1.引入依赖 创建项目后&#xff0c;在 pom.xml 文件中引入 Swagger3 的相关依赖。回忆一下&#xff0c;我们集成 Swagger2 时&#xff0c;引入的依赖如下&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2&…

Minikube本地搭建单节点Kubernetes集群

1、什么是 Minikube Minikube 是一个开源工具&#xff0c;旨在为开发者提供一种便捷的方式在本地环境中搭建单节点的 Kubernetes 集群。它主要用于开发、测试和学习 Kubernetes 应用程序&#xff0c;无需依赖大型的硬件资源或复杂的多节点集群配置。minikube 使用轻量级虚拟化技…

Mac系统Unity团结引擎打包OpenHomeny项目配置

1、团结引擎下载&#xff1a;直接百度下载即可 2、mac版本的DevEco4.0编辑器下载&#xff1a; widthdevice-width,initial-scale1.0https://docs.openharmony.cn/pages/v4.0/zh-cn/release-notes/OpenHarmony-v4.0-release.md/#%E9%85%8D%E5%A5%97%E5%85%B3%E7%B3%BB3、打开D…

LINUX笔记温习

目录 DAY1 DAY2 day3&#xff1a; day4 day5 day6 day7 day8 day9 day10 day11 day12 day13 day14 day15 20day DAY1 1、多层级文件夹创建要带-p&#xff1b; 2、创建多文件&#xff0c;要先到该目录下才能创建(第一个目录必须存在才能有效建立)&#xff1b; D…

C++ 简单模拟实现 STL 中的 set、map 与 multiset、multimap

目录 一&#xff0c;RB_tree 的实现 1&#xff0c;RB_tree 的节点与数据结构 2&#xff0c;RB_tree 的迭代器 3&#xff0c;RB_tree 的构造 4&#xff0c;RB_tree 的元素操作 5&#xff0c;完整代码 二&#xff0c;set 与 multiset 的实现 1&#xff0c;set 2&#x…

Qtxlsx第三方库的安装和使用

本文仅作为一个记录&#xff0c;安装QtXlsx方便操作excel&#xff0c;主要参考了这篇博文&#xff1a;https://blog.csdn.net/u014779536/article/details/111769792 1&#xff0c;下载安装Perl脚本Strawberry Perl for Windows&#xff0c;默认安装strawberry-perl-5.30.0.1-…

Flask-RESTful 分析

Flask-RESTful 是一个 Flask 扩展&#xff0c;它为构建 RESTful API 提供了方便的工具和资源。它简化了创建 RESTful 服务的过程&#xff0c;允许开发者专注于业务逻辑而不是 HTTP 协议的细节。 资源&#xff08;Resources&#xff09;&#xff1a; Resource 类&#xff1a;是…

[WinForm开源]原神混池模拟器-蒙德篇:软件的基本介绍、使用方法、常见问题解决与代码开源

首先先和各位旅行者道个歉&#xff0c;混池都过去这么久了才把软件开发好并发布出来 >_< 创作目的&#xff1a;为给各位旅行者&#xff08;当然包括我自己&#xff09;估测混池抽取的出货率以及让各位旅行者可以过手瘾&#xff0c;故开发了此项目作为参考。 创作说明&am…

java 常见API(Objects)

定义 API就是别人定义好的工具类和工具包目的&#xff1a;避免重复造轮子&#xff0c;提升开发效率&#xff0c;更加专注于实现业务逻辑 Object 类 object类是所有类的祖宗类&#xff0c;所有的类型都是可以使用Object的方法的 最常见的三个方法&#xff1a; toString:print就会…

【项目实战】——商品管理的制作完整代码

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

3. python练习题3-自由落体

3. python练习题3-自由落体 【目录】 文章目录 3. python练习题3-自由落体1. 目标任务2. 解题思路3. 知识回顾-%占位符格式化处理3.1 概述3.2 占位符的多种用法3.3 格式化操作符辅助指令3.4 将整数和浮点数格式化为字符串 4. 解题思路4.1 球第1次下落4.2 球第2次下落 5. 最终代…

C++(语法以及易错点2)

1.内联函数 1.1 概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 ​int ADD(int a,int b) {return ab; }​ 1.2 特性 1. inline是一种以空间换时间…

【Python基础教程】5. 数

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;python基础教程 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、…

Taro + vue3 小程序封装标题组件

分为没有跳转页面的title组件和 有跳转页面的title组件 我们可以把这个封装成一个组件 直接上代码 <template><div class"fixed-title-container"><div class"box"><div class"icon" v-if"isShow" click"…

mysql故障排查

MySQL是目前企业最常见的数据库之一日常维护管理的过程中&#xff0c;会遇到很多故障汇总了常见的故障&#xff0c;MySQL默认配置无法满足高性能要求 一 MySQL逻辑架构图 客户端和连接服务核心服务功能存储擎层数据存储层 二 MySQL单实例常见故障 故障1 ERROR 2002 (HY000)…

1.JavaEE进阶篇 - 为什么要学习SpringBoot呢?

文章目录 1.为什么要学框架&#xff1f;2.框架的优点展示(SpringBoot VS Servlet)2.1 Servlet 项⽬开发2.1.1 创建项⽬2.1.2 添加引⽤2.1.3 添加业务代码2.1.4 运⾏项⽬(配置tomcat)2.1.5 Maven配置2.1.5.1修改本地Maven仓库地址2.1.5.2 配置settings.xml文件2.1.5.3项目 本地仓…

C++:函数重载和引用

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习C&#xff1a;函数重载和引用&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 函数重载1.函数重载的概念为什么C支持函数重载 引用引用的概念引…

计算机网络-HTTP相关知识-基础

HTTP基础 基本概念&#xff1a;HTTP是一种计算机之间交流通信的规范&#xff0c;它允许数据在两点之间传输&#xff0c;这个过程可以包括中转或接力。HTTP不仅仅包括文本&#xff0c;还可以包括图片、音频等超文本。状态码&#xff1a;HTTP状态码分为五类&#xff1a; 2xx&…