IMU(陀螺仪、加速度计)&Magnetometer(磁力计)校准方法和流程

2023-05-16

一、何为校准:

       校准的目的是因为厂商在生产器件时,由于工艺、技术等原因,致使器件存在缺陷,导致实际应用时,存在误差!

一般器件在出厂时,都会做一些校准处理,比如以Sensonor公司的Stim300为例:

       一般用户采购IMU器件后,仍会对IMU进行校准,参数如下:零偏稳定性、比例因子(温度)、非正交性等。 批量使用和单个试验样机的校准方式和校准参数多少有不同;下面就以单个IMU(加速度计、陀螺仪)的参数进行校准:

假定:

  • 导航坐标系:东-北-天
  • 载体坐标系:右-前-上

重力矢量和地球自转角速度在地理坐标系下:

速度微分方程为:

如上,速度微分方程,等号左边为0.右边第二项为0,只剩下右边第一项和第三项,其中要保证Cnb为已之值。

校准条件:首先是静止,保持水平面;既可以标定出零偏和比例因子;

如果还需要标定非正交性参数,需要将将载体坐标系三轴(右前上)分别与导航坐标系(东北天)平行,以保证Cnb为单位矩阵;这样能够保证比力fb=fn;

二、IMU校准

1、加速度计:

六位置校准:只能校准X、Y、Z轴的零偏(Bias)和比例因子(Scale Factor Error),共6个参数!

如下分别求:Z、X、Y轴的零偏和比例因子:

比如以下:(注意如果载体系为前右上时,(1+s)*g 前面的符号是反的),

 

2、陀螺仪:

 

 

 

三、磁力计校准

地球磁场:地球的磁场象一个条形磁体一样由磁南极指向磁北极。在磁极点处磁场和当地的水平面垂直,在赤道磁场和当地的水平面平行,所以在北半球磁场方向倾斜指向地面。用来衡量磁感应强度大小的单位是Tesla或者Gauss(1Tesla=10000Gauss)。随着地理位置的不同,通常地磁场的强度是0.4-0.6Gauss。需要注意的是,磁北极和地理上的北极并不重合,通常他们之间有11.5度左右的夹角。

(1) 地球磁场分布图:

(2) 地磁要素图:

设观测点在O处,并以O点为原点建立地理坐标系OXYZ,X轴指向北,Y轴指向东,Z轴垂直指向地。

       地磁场强度T在X轴上的投影Bn称为地磁场的北向分量;T在Y轴上的投影Be称为东向分量;T在Z轴上的投影Bz称为地磁场的垂向分量。T在水平面O-XY的投影Bh称为地磁场的水平分量。地磁水平分量Bh和垂向分量Bz所在平面称为磁子午面磁子午面和地理子午面O-XZ平面的夹角称为磁偏角,用D表示,并规定其东偏为正,西偏为负。地磁场强度T与水平面O-XY的夹角称为磁倾角,用I表示。上述,T、Bh、Bn、Be、Bz、D、I统称为地磁场七要素,可作为定位定向的参考量。七要素只要知道三个独立的要素,就可以求其余的要素,常用的是磁倾角、磁偏角和水平分量。七要素间有如下关系:

(3) 中国地磁要素变化:

中国的地磁要素大致分布情况:国境内地磁强度总量范围0.41~0.60Gauss(1 Gauss = 10^-4T);水平分量Bh由南至北从0.4降至0.21;垂直分量Bz由南至北从-0.1增至0.56;磁倾角I由南至北从-10°增至70°;磁偏角D由东向西从-11°增至5°,零偏线在中国中部偏西处,由北向南经过甘肃的安西以及西藏的得宋。

(4) 地磁场的一级近似:

对地磁场的一种近似,如下图所示:

不考虑地磁轴与地球自转轴的偏离问题,地磁强度分量可用以下解析式来描述:

其中,东向地磁分量为0;在实际运算中,将磁力计在水平面X、Y轴的测量值,全部投影到北向,并将东向置零。

在加速度计/磁力计标定中,一般采用十二位置标定法,其中十二位置法,包含了了36个轴向,以前上右为载体坐标系;北天东为导航坐标系

123456789101112
西西
西西西西

以上12位置实验,可以看出:X、Y、Z三轴在每一个方向都存在6次。

4206
4206
2226
2226
西0246
0246

 

 

 

 

 

 

 

 

 

 

 

 

