IMU的加速度补偿、祛除向心力

目录

  • 1. 简介
  • 2. 仅有XY偏移的修正过程
  • 3. 3D修正过程

1. 简介

  1. 一般,我们期望用IMU测量某个Target坐标系的加速度、角速度信息,然而IMU的坐标系Target 坐标系一般存在位姿关系,此时IMU测量的加速度不能直接代表Target左坐标系的加速度。比如Target 坐标系绕Z轴自转动,Target的XY轴的加速度应该为0;然而IMU的加速度,包含了向心力,XY的加速度发生变化,不能直接用于Target坐标系。
  2. 基于上述问题,如果需要Target坐标系的加速度,需要对IMU的加速度进行向心力的补偿。
  3. 参考:CSND-浅谈加速度计旋转补偿【3D个人觉得不合理】

2. 仅有XY偏移的修正过程

  1. 简介:假如IMU的坐标系Target坐标系只有平移关系,没有旋转关系,也就是坐标系对齐,且只考虑XY
    在这里插入图片描述

  2. 向心力 F 向 = m a 向 = m w 2 r F_{向}=ma_{向}=mw^2r F=ma=mw2r,其中 w w wTarget坐标系自转角速度(弧度)。可以得到在Target坐标系下,IMU的向心加速度
    a 向心 = w 2 ⋅ r = w 2 ⋅ △ x 2 + △ y 2 a_{向心}=w^2\cdot r=w^2 \cdot \sqrt {\triangle x^2 + \triangle y^2} a向心=w2r=w2x2+y2

  3. IMU的X轴上,向心力叠加量为,这一部分需要IMU的X轴加速度减去
    X a = a 向心 ⋅ c o s θ = a 向心 ⋅ △ x r = w 2 ⋅ △ x X_a=a_{向心} \cdot cos\theta=a_{向心} \cdot \frac{\triangle x}{r}=w^2\cdot \triangle x Xa=a向心cosθ=a向心rx=w2x

  4. IMU的Y轴上,向心力叠加量为,这一部分需要IMU的Y轴加速度减去
    Y a = a 向心 ⋅ s i n θ = a 向心 ⋅ △ y r = w 2 ⋅ △ y Y_a=a_{向心} \cdot sin\theta=a_{向心} \cdot \frac{\triangle y}{r}=w^2\cdot \triangle y Ya=a向心sinθ=a向心ry=w2y

3. 3D修正过程

  1. 首先将IMU的坐标系与Target坐标系的先旋转修正,此时IMU坐标系与Target的坐标系朝向对齐,问题就可以简化问题

  2. 对IMU的数据进行旋转

    • 设IMU坐标系在Target坐标系朝向的旋转关系为 R ,即Target到IMU的过渡旋转,或者叫在Target坐标系下,IMU的姿态为R
      T a r g e t ⋅ R = I M U Target \cdot R= IMU TargetR=IMU
    • 那么对齐后的IMU数据为
      a c c = R ⋅ a c c i m u g y r o = R ⋅ g y r o i m u acc=R \cdot acc_{imu} \\ gyro=R\cdot gyro_{imu} acc=Raccimugyro=Rgyroimu
  3. 此时问题和第2节中类似,不过此时我们区别是,需要考虑Z轴的偏移影响

    • 在第2节可以看到,Z轴旋转 只会 增加X轴、Y轴的向心力,不会增加Z轴。同理,X轴旋转也会增加Y轴、Z轴向心力,Y轴旋转会增加X轴、Z轴向心力。
    • 所以,每个轴的向心力会受到另外两个轴的旋转影响。这里角速度为Target坐标轴角速度,不过它和旋转后的IMU角速度一致。
    • 那么向心力在每个轴的分量为,需要注意的是,这是原始测量值需要减去的值
      a x = w z ⋅ △ x + w y ⋅ △ x a y = w z ⋅ △ y + w x ⋅ △ y a z = w y ⋅ △ z + w x ⋅ △ z a_x=w_z\cdot \triangle x + w_y \cdot \triangle x \\ a_y=w_z\cdot \triangle y + w_x \cdot \triangle y \\ a_z=w_y\cdot \triangle z + w_x \cdot \triangle z \\ ax=wzx+wyxay=wzy+wxyaz=wyz+wxz
  4. 代码实现

    def IMU_Centripetal_force_correction(self, imu_acc, imu_gyro, rotation, position):'''Target坐标系作为参考坐标系,IMU的姿态为rotation、position,进行向心力去除imu_acc、imu_gyro 为IMU的测量值'''# 0. 得到偏移量delta_x, delta_y, delta_z = position[0], position[1], position[2]# 1. 将IMU的坐标系朝向与Target坐标系对齐acc  =  np.asarray(rotation,dtype=np.float32) @ np.asarray(imu_acc, dtype=np.float32)gyro =  np.asarray(rotation,dtype=np.float32) @ np.asarray(imu_gyro, dtype=np.float32)# 2. 向心力的叠加量计算wx, wy, wz = gyro[0], gyro[1], gyro[2]delta_ax = wz*delta_x + wy*delta_xdelta_ay = wz*delta_y + wx*delta_ydelta_az = wy*delta_z + wx*delta_z# 3. 修正加速度,陀螺仪不需要再修正acc[0] = acc[0] - delta_axacc[1] = acc[1] - delta_ayacc[2] = acc[2] - delta_az return acc, gyro
    

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

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

