AirSim中运行VIO算法(VINS-Mono)

2023-05-16

VINS-Mono在AirSim上跑通

文章目录

  • VINS-Mono在AirSim上跑通
  • 一 IMU参数配置
  • 二 相机参数设置
  • 三 AirSim发布数据问题

关于相机、IMU内外参的完整解释,可以参考我的另一篇文章:

一 IMU参数配置

根据文章IMU Kalibr parameters for AirSim 、AirSim仿真IMU内参分析可以得到AirSim中连续时间的IMU随机噪声参数如下:

gyro.arw is the gyroscope_noise_density, and is equal to 8.7266462e-5
gyro_bias_stability_norm is the gyroscope_random_walk, and is equal to 9.9735023e-7
accel.vrw is the accelerometer_noise_density, and is equal to 0.002353596
accel_bias_stability_norm is the accelerometer_random_walk, and is equal to 1.2481827e-5

在VINS-Mono中我们需要的是离散后的噪声参数:

对于高斯白噪声:
σ d = σ 1 Δ t \sigma_d = \sigma \frac{1}{\sqrt{\Delta t}} σd=σΔt 1
对于随机游走噪声方差:
σ b d = σ b Δ t \sigma_{bd} = \sigma_b \sqrt{\Delta t} σbd=σbΔt
在采集数据时,测得IMU频率为40~50Hz,这里得采样时间取
Δ t = 0.025 \Delta t = 0.025 Δt=0.025
因此,在Vins-Mono中设置IMU参数如下:

acc_n: 1.4885e-02
gyr_n: 5.5192e-04
acc_w: 1.9736e-06
gyr_w: 1.5769e-07
g_norm: 9.81007

简单的python计算器:

import math
acc_n_c = 0.002353596
acc_w_c = 1.2481827e-5
gyr_n_c = 8.7266462e-5
gyr_w_c = 9.9735023e-7

Delta_t = 0.025

print("acc_n: {:.4e}\ngyr_n: {:.4e}\nacc_w: {:.4e}\ngyr_w: {:.4e}\ng_norm: 9.81007".format(
    acc_n_c/math.sqrt(Delta_t), gyr_n_c/math.sqrt(Delta_t), acc_w_c*math.sqrt(Delta_t), gyr_w_c*math.sqrt(Delta_t)))

二 相机参数设置

相机参数包含内参,图像宽高和畸变系数

AirSim中图像默认是没有畸变的,相机的图像大小默认设置为 640 × 480 640\times 480 640×480

因此设置相机参数如下:

image_width: 640
image_height: 480
distortion_parameters:
  k1: 0.0
  k2: 0.0
  p1: 0.0
  p2: 0.0
projection_parameters:
  fx: 320
  fy: 320
  cx: 3.20e+02
  cy: 2.40e+02

相机与IMU之间的旋转矩阵: from camera frame to imu frame

IMU坐标系:与飞机坐标系一致, FRD;相机系默认为相机镜头前方为z, 右手为x。如下图所示:

AirSim坐标系

对于前视装配的相机,旋转矩阵:
R = M z ( − 90 ) M x ( − 90 ) = [ 0 0 1 1 0 0 0 1 0 ] R = M_z(-90) M_x(-90) = \begin{bmatrix} 0 & 0 & 1\\ 1 & 0 & 0\\ 0 & 1 & 0 \end{bmatrix} R=Mz(90)Mx(90)=010001100

如果是下视的相机,首先配置文件settings.json