参考:

 

《自主定位定向技术》

《Applications of Magnetoresistive Sensors in Navigation Systems》

《三轴磁阻式传感器标定方法研究》

《一种十二位置不对北的磁罗盘标定方法》

《基于WMM 2005的地磁计算》

ST集成传感器方案实现电子罗盘功能

ST集成传感器方案实现电子罗盘功能

地磁导航的应用风口来了?

以IndoorAtlas为基础,百度地图将深度整合地磁定位技术

高三物理复习微专题1---《地磁场》

椭球面


 

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

IMU(陀螺仪、加速度计)&Magnetometer(磁力计)校准方法和流程 的相关文章

  • gcc编译时对'xxxx'未定义的引用问题

    这个主要的原因是gcc编译的时候 xff0c 各个文件依赖顺序的问题 在gcc编译的时候 xff0c 如果文件a依赖于文件b xff0c 那么编译的时候必须把a放前面 xff0c b放后面 例如 在main c中使用了temp xff0c
  • 【编译人生】跨平台程序设计BOOST库以及编译方案的选择

    boost库很方便 xff0c 不用说 xff0c 下面是编译方法 xff0c 以WINDOWS平台为例 1 在 boost解压缩文件路径下 xff08 可能不同版本的路径位置build有所不同 xff09 cd d tools build
  • CAN总线的标准帧和扩展帧

    CAN总线的标准帧和扩展帧主要决定帧ID的长度 xff0c 标准帧的帧ID长度是11位 xff0c 帧ID的范围是000 7FF 扩展帧的帧ID长度是29位 xff0c 帧ID的范围是0000 0000 1FFF FFFF CANopen帧
  • CAN扩展帧详解

    寻址方式
  • linux 发送get/post请求

    目录 get post 43 json get curl location request GET 39 http xxxx param1 61 2027xxxx 39 url参数中涉及特殊字符的参数部分 需要转义 例如 curl 34 h
  • ROS -PCL程序包建立和CMakelist.txt修改

    一 创建工作空间 wtj 64 wtj echo ROS PACKAGE PATH wtj 64 wtj mkdir p dev catkin ws src wtj 64 wtj cd dev catkin ws src wtj 64 wt
  • jetson nano 供电模式的切换或自定义供电模式

    前言 xff1a jetson nano 开发板在预设的10W MAXN 模式下需要用5v4A的DC供电 用5v2A的DC或者micro usb供电建议使用5W模式 供电不足会导致掉电关机 以下是学习jetson nano时 xff0c 对
  • 自动驾驶之——CAN总线简介

    自动驾驶技术之 无人驾驶中的CAN总线 CAN 是Controller AreaNetwork 的缩写 xff0c 中文名为控制器局域网络 xff0c 是ISO国际标准化的串行通信协议 xff0c 是一种用于实时应用的串行通讯协议总线 xf
  • CMake中find_package()查找指定版本的库,以Qt库多版本共存为例

    Qt安装了多个版本时 xff0c CMake中写的find package 到底找到的是哪个库 xff1f 例如 xff0c 我电脑安装了两个版本的Qt xff0c 一个是5 12 3另一个是5 14 2 此时我的CMake如何指定使用哪个
  • 游戏中常用的寻路算法(6):地图表示

    在本系列文档大部分内容中 xff0c 我都假设A 用于某种网格上 xff0c 其中的 节点 是一个个网格的位置 xff0c 边 是从某个网格位置出发的各个方向 然而 xff0c A 可用于任意图形 xff0c 不仅仅是网格 xff0c 有很
  • Redis 官方可视化工具

    RedisInsight 是一个直观高效的 Redis GUI 管理工具 xff0c 它可以对 Redis 的内存 连接数 命中率以及正常运行时间进行监控 xff0c 并且可以在界面上使用 CLI 和连接的 Redis 进行交互 xff08
  • 一个注解搞定接口返回数据脱敏

    下午惬意时光 xff0c 突然产品小姐姐走到我面前 xff0c 打断我短暂的摸鱼time xff0c 企图与我进行深入交流 xff0c 还好我早有防备没有闪 xff0c 打开瑞star的点单页面 xff0c 暗示没有一杯coffee解决不了
  • 系统架构性能问题诊断及优化思路

    01 系统性能问题分析流程 我们首先来分析下如果一个业务系统上线前没有性能问题 xff0c 而在上线后出现了比较严重的性能问题 xff0c 那么实际上潜在的场景主要来自于以下几个方面 业务出现大并发的访问 xff0c 导致出现性能瓶颈 上线
  • 在Redis分布式锁上,栽的8个跟头

    在分布式系统中 xff0c 由于 redis 分布式锁相对于更简单和高效 xff0c 成为了分布式锁的首先 xff0c 被我们用到了很多实际业务场景当中 但不是说用了 redis 分布式锁 xff0c 就可以高枕无忧了 xff0c 如果没有
  • 牢记16个有用的 SpringBoot 扩展接口

    1 背景 Spring的核心思想就是容器 xff0c 当容器refresh的时候 xff0c 外部看上去风平浪静 xff0c 其实内部则是一片惊涛骇浪 xff0c 汪洋一片 Springboot更是封装了Spring xff0c 遵循约定大
  • ZYNQ研究----(3)7100 裸跑LWIP协议栈

    硬件环境 xff1a 创龙TLZ7XH EVM开发板 软件环境 xff1a VIVADO 2017 4 1 调用ZYNQ核 查开发板原理图 xff0c MIO16 27为以太网接口52 53为MDIO接口 xff0c 配置如下 使能串口1
  • SQL优化 20 连击

    一 查询SQL尽量不要使用select xff0c 而是具体字段 1 反例 SELECT FROM user 2 正例 SELECT id username tel FROM user 3 理由 节省资源 减少网络开销 可能用到覆盖索引 x
  • 对外 API 接口,请把握这3 条原则,16 个小点

    对外API接口设计 安全性 1 创建appid appkey和appsecret 2 Token xff1a 令牌 xff08 过期失效 xff09 3 Post请求 4 客户端IP白名单 xff08 可选 xff09 5 单个接口针对IP
  • 40 个 SpringBoot 常用注解:让生产力爆表!

    64 RequestMapping 64 RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射 Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和
  • 分页 + 模糊查询 有坑!

    前言 不知道你有没有使用过Mysql的like语句 xff0c 进行模糊查询 xff1f 不知道你有没有将查询结果 xff0c 进行分页处理 xff1f 模糊查询 xff0c 加上分页处理 xff0c 会有意想不到的坑 xff0c 不信我们