相关文章

python库(10):SpaCy库实现NLP处理

1 SpaCy简介 自然语言处理(NLP)是人工智能领域中一个重要的分支。它旨在使计算机能够理解、解释和生成人类语言。Python中的SpaCy库提供了丰富的功能和工具,SpaCy是一个开源的软件库,用于处理和操作自然语言文本,可以…

uniapp颜色选择器

https://github.com/mehaotian/t-color-picker/ 优化点&#xff1a; 1.添加点击事件支持。 2.open时使用外部设置的颜色属性。 3.默认rgba模式&#xff0c;并且支持手动输入rgb。 本人优化后的代码如下&#xff1a; <template><view v-show"show" class&q…

Codeforces Round 957 (Div. 3)

A题&#xff1a;Only Pluses 思路&#xff1a; 数据范围小&#xff0c;直接暴力枚举。 code&#xff1a; inline void solve() {int a, b, c; cin >> a >> b >> c;int ans 0;for (int i a; i < a 5; i ) {for (int j b; j < b 5; j ) {for …

qt udp 协议 详解

1.qt udp 协议链接举例 在Qt框架中&#xff0c;使用UDP协议进行通信主要依赖于QUdpSocket类。以下是一个基于Qt的UDP通信示例&#xff0c;包括UDP套接字的创建、绑定端口、发送和接收数据报的步骤。 1. 创建UDP套接字 首先&#xff0c;需要创建一个QUdpSocket对象。这通常在…

BM42:混合搜索的新基准 - Qdrant

在过去的 40 年里&#xff0c;BM25 一直是搜索引擎的标准。它是一种简单但功能强大的算法&#xff0c;已被许多搜索引擎使用&#xff0c;包括 Google、Bing 和 Yahoo。 虽然看起来向量搜索的出现会削弱其影响力&#xff0c;但效果并不明显。目前最先进的检索方法试图将 BM25 与…

python库(11):Box库简化字典和对象之间的转换

1Box库简介 Box是一个Python库&#xff0c;它提供了一种将数据封装在字典和列表中的方式&#xff0c;同时提供了一些额外的功能&#xff0c;比如数据验证、默认值设置等。这使得Box库非常适合用于配置管理、数据传输对象&#xff08;DTO&#xff09;的创建&#xff0c;以及任何…

sqlmap使用之-post注入、head注入(ua、cookie、referer)

1、post注入 1.1、方法一&#xff0c;通过保存数据包文件进行注入 bp抓包获取post数据 将数据保存到post.txt文件 加上-r指定数据文件 1.2、方法二、通过URL注入 D:\Python3.8.6\SQLmap>python sqlmap.py -u "http://localhost/login.php" --data "userna…

替换:show-overflow-tooltip=“true“ ,使用插槽tooltip,达到内容可复制

原生的show-overflow-tooltip“true” 不能满足条件&#xff0c;使用插槽自定义编辑&#xff1b; 旧code <el-table-column prop"reason" label"原因" align"center" :show-overflow-tooltip"true" /> <el-table-column pro…

如何预防网站数据泄露

