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.mzph.cn/news/794016.shtml

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

相关文章

Spring 详细总结

文章目录 第一章 IOC容器第一节 Spring简介1、一家公司2、Spring旗下的众多项目3、Spring Framework①Spring Framework优良特性②Spring Framework五大功能模块 第二节 IOC容器概念1、普通容器①生活中的普通容器②程序中的普通容器 2、复杂容器①生活中的复杂容器②程序中的复…

单细胞RNA测序(scRNA-seq)SRA数据下载及fastq-dumq数据拆分

单细胞RNA测序(scRNA-seq)入门可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. NCBI查询scRNA-seq SRA数据 NCBI地址: https…

npm常用命令技巧

NPM (Node Package Manager) 是 JavaScript 的包管理工具,广泛用于管理项目中的依赖。无论是前端项目还是Node.js后端项目,NPM 都扮演着重要的角色。本文将介绍 NPM 中常用的几个命令,并提供相应的代码示例。 1. 初始化项目:npm …

[RV1106-LINUX-IPC] 关于 rndis 功能无法使用的解决办法

问题描述 按照开发文档文档,修改对应的BoardConfig.mk,增加 export RK_ENABLE_RNDISy 使用编译命令: ./build.sh sysdrv ./build.sh firmware 烧录固件后,开机使用命令: rndis.sh,出现 rndis 无法识别的情…

腾讯云(CVM)托管进行权限维持

前言 刚好看到一个师傅分享了一个阿里云ECS实战攻防,然后想到了同样利用腾讯云CVM的托管亦可实现在实战攻防中的权限维持。 简介 腾讯云自动化助手(TencentCloud Automation Tools,TAT)是一个原生运维部署工具,它可…

c语言:模拟字符串拷贝功能(strcpy),面试题

面试题&#xff1a;优化中的优化&#xff08;10分满分&#xff09; 字符串拷贝:是将一个字符串的内容复制到另一个字符串中的操作。 运用函数模拟字符串拷贝&#xff1a;&#xff08;5分&#xff09; 模拟字符串拷贝 #include <stdio.h> void my_strcpy(char* dest, c…

SD-WAN组网面临的安全挑战?如何提供有效的安全措施

SD-WAN&#xff08;软件定义广域网&#xff09;技术的广泛应用&#xff0c;企业面临着越来越多的网络安全挑战。尽管SD-WAN带来了灵活性和效率的提升&#xff0c;但其开放性和基于云的特性也带来了一系列安全威胁。本文将探讨SD-WAN组网面临的安全挑战&#xff0c;并提供一些有…

Mybatis--TypeHandler使用手册

TypeHandler使用手册 场景&#xff1a;想保存user时 teacher自动转String &#xff0c;不想每次保存都要手动去转String&#xff1b;从DB查询出来时&#xff0c;也要自动帮我们转换成Java对象 Teacher Data public class User {private Integer id;private String name;priva…

Docker 运行 io_uring 程序崩溃或出现错误时应如何解决?

这常常出现于在 Docker&#xff08;sandbox 沙盒容器&#xff09;之中运行 io_uring 服务器模式下&#xff0c;解决该问题需要打开容器 “特权模式”。 即&#xff1b; privileged: true 启用特权容器模式&#xff1a; 可以通过在 Docker 容器运行时加上 --privileged 标志来启…

Python 中的 *args 和 **kwargs

在阅读 Python 代码的过程中&#xff0c;不时会看到 *args 和 **kwargs &#xff0c;它们究竟表示什么&#xff1f;又该如何使用呢&#xff1f; 首先要明确&#xff0c;这里的 * 并不是乘法运算符也不是序列重复操作符&#xff0c;**也不是指数运算符也不是幂运算符。 * 出现…

JS继承与原型、原型链

在 JavaScript 中&#xff0c;继承是实现代码复用和构建对象关系的重要概念。本文将讨论原型链继承、构造函数继承以及组合继承等几种常见的继承方式&#xff0c;并提供相应的示例代码&#xff0c;并分析它们的特点、优缺点以及适用场景。 在开始讲解 JavaScript 的继承方式之…

基于javassmJSP的家用电器销售网站

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

day31 算法 贪心算法1

455 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有…

软件质量保证计划书

1 概述 2 质量目标 3 项目基本情况 4 资源 4.1 人员 4.1.1 组织结构 4.1.2 职责 4.2 工具及设施 5 质量保证的主要工作 6 质量保证工作量估算 7 质量保证工作提交的产物 8 变更管理 9 评价标准 10 形成的记录 软件全资料获取进主页或者本文末个人名片直接获取。

Spring/SpringBoot/SpringCloud Mybatis 执行流程

在后续分析Mybatis 流程中代码的可能会用到IDEA debug 技巧&#xff1a; 条件断点 代码断点&#xff0c;右键 勾选弹窗 Condition &#xff1a; 写入表达式 回到上一步&#xff1a; Java动态代理实现 InvocationHandler接口&#xff1a; package com.lvyuanj.core.test;…

Unity:2D SpriteShape

1.1 简介 Sprite Shape 可以很灵活的更改sprite的轮廓。比如&#xff1a; 它由两部分组成&#xff1a;Sprite Shape Profile、Sprite Shape Controller&#xff0c;需要导入2D Sprite Shape Package. 1.1.1 Sprite导入要求 Texture Type - ‘Sprite (2D and UI)’.Sprite Mo…

备战蓝桥杯---刷二分与前缀和题

刷点题~ 1.二分多路归并算法 对于每一个技能&#xff0c;我们把它看成一个等差数列&#xff0c;我们把所有可能都放到一个集合里&#xff0c;排个序&#xff0c;取前m个大即可&#xff0c;现在考虑优化&#xff0c;假如m不是很大&#xff0c;我们直接用优先队列即可&#xff0…

python写文件怎么读出来

python中对文件的操作大概分为三步&#xff1a;打开文件、操作文件&#xff08;读、写、追加写入&#xff09;、关闭文件。 1、无论对文件做哪种操作&#xff0c;操作前首先要保证文件被打开了&#xff0c;即需要一个打开的操作。 例&#xff1a;open(XXX.txt) 打开文件的同…

python函数练习2

找出10000以内能被5或6整除&#xff0c;但不能被两者同时整除的数&#xff08;函数&#xff09; def func():for i in range(1,50):if (i % 5 0 or i % 6 0 ):if i % 5 0 and i % 6 0:continue #利用continue跳过能被5和6整除的数print(i) func()写一个方法&#xff0c;计算…

【DevOps工具篇】Keycloak安装配置及脚本化

目录 脚本化要求步骤步骤1:安装并启动Keycloak服务器 [](#step-1-installing-and-starting-the-keycloak-server)分发文件进行安装Docker映像进行安装在OpenShift内的Docker映像中安装步骤2:连接管理CLI [](#step-2-connecting-the-admin-cli)步骤3:配置 [](#step-3-configu…