PX4 imu传感器配置

news/2025/3/3 12:17:08/

PX4 传感器配置

##坐标系定义
在这里插入图片描述

旋转变化

reference

在机器人中各个坐标系之间的变换是非常常见的,而在ROS tf 工具中,以及Eigen 中 我们常常会见到RPY的旋转表示和四元数的旋转表示。当然学航空出生的我们可能更常见的是Euler描述。那么这三者的关系我们就必须说清楚的。

首先,三种表达方式显然都是描述同一个旋转。在不加说明的情况下,我们所描述的都是从机体坐标系( b 系 )到参考坐标系( i 系 )的旋转,即: X i = R X b X_i=RX_b Xi=RXb

Euler的描述顺序: 依次绕机体系的 Z–>Y–>X的旋转,即动系旋转, 应该采用右乘法:
R = R Z R Y R X R=R_Z R_Y R_X R=RZRYRX
![在这里插入图片描述](https://img-blog.csdnimg.cn/eca0ee5d6baf420d94e51dd30e6b4bba.png
注:图片是B是动系,A是参考系

RPY的描述顺序: 依次绕着参考系(定系)的 X–>Y—>Z ,即定系旋转,应采用左乘法:
R = R Z R Y R X R=R_ZR_YR_X R=RZRYRX
![在这里插入图片描述](https://img-blog.csdnimg.cn/903e42152a8f44778424e23bd5118f5e.png
由以上公式可见,两个描述下的$ \alpha , \beta ,\gamma$ 的值,一模一样

所以RPY [90 , 45, 10] 也是欧拉角描述的:滚转角90度,俯仰角45度,偏航角10度。

imu配置

px4 对 IMU,compass传感器的配置都是一致的。其启动配置在/boards/.../init/rc.board_sensors中。 以FMU_V5为例,具体配置如下:

#!/bin/sh
#
# PX4 FMUv5 specific board sensors init
#------------------------------------------------------------------------------board_adc start# Internal SPI bus ICM-20602
icm20602 -s -R 2 -q start# Internal SPI bus ICM-20689
icm20689 -s -R 2 start# Internal SPI bus BMI055 accel/gyro
bmi055 -A -R 2 -s start
bmi055 -G -R 2 -s start# Baro on internal SPI
ms5611 -s start# internal compass
ist8310 -I -R 10 start# External compass on GPS1/I2C1 (the 3rd external bus): standard Holybro Pixhawk 4 or CUAV V5 GPS/compass puck (with lights, safety button, and buzzer)
ist8310 -X -b 1 -R 10 start

在配置中其他参数的具体作用,可以查看PX4开发者手册,也可以在nsh中输入icm20649(具体的驱动模块名) help:

icm20649 <command> [arguments...]Commands:start[-s]        Internal SPI bus(es)[-S]        External SPI bus(es)[-b <val>]  board-specific bus (default=all) (external SPI: n-th bus(default=1))[-c <val>]  chip-select index (for external SPI)default: 1[-m <val>]  SPI mode[-f <val>]  bus frequency in kHz[-q]        quiet startup (no message if no device found)[-R <val>]  Rotationdefault: 0stopstatus        print status info

这里,主要再说明一下R参数的作用。正如help功能所输出的结果,R表示的是传感器到机体坐标系(NED)的一个旋转关系,具体参数在rotation.h中定义:

这里采用了RPY的描述,它的具体定义和飞机常用欧拉角的关系,我在上一章旋转变化作了说明

enum Rotation : uint8_t {ROTATION_NONE                = 0,ROTATION_YAW_45              = 1,ROTATION_YAW_90              = 2,ROTATION_YAW_135             = 3,ROTATION_YAW_180             = 4,ROTATION_YAW_225             = 5,ROTATION_YAW_270             = 6,ROTATION_YAW_315             = 7,ROTATION_ROLL_180            = 8,ROTATION_ROLL_180_YAW_45     = 9,ROTATION_ROLL_180_YAW_90     = 10,ROTATION_ROLL_180_YAW_135    = 11,ROTATION_PITCH_180           = 12,ROTATION_ROLL_180_YAW_225    = 13,ROTATION_ROLL_180_YAW_270    = 14,ROTATION_ROLL_180_YAW_315    = 15,ROTATION_ROLL_90             = 16,ROTATION_ROLL_90_YAW_45      = 17,ROTATION_ROLL_90_YAW_90      = 18,ROTATION_ROLL_90_YAW_135     = 19,ROTATION_ROLL_270            = 20,ROTATION_ROLL_270_YAW_45     = 21,ROTATION_ROLL_270_YAW_90     = 22,ROTATION_ROLL_270_YAW_135    = 23,ROTATION_PITCH_90            = 24,ROTATION_PITCH_270           = 25,ROTATION_PITCH_180_YAW_90    = 26,ROTATION_PITCH_180_YAW_270   = 27,ROTATION_ROLL_90_PITCH_90    = 28,ROTATION_ROLL_180_PITCH_90   = 29,ROTATION_ROLL_270_PITCH_90   = 30,ROTATION_ROLL_90_PITCH_180   = 31,ROTATION_ROLL_270_PITCH_180  = 32,ROTATION_ROLL_90_PITCH_270   = 33,ROTATION_ROLL_180_PITCH_270  = 34,ROTATION_ROLL_270_PITCH_270  = 35,ROTATION_ROLL_90_PITCH_180_YAW_90 = 36,ROTATION_ROLL_90_YAW_270          = 37,ROTATION_ROLL_90_PITCH_68_YAW_293 = 38,ROTATION_PITCH_315                = 39,ROTATION_ROLL_90_PITCH_315        = 40,ROTATION_MAX
};

不过需要注意的一点是,这里的旋转关系有一点复杂。之前已经说了,这个旋转代表的是传感器坐标系到机体坐标系的旋转。那么机体坐标NED已经确定了,那么传感器坐标系呢?这里分为两种情况:

  • 传感器出厂坐标系为右手系的

大部分imu和mag本身都是右手系的,这里我收集了一些常用传感器的datasheet定义图:
在这里插入图片描述
这一类传感器在硬件设计时,期望将他们厂家定义的坐标系与机体的ENU相重合。这样的话,在传感器启动参数中 R 就为默认值0,也就是ROTATION_NONE 。这里,你肯定会疑惑道?难道不该是和之前说的机体坐标系NED重合么?你说的很对,确实应该如此。但是PX4在相应驱动中做了如下处理:

		// sensor's frame is +x forward, +y left, +z up//  flip y & z to publish right handed with z down (x forward, y right, z down)gyro.x[i] = gyro_x;gyro.y[i] = (gyro_y == INT16_MIN) ? INT16_MAX : -gyro_y;gyro.z[i] = (gyro_z == INT16_MIN) ? INT16_MAX : -gyro_z;

经过这样对 y, z轴的反转,最终传感器的测量值和机体坐标系NED一致了。这样做其实是很合理的,因为大多数imu和mag是布置在飞控的top,而不会把它们翻过来焊接在bottom。

那么当imu或者mag由于布线需要不是那样焊接的呢?那么这时请按上面的处理,把imu的出厂坐标系通过 y, z 翻转变为相似的NED坐标系。这个翻转后的传感器坐标系到机体坐标系的旋转就是我们要输入R

  • 传感器出厂坐标系为左手系的

这听起来很奇怪,居然有传感器坐标系是左手的。但是我们常用的ist8310还真就是这样的:

在这里插入图片描述

首先,PX4在驱动中进行了如下处理:

					// sensor's frame is +x forward, +y right, +z upz = (z == INT16_MIN) ? INT16_MAX : -z; // flip z

好了,看到这里结合前面的讲解,我想你肯定懂了?没错,就是把它出厂坐标系的z轴进行翻转,然后就得到了一个NED的坐标系。这个坐标系到机体坐标系的旋转就是我们要输入的R

总结: 基于上述传感器配置的描述,我们就可以自己随意安排传感器在飞控板上的布置了!


http://www.ppmy.cn/news/828878.html

相关文章

js驼峰与下划线转换

1、驼峰转下划线 function camelToUnderline(str) {return str.replace(/([A-Z])/g,"_$1").toLowerCase();}2、下划线转驼峰 function underlineToCamel(str) {return str.replace(/\_(\w)/g, (all,letter)>letter.toUpperCase())}

1 Ubuntu20.04安装D435i相机驱动

文章目录 1 D435i相机简介2 相机驱动的安装2.1 安装IntelRealSense SDK2.02.2 realsense-ros的安装 1 D435i相机简介 D435i相机是一个双目视觉深度相机&#xff0c;内部集成了IMU&#xff0c;支持在不同的操作系统使用&#xff0c;有开源的驱动包IntelRealsense SDK2.0. 相机通…

RK3588s imx415相机适配及ISP调优系列(二)--- mipi相机适配

上篇简单介绍了下最终效果&#xff0c;本篇开始将详细介绍相机适配、图像调优过程。 RK3588s imx415相机适配及ISP调优系列&#xff08;一&#xff09; 目录 1、RK3588S硬件配置及性能介绍1) MIPI CSI2) Vicap3) ISP 2、链接关系3、dtsi详细配置4、出图测试 1、RK3588S硬件配置…

Keil.STM32F1xx_DFP.2.4.0.pack

我真是服了&#xff0c;在官网下速度贼慢&#xff0c;国内找镜像源要么是2.3.0版本的&#xff0c;要么就链接失效&#xff0c;上CSDN找&#xff0c;喵的下个这玩意还要收费。我现在下好了&#xff0c;放在百度网盘里&#xff0c;如果用得到的话帮我点下赞&#xff0c;谢谢。 …

Ubuntu20.04 配置D435i相机

文章目录 一、安装使用 InterRealSenseD435i SDK21.注册服务器的公钥2.安装3.安装开发者和调试包4.测试SDK2 二、安装realsense-ros1.创建工作空间2.源码安装3.编译&#xff1a; 三、安装kalibr1.安装kalibr 依赖2.安装python-igraph 和 python3-pyx3.创建工作空间4.编译&#…

小红书笔记为什么没有流量,归纳总结

我们都知道小红书是一个内容分享类平台。小红书笔记是平台的主要内容形式。但有时候&#xff0c;我们撰写了一篇笔记&#xff0c;却无法搜索到&#xff0c;今天为大家分享下小红书笔记为什么没有流量&#xff0c;归纳总结&#xff01; 一、小红书笔记不被收录的原因 当我们精心…

APP测试要点有哪些?

我们日常购物、旅游、支付等活动都离不开手机&#xff0c;由此衍生了很多APP。 比如每天使用频率非常高的微信、支付宝、微博、抖音、王者荣耀等等。 APP测试主要进行功能测试、性能测试、自动化测试、安全性测试、兼容性测试、专项测试。 01、APP测试流程 APP测试流程与web测…

lenovo电脑如何进入Bios和Boot menu

1、不同型号按键不同&#xff0c;大多都为 F2或者fnF2 &#xff1b;另外也可试试F10、DEL等 进入Bios 2、一键U盘/DVD启动&#xff0c;快捷键一般为F12&#xff0c;也可以到bios-boot进行手动改成第一启动项。 另外 GPT-UEFI 、 MBR-Legacy 对应 3、以上都没反应&#xff0c…