如何预防网站数据泄露?在数字化浪潮中&#xff0c;网站不仅是企业展示形象与服务的窗口&#xff0c;更是数据存储与传输的枢纽。随着网络攻击技术的日益复杂&#xff0c;网站数据泄露的风险也随之攀升。一旦敏感数据如客户信息、财务记录等被不法分子窃取&#xff0c;企业将面…

压缩文件的解析方式

Java中我们用ZipInputStream和ZipOutputStream来完成对zip文件和rar文件的读写 I /O流&#xff1a; Input:输入&#xff0c;通过“输入流”进行文件的读取操作 output:输出&#xff0c;通过“输出流”进行文件的写入操作 一、将压缩包解压缩 1.解压缩.zip格式文件&#xf…

微信小程序毕业设计-汽车维修项目管理系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

NoSQL 之Redis集群模式

一&#xff1a;Redis集群方式 Redis有三种模式&#xff1a;分别是主从复制、哨兵模式、Cluster 1&#xff1a;主从模式: 主从复制是高可用Redis的基础&#xff0c;哨兵和群集都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的…

netscaler LDAP+RADIUS传统的双因素认证方式(之一)

如果使用传统的双因素认证方式&#xff0c;可以通过在Citrix ADC (NetScaler) 13.1上配置Gateway Virtual Server来实现LDAP和RADIUS的双因素认证。当前配置方式&#xff0c;采用Cateway vServer两个Basic Authtication Policy方式实现&#xff0c;以下是详细步骤&#xff1a; …

【码题集】习题

目录 史莱姆融合 松鼠接松果 新月轩就餐 史莱姆融合 根据题意就是一道集合合并的题&#xff0c;所以要用并查集&#xff0c;不过最后我们要输出整个序列&#xff0c;所以要在合并的时候维护一个链表&#xff0c;以便最终合并成一个大集合的时候&#xff0c;输出整个链表就是…

针对不支持AJAX异步查询的虚拟空间做跨站点查询

最近在做一个ASPACCESS的企业小站&#xff0c;因为有中文、英文版分开不同空间不同域名的需求。原构想用AJAX做异步查询相关质保数据&#xff0c;但上线了才发现新网的虚拟空间不支持AJAX异步&#xff0c;咨询客服后也没有效的方法。后来想到&#xff1a;远程JS应该是每天的&am…

Kotlin Misk Web框架

Kotlin Misk Web框架 1 添加依赖1.1 build.gradle.kts1.2 settings.gradle.kts1.3 gradle.properties 2 请求接口3 程序模块4 主服务类5 测试结果 Misk 是由 Square 公司开发的一个开源的多语言服务器框架&#xff0c;主要用于构建微服务。它主要使用 Kotlin 语言&#xff0c;但…

UGC与AI引领的下一个10年,丝芭传媒已经准备好

丝芭传媒最近传来的消息&#xff0c;都跟技术相关。 基于自研AI大模型“Paro&#xff08;心乐舞河&#xff09;”的AIGPT及AIGC生成工具APP“鹦鹉人”开启用户内测。2023年3月技术测试的图形化智能社交基座“美踏元宇宙”&#xff0c;也将开放首轮用户内测。 此外&#xff0c…

Vue 3中 watch 和 watchEffect的区别?

​ 在 Vue 3 中&#xff0c;响应式系统允许我们声明性的绑定数据和 DOM&#xff0c;当数据变化时&#xff0c;DOM 也会自动更新。为了实现这一点&#xff0c;Vue 提供了特殊的 API&#xff0c;其中包括 reactive 和 ref&#xff0c;用于分别创建响应式对象和响应式基本类型值。…

【linux】log 保存和过滤

log 保存 ./run.sh 2>&1 | tee -a /home/name/log.txt log 过滤 import os import re# Expanded regular expression to match a wider range of error patterns error_patterns re.compile(# r(error|exception|traceback|fail|failed|fatal|critical|warn|warning…

notes for datawhale 2th summer camp NLP task1

//I wrote this note in obsidian and copied it here. The strange format in this note is due to lack of obsidian plugins. tags: AI-studyML status: done 目标&#xff1a;跑通baseline&#xff0c;体验NLP模型解决问题的流程&#xff0c;基本了解赛题要求&#xff0c;…