"Cameras": {
        "front_center_custom": {
          "CaptureSettings": [
            {
              "PublishToRos": 1,
              "ImageType": 0,
              "Width": 800,
              "Height": 600,
              "FOV_Degrees": 120,
              "DepthOfFieldFstop": 2.8,
              "DepthOfFieldFocalDistance": 200.0, 
              "DepthOfFieldFocalRegion": 200.0,
              "TargetGamma": 1.5
            }
          ],
          "X": 0.50, "Y": 0, "Z": 0.10,
          "Pitch": -90, "Roll": 0, "Yaw": 0
        }

则下视相机的 R c a m i m u R_{cam}^{imu} Rcamimu为:
R = M z ( − 90 ) = [ 0 − 1 0 1 0 0 0 0 1 ] R = M_z(-90) = \begin{bmatrix} 0 & -1 & 0\\ 1 & 0 & 0\\ 0 & 0 & 1 \end{bmatrix} R=Mz(90)=010100001
相机系imu系的平移 T c a m i m u T_{cam}^{imu} Tcamimu即为相机系的原点在imu系下的坐标。对应airsim中.json文件设置的相机安装位置,这里以上面的.json文件为例:
t = [ 0.5 0.0 0.1 ] t= \begin{bmatrix} 0.5 & 0.0 & 0.1 \end{bmatrix} t=[0.50.00.1]

三 AirSim发布数据问题

增加频率方法参考资料:
Running SLAM system on AirSim · Issue #2369 · microsoft/AirSim (github.com)
修改airsim的ros包实现高频率:xuhao1/airsim_ros_pkgs: An adapter for airsim for SITL or HIL simulation drone app built on DJI-SDK (github.com)
我的另一篇总结bolg:AirSim中获取视觉、惯性数据方法研究

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AirSim中运行VIO算法(VINS-Mono) 的相关文章

  • Monotouch - QLPreviewController 问题

    我正在尝试使用 QLPreviewController 查看 PDF 文件并发送它 但预览 PDF 文档后操作按钮出现问题 当我按下操作按钮 右上角 时 应用程序崩溃 我得到 未处理的托管异常 抛出 Objective C 异常 名称 NS
  • 当 WebRequest 无法找到该前缀的创建者时出现“NotSupportedException”

    我有一个非常奇怪的问题WebRequest in a ServiceStackWeb 应用程序 由 Mono 上的 XSP 托管 看起来请求模块的注册工作方式非常奇怪 我在用WebRequest创建一个 HTTP 请求 但它失败了 因为它无
  • MonoDevelop - 转换行结束对话框

    我经常在 Linux 上的 MonoDevelop 和具有相同代码库的 VS2010 之间切换 因此我永远不得不单击不转换行结尾 MonoDevelop 中是否有一个选项可以设置默认答案以防止弹出此对话框 找到了 编辑 gt 首选项 gt
  • 使用 C# 组合两个相对路径

    将相对路径附加到绝对路径 有很多欺骗 但我需要添加相对路径 e g Path1 Parent Child a txt Path2 Sibling file cs Result Parent Sibling file cs Tried Dir
  • Mono 支持 64 位 Windows 吗?

    在本页面 http www mono project com Supported Platforms http www mono project com Supported Platforms 64 位 Windows 未列为受支持的平台
  • Mono 可以在 rdlc 中创建/运行报告吗?

    我从未使用过 mono 很好奇 mono 是否可以创建 运行 rdlc 报告 我正在寻找实现的是一个单声道 asp net mvc 应用程序 用于使用 rdlc 创建报告并导出为 pdf 单声道可以吗 有一些开源项目尝试在 NET 中实现
  • Mono mkbundle 工具无法创建二进制文件,并抱怨输出文件不可用

    根据来自的建议这个线程 https stackoverflow com questions 551554 can you compile c without using the net framework在运行没有 NET 的 C 应用程序
  • 目前Mono虚拟机的性能如何?

    网络上充斥着不同语言 编译器 虚拟机的各种性能测试 然而 几乎没有任何一个使用真实场景来测试性能 此外 在 Google 上搜索此类基准通常只会产生几年前的基准 因为这些基准有最多的时间来收集它们的链接 你们中有人真正了解不同虚拟机的当前性
  • 同时使用 Mono 2.2.1 和 Visual Studio 2010

    我使用 Visual Studio 2010 创建了一个 C NET 3 5 项目 添加了一些类和表单并关闭它 之后 我使用 Monodevelop 2 2 1 打开项目并添加一些其他内容 然后再次关闭 现在 当我使用 Visual Stu
  • GTK C# 小部件更改颜色不起作用

    我试图通过使用更改 GTK 中按钮小部件的颜色 button1 ModifyBase Statetype Normal new Gdk Color 1 1 1 这是从另一个按钮单击事件调用的 但小部件颜色未更新 为什么是这样 您可以只使用M
  • 如何验证nginx是否正在运行?

    After 运行 ASP NET vNext 项目 http xameeramir github io asp net 5 ubuntu linux 在我的本地机器上我试图弄清楚如何运行它nginx https www nginx com
  • RestSharp 在上传时将整个文件加载到内存中。如何避免呢?

    我在 Mono 项目中使用 RestSharp 上传一些文件 我注意到上传大文件时 内存会大幅增长 看着RestSharp源代码 https github com restsharp RestSharp blob master src Re
  • mkbundle 和 GTK#

    我正在尝试使用 mkbundle 以便我可以分发 GTK 应用程序 而无需用户安装 NET Mono 或 GTK 我已经成功捆绑了一个使用 winforms 的应用程序 但由于某种原因 当我对 GTK 应用程序执行相同操作时 它无法工作 这
  • 是否可以使用 Mono 运行 clickonce 应用程序?

    我正在开发 clickonce 应用程序 我可能想在 Mac 平台上分发该应用程序 我知道我可以使用 Mono 编译 Net 应用程序 并且它可以在 Mac 上运行 但是我可以使用 clickonce 作为安装程序吗 thanks 我认为
  • Mono - XDocument.Load 因 LoadOptions.PreserveWhitespace 失败

    使用 Mono 版本 2 10 5 以下代码在任何 XML 文档上都会失败 using System using System Collections Generic using System Linq using System IO us
  • Mono 的 DNS 刷新超时

    虽然目前Mono项目的ServicePointManager类有DnsRefreshTimeout属性启用到其接口中 相关属性未实现 调用示例 ServicePointManager DnsRefreshTimeout 10 60 1000
  • .NET csc 和 Mono mcs 的兼容性

    我知道 NET 和 Mono 是二进制兼容的 但给定一组源代码 csc 和 mcs 会生成完全相同的 100 相同的二进制 CLI 可执行文件吗 人们能够判断可执行文件是用 csc 还是 mcs 编译的吗 很多东西在规范中没有完全定义 或者
  • 扩展 Mono C# 编译器:有任何文档或先例吗?

    我目前正在参与一些有趣的编程语言研究 到目前为止 这些研究的重点是通过一些非常强大的基于程序员生产力的功能来扩展即将推出的 Java 7 0 编译器 这项工作应该同样适用于 C 等相关编程语言 我目前正在研究用于对该功能的 C 端口进行原型
  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • Mono 在实际应用中的应用有多广泛?

    跟进评论问题here https stackoverflow com questions 3736101 what applications had better be developed in c over c in todays bus

随机推荐

  • Python正则表达式学习(5)——re.findall()

    re findall xff08 pattern xff0c string xff0c flags 61 0 xff09 返回字符串中模式的所有非重叠匹配 xff0c 作为字符串列表 字符串从左到右扫描 xff0c 并按照找到的顺序返回匹配
  • linux内核插入模块时 Unknown symbol in module

    编译驱动的时候碰到了 insmod error inserting 39 igb ko 39 1 Unknown symbol in module 的问题 xff0c 在网上看了下 xff0c 说是查看 dmesg tail 看输出信息中的
  • Linux路由器

    宽带上网已经不是什么新鲜事情 xff0c 人们对相关的网络器件已经不再陌生 xff0c 比如说常见的路由器 对于一般的网络用户 xff0c 他们能知道怎样使用路由器来上网 玩游戏等就已经感到很满足了 xff0c 通常情况下对路由器的深层技术
  • 树莓派linux驱动学习之hello world

    http blog csdn net hcx25909 article details 16860055 最近想学习一下linux驱动 xff0c 看了一些书和教学视频 xff0c 大概了解了一下 xff0c 不过要想深入 xff0c 肯定
  • 微信端口及协议分析

    http blog newxd com 7235 html 有朋友公司需求如下 xff0c 手机通过WIFI连接上网 xff0c 而老板要求 xff0c 员工使用手机只能上微信 xff0c 而不能上其他网页和看在线视频 上网搜索了微信使用协
  • git报错fatal: HTTP request failed

    1 在使用git pull git push git clone会报类似如下的错误 xff1a sudo git clone https github com pcduino a20 kernel fatal HTTP request fa
  • 树莓派2在U8300W平台上用pppd拨号时出现“pppd: The remote system is required to authenticate itself”

    利用pppd拨号 xff0c 首先需要调试好驱动 1 xff09 安装ppp sudo apt get install y ppp sudo apt get install y ppp dev sudo apt get install y
  • armv7架构下lubuntu系统apt-get安装ffmpeg方法

    What s up doc 17 08 2007 I think you have noticed the Google Ads I need that to pay the huge amount of bandwidth 10 05 2
  • shell脚本转换成二进制的可执行文件方法--加密

    http www 360doc com content 14 0507 14 10058718 375504586 shtml http www linuxidc com Linux 2014 12 110612 htm http www
  • Linux下jhead简介以及使用

    jhead 源代码下载地址 http www sentex net mwandel jhead locate r 34 io h 34 find usr include name 34 io h 34 一个现成更改照片时间的程式 jhead
  • Linux 内核和驱动开发工程师的发展前景怎么样

    或许这样的标题 xff0c 应该是由像Linus或Greg KH这样的大师级的高手才有资格写的吧 但是作为我来说 xff0c 也许我更想把这个标题作为一个疑问句来使用 xff0c 整理一下自己的认识 xff0c 用来勉励自己 xff0c 和
  • Linux awk 中 BEGIN 和 END 的使用方法

    1 awk的流程控制BEGIN和END http blog 51cto com 151wqooo 1309851 2 awk详解 http blog 51cto com 7177526 1387238
  • SLAM 介绍

    http www slamcn org index php E9 A6 96 E9 A1 B5 比较好的开源SLAM Odometry代码 xff1a https github com ethz asl rovio https github
  • MIPI接口介绍

    文章转自 xff1a http blog csdn net shen924 article details 9140509 xff0c 留此作为备份 xff0c 感谢原创贡献 xff5e 一 MIPI MIPI xff08 移动行业处理器接
  • STL的多线程安全问题

    1 stl的线程安全 说一些关于stl容器的线程安全相关的话题 一般说来 xff0c stl对于多线程的支持仅限于下列两点 xff1a 貌似Effective STL中有描述 1 多个读取者是安全的 即多个线程可以同时读取一个容器中的内容
  • 树莓派安装docker,Go语言。附VNC软件安装重启后,进入白屏登录界面的解决方案

    树莓派安装docker xff0c Go语言 附VNC软件安装重启后 xff0c 进入白屏登录界面的解决方案 背景 xff1a 课题要使用hyperledger xff0c 在ARM上应用 涉及到docker xff0c go语言 之后会包
  • 黑马程序员C++课程笔记二(模板、STL)

    笔记 C 43 43 模板 STL学习笔记 代码地址 xff1a 程序文件名与课程P一致 文章目录 笔记 C 43 43 模板 STL学习笔记1 模板1 1 模板的概念1 2 函数模板1 2 1 函数模板语法1 2 2 函数模板注意事项1
  • Nano板使用USB与PX4通信

    环境配置 USB micro与PX4通信 文章目录 环境配置 USB micro与PX4通信1 硬件接线2 软件环境 最近项目需要PX4与记载电脑通信 xff0c 查了下资料目前方案有 1 使用TELEM2串口的 xff0c 阿木的就是使用
  • 在Win下Visual Studio配置Eigen

    在Win下Visual Studio配置Eigen 最近在使用Visual Studio时想使用一下著名的矩阵运算库 xff1a Eigen xff0c 摸索了一下如何在Visual Studio中配置 1 下载Eigen源码 直接到Eig
  • AirSim中运行VIO算法(VINS-Mono)

    VINS Mono在AirSim上跑通 文章目录 VINS Mono在AirSim上跑通一 IMU参数配置二 相机参数设置三 AirSim发布数据问题 关于相机 IMU内外参的完整解释 xff0c 可以参考我的另一篇文章 一 IMU参数配置