Skip to main content

相机到 IMU 校准和同步工具包

项目描述

该工具箱提供了一个 python 库来执行滚动快门相机-陀螺仪系统的联合校准。

给定陀螺仪和视频数据,这个库可以找到以下参数

  • 真实陀螺仪速率

  • 时间偏移

  • 相机和陀螺仪坐标系之间的旋转

  • 陀螺仪测量偏差

如果您在工作中使用该软件包,请引用以下论文

Ovrén,H 和 Forssén,P.-E。“具有自动校准功能的基于陀螺仪的视频稳定功能。” 2015 年 IEEE 国际机器人与自动化会议 (ICRA)(第 2090-2097 页)。华盛顿州西雅图市

我可以在我的应用程序中使用这些方法吗?

此软件包中的校准方法假设如下

  • 您的相机已校准,包括已知的读出时间

  • 相机帧率是恒定的,并且已知

  • 陀螺仪帧速率是恒定的,并且大约是已知的(在几赫兹或百分比内)

如果视频和陀螺仪数据不是均匀采样的,但您可以访问一些可靠的时间戳,那么您仍然可以使用该方法重新采样数据以使其均匀。“可靠”是指没有漂移的时间戳,也没有(或可忽略不计)抖动。

从 1.0 开始的变化

2.0 版本的crisp 具有新的全自动校准器。这意味着没有令人信服的理由使用以前版本的crisp 中的半手动方法。因此旧的示例脚本已被删除,旧的函数不会导入到模块命名空间中。没有删除旧功能,因此如果您想使用它们,它们仍然可以在子模块中使用。

安装

要使用该包,您需要以下 Python 包:

  • 数字货币

  • 科学派

  • 开放式CV

  • matplotlib

最简单的方法是从 PyPI 安装:

$ pip install crisp

如果要从源代码构建包,还需要Cython 包。要构建和安装清晰模块,只需运行以下命令:

$ python setup.py build
$ python setup.py install

对于仅限用户的安装,将--user添加到安装命令。

用法

陀螺仪和视频数据首先加载到流对象(GyroStreamVideoStream的子类)中。为了能够理解点如何从现实世界映射到图像,视频流还需要一个CameraModel (-subclass) 实例。

import crisp

gyro = crisp.GyroStream.from_data(some_data_array)
camera_model = crisp.AtanCameraModel(...) # One specific choice of camera model
video = crisp.VideoStream.from_file(camera_model, video_file_path)

然后,我们使用AutoCalibrator实例将流连接在一起。由于校准过程需要估计时间偏移和相对旋转,因此首先使用 initialize()成员进行估计。此初始化只需要您提供一个近似的陀螺仪采样率(以赫兹为单位)。

calibrator = crisp.AutoCalibrator(video, gyro)
calibrator.initialize(guessed_gyro_rate)
result = calibrator.calibrate() # Dict of calibrated parameters

初始化和校准错误可以通过处理 InitializationErrorCalibrationError来捕获。

示例脚本

我们捆绑了一个示例脚本gopro_dataset_example.py,它展示了如何将库与我们数据集中的数据一起使用 ( http://www.cvl.isy.liu.se/research/datasets/gopro-gyro-dataset/ )。这与用于生成上述 ICRA 2015 论文的数据集相同。

反馈

  • 有关方法和论文的任何问题,请发送电子邮件至hannes 奥夫伦@

  • 关于代码的问题,欢迎您使用 GitHub 提供的工具(问题报告等),或发送电子邮件。

执照

此存储库中的所有代码均在 GPL 版本 3 下获得许可。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

crisp-2.2.tar.gz (76.3 kB 查看哈希)

已上传 source