随机推荐

  • Spring Boot + Netty + WebSocket 实现消息推送

    关于Netty Netty 是一个利用 Java 的高级网络的能力 xff0c 隐藏其背后的复杂性而提供一个易于使用的 API 的客户端 服务器框架 Maven依赖 lt dependencies gt lt https mvnreposi
  • isEmpty 和 isBlank 的用法区别

    也许你两个都不知道 也许你除了isEmpty isNotEmpty isNotBlank isBlank外 并不知道还有isAnyEmpty isNoneEmpty isAnyBlank isNoneBlank的存在 come on 让我们
  • 300万数据导入导出优化方案,从80s优化到8s

    前景 在项目开发中往往需要使用到数据的导入和导出 xff0c 导入就是从Excel中导入到DB中 而导出就是从DB中查询数据然后使用POI写到Excel上 写本文的背景是因为在工作中遇到了大数据的导入和导出 xff0c 问题既然来了逃跑不如
  • 快速定位 SpringBoot 接口超时问题的神器

    背景 公司有个渠道系统 xff0c 专门对接三方渠道使用 xff0c 没有什么业务逻辑 xff0c 主要是转换报文和参数校验之类的工作 xff0c 起着一个承上启下的作用 最近在优化接口的响应时间 xff0c 优化了代码之后 xff0c 但
  • 常用开源监控系统分析推荐

    摘要 xff1a 在互联网信息爆炸式快速发展的今天 xff0c 各类复杂多样的平台系统相继涌出 如何选择最佳的监控产品以更好地维护这些平台和系统是每个 IT 人员都需面临的难题 本文将从开源监控产品的起源和发展 xff0c 详细解析各个时代
  • 一个非常实用的分布式 JVM 监控工具

    介绍 该项目为了方便开发者更快监控多个远程主机jvm xff0c 如果你的项目是Spring boot那么很方便集成 xff0c jar包引入即可 xff0c 不是Spring boot也不用气馁 xff0c 你可以快速自行初始化一个Spi
  • 【Java】HttpRequest 获得请求的url进行判断

    一 span class token class name HttpRequest span 获得请求的url进行判断 request span class token punctuation span span class token f
  • 秒杀系统的思考

    极限并发带来的思考 虽然现在大多数情况下都能订到票 xff0c 但是放票瞬间即无票的场景 xff0c 相信大家都深有体会 尤其是春节期间 xff0c 大家不仅使用 12306 xff0c 还会考虑 智行 和其他的抢票软件 xff0c 全国上
  • 为什么禁止MyBatis批量插入几千条数据使用foreach?

    近日 xff0c 项目中有一个耗时较长的Job存在CPU占用过高的问题 xff0c 经排查发现 xff0c 主要时间消耗在往MyBatis中批量插入数据 mapper configuration是用foreach循环做的 xff0c 差不多
  • SpringBoot 那些天生自带 Buff 的工具类

    断言 断言是一个逻辑判断 xff0c 用于检查不应该发生的情况 Assert 关键字在 JDK1 4 中引入 xff0c 可通过 JVM 参数 enableassertions开启 SpringBoot 中提供了 Assert 断言工具类
  • SpringBoot四大核心组件

    前言 先透露一下 xff0c 四大组件分别是 xff1a starter xff0c autoconfigure CLI 以及actuator 下面我们就来详细介绍一些他们有什么用 一 Spring Boot Starter 1 1 Sta
  • 线上问题排查,这些命令你一定用得到!

    线上问题排查 xff0c 以下场景 xff0c 你遇到过吗 xff1f 一 了解机器连接数情况 问题 xff1a 1 2 3 4的sshd的监听端口是22 xff0c 如何统计1 2 3 4的sshd服务各种连接状态 TIME WAIT C
  • linux内核发包工具pktgen

    pktgen使用说明 内核路径 net core pktgen c 作者对于pktgen的介绍 xff1a 原作者编写的pdf介绍 pktgen c 原理介绍 pktgen运用了proc 文件系统特征来实现用户和内核的交互 xff0c 用户
  • 用css写进度条

    用css写进度条 我们平时写进度条一般是一个父div包裹一个子div xff0c 用js控制子div的宽度 实现进度条 xff0c 我们现在可以用css简单实现进度条了 代码如下 xff1a 在vue项目里咱们只需要控制数字就行了 xff0
  • SpringBoot集成SpringSecurity

    SpringSecurity 安全简介 在 Web 开发中 xff0c 安全一直是非常重要的一个方面 安全虽然属于应用的非功能性需求 xff0c 但是应该在应用开发的初期就考虑进来 如果在应用开发的后期才考虑安全的问题 xff0c 就可能陷
  • 【ElementUI】进度条 el-progress—进度圆环颜色、自定义文字

    圆环不显示 大概率是因为宽度没有设置 el progress width 100 圆圈背景色 lt el progress type 61 34 circle 34 percentage 61 34 20 34 class 61 34 pe
  • linux使用curl加双引号进行转义

    amp 是个特殊符号 xff0c 如果在控制台使用curl curl http 127 0 0 1 8089 ceshi startTime 61 2018 10 24 02 49 35 amp amp endTime 61 2018 10
  • qt程序的CMakeLists.txt配置转为平台的qt的.pro项目工程文件

    参考这个 跨平台qt程序的CMakeLists txt配置转为平台的qt的 pro项目工程文件 谁能懂我2011的博客 CSDN博客 一些比较正规的跨平台qt项目没有 pro项目文件只有CMakeLists txt文件 xff0c 如果要编
  • 单片机堆栈是什么?它的原理和作用又是什么?

    什么是单片机堆栈 xff1f 在片内RAM中 xff0c 常常要指定一个专门的区域来存放某些特别的数据 它遵循顺序存取和后进先出 LIFO FILO 的原则 这个RAM区叫堆栈 它的作用 子程序调用和中断服务时CPU自动将当前PC值压栈保存
  • IMU(陀螺仪、加速度计)&Magnetometer(磁力计)校准方法和流程

    一 何为校准 xff1a 校准的目的是因为厂商在生产器件时 xff0c 由于工艺 技术等原因 xff0c 致使器件存在缺陷 xff0c 导致实际应用时 xff0c 存在误差 xff01 一般器件在出厂时 xff0c 都会做一些校准处理 xf