姿态解算

2024-05-05 07:32
文章标签 姿态 解算

本文主要是介绍姿态解算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:http://www.crazepony.com/wiki/attitude-algorithm.html

姿态解算简介

作者:nieyong

本文需要讲清楚在无人机飞行器算法中,什么是姿态,怎么表示姿态,如何得到姿态。

什么是姿态

姿态就是指飞行器的俯仰/横滚/航向情况。在咱们地球上,就是指飞行器在地球坐标系中的俯仰/横滚/航向情况。飞行器需要实时知道当前自己的姿态,才能够根据需要操控其接下来的动作,例如保持平稳,例如实现翻滚。

下面是学术型的严密论述。

数学模型

姿态是用来描述一个刚体的固连坐标系和参考坐标系之间的角位置关系,有一些数学表示方法。很常见的就是欧拉角,四元数,矩阵,轴角。

地球坐标系又叫做地理坐标系,是固定不变的。正北,正东,正向上构成了这个坐标系的X,Y,Z轴,我们用坐标系R表示。四轴飞行器上固定着一个坐标系,我们一般称之为机体坐标系,用坐标系r表示。那么我们就可以用欧拉角,四元数等来描述r和R的角位置关系。这就是四轴飞行器姿态解算的数学模型和基础。

姿态表示方式

姿态有多种数学表示方式,常见的是四元数,欧拉角,矩阵和轴角。他们各自有其自身的优点,在不同的领域使用不同的表示方式。在四轴飞行器中使用到了四元数欧拉角。Crazepony开源四轴飞行器也是一样的。

四元数

四元数是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念。从明确地角度而言,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话,四元数就代表着一个四维空间,相对于复数为二维空间。

四元数大量用于电脑绘图(及相关的图像分析)上表示三维物件的旋转及方位。四元数亦见于控制论、信号处理、姿态控制、物理和轨道力学,都是用来表示旋转和方位。

相对于另几种旋转表示法(矩阵,欧拉角,轴角),四元数具有某些方面的优势,如速度更快、提供平滑插值、有效避免万向锁问题、存储空间较小等等。

以上部分摘自维基百科-四元数。

欧拉角

莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。参考系又称为实验室参考系,是静止不动的。而坐标系则固定于刚体,随着刚体的旋转而旋转。

以上部分摘自维基百科-欧拉角。下面我们通过图例来看看欧拉角是如何产生的,并且分别对应哪个角度。

姿态解算

姿态解算需要解决的是无人机飞行器在地球坐标系中姿态。

姿态解算的英文是attitude algorithm,也叫做姿态分析,姿态估计,姿态融合。姿态解算是指根据IMU数据(陀螺仪、加速度计、罗盘等)求解出飞行器的空中姿态,所以也叫做IMU数据融合(IMU Data Fusing)。

角位置关系测量

如上所说,地球坐标系R是固定的。四轴飞行器上固定一个坐标系r,这个坐标系r在坐标系R中运动。那么如何知道坐标系r和坐标系R的角位置关系呢,也就是怎么知道飞行器相对于地球这个固定坐标系R转动了一下航向,或者侧翻了一下机身,或者掉头下栽。这就是传感器需要测量的数据,传感器包括陀螺仪,加速度计,磁力计。通过获得这些测量数据,得到坐标系r和坐标系R的角位置关系。

惯性测量模块:IMU(Inertial Measurement Unit),提供飞行器在空间姿态的传感器原始数据,一般由陀螺仪传感器/加速度传感器/电子罗盘提供飞行器9DOF数据。

飞行器根据陀螺仪的三轴角速度对时间积分得到的俯仰/横滚/航向角,这是快速解算。快速解算得到的姿态是存在误差的,而且误差会累加,如果再结合三轴地磁和三轴加速度数据进行校正,得到准确的姿态,这就是深度解算

当然,快速解算的姿态一般是不能够用于控制飞行器的,因为误差太大。我们一般说的姿态解算就是深度解算。

四元数和欧拉角在姿态解算中如何使用

姿态解算的核心在于旋转,一般旋转有4种表示方式:矩阵表示、欧拉角表示、轴角表示和四元数表示。矩阵表示适合变换向量,欧拉角最直观,轴角表示则适合几何推导,而在组合旋转方面,四元数表示最佳。因为姿态解算需要频繁组合旋转和用旋转变换向量,所以采用四元数保存飞行器的姿态。

在Crazepony中,使用四元数来保存飞行器的姿态(也就是在地球坐标系中的俯仰/横滚/航向情况)。在需要控制的时候,会将四元数转化为欧拉角,然后输入到姿态控制算法中。

姿态控制算法的输入参数必须要是欧拉角。

下面就是Crazepony开源四轴飞行器上,姿态解算到姿态控制的整个流程。AD值是指MPU6050的陀螺仪和加速度值,3个维度的陀螺仪值和3个维度的加速度值,每个值为16位精度。AD值通过姿态解算算法得到飞行器当前的姿态(姿态使用四元数表示),然后将四元数转化为欧拉角,用于姿态控制算法(PID控制)中。

姿态解算算法

如何根据IMU提供的数据(三轴陀螺仪,三轴加速度计,电子罗盘数据),得到准确的姿态呢?

飞行器中的姿态一般使用四元数表示。只有当需要输入到控制算法的时候,才会将四元数转化为欧拉角。

常见的算法有下面几种:

  • 非线性互补滤波算法
  • 卡尔曼滤波算法
  • Mahony互补滤波算法(Crazepony开源四轴飞行器使用这种)

这篇关于姿态解算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961134

相关文章

数据集 3DPW-开源户外三维人体建模-姿态估计-人体关键点-人体mesh建模 >> DataBall

3DPW 3DPW-开源户外三维人体建模数据集-姿态估计-人体关键点-人体mesh建模 开源户外三维人体数据集 @inproceedings{vonMarcard2018, title = {Recovering Accurate 3D Human Pose in The Wild Using IMUs and a Moving Camera}, author = {von Marc

数据集 Ubody人体smplx三维建模mesh-姿态估计 >> DataBall

Ubody开源人体三维源数据集-smplx-三维建模-姿态估计 UBody:一个连接全身网格恢复和真实生活场景的上半身数据集,旨在拟合全身网格恢复任务与现实场景之间的差距。 UBody包含来自多人的现实场景的1051k张高质量图像,这些图像拥有2D全身关键点、3D SMPLX模型。 UBody由国际数字经济学院(IDEA)提供。 (UBody was used for mesh r

Kaggle克隆github项目+文件操作+Kaggle常见操作问题解决方案——一文搞定,以openpose姿态估计项目为例

文章目录 前言一、Kaggle克隆仓库1、克隆项目2、查看目录 二、安装依赖三、文件的上传、复制、转移操作1.上传.pth文件到input目录2、将权重文件从input目录转移到工作目录 三、修改工作目录里的文件内容1、修改demo_camera.py内容 四、运行! 前言 想跑一些深度学习的项目,但是电脑没有显卡,遂看向云服务器Kaggle,这里可以每周免费使用30h的GP

【AIGC】MimicMotion:姿态引导的高质量人体运动视频生成技术

资源 论文:https://arxiv.org/pdf/2406.19680 github:https://github.com/Tencent/MimicMotion comfyui:https://github.com/kijai/ComfyUI-MimicMotionWrapper 核心要点 1. confidence-aware pose guidance可以确保高质量视频和时间

SLAM ORB-SLAM2(29)PnP估计姿态

SLAM ORB-SLAM2(29)PnP估计姿态 1. PnP问题2. EPnP算法2.1. 计算4对控制点的世界坐标2.2. 计算齐次质心坐标2.3. 计算4对控制点的相机坐标2.3.1. 构造M矩阵2.3.2. 计算 M T M M^TM MTM的0特征值对应的特征向量2.3.3. 计算零空间的秩2.3.4. 计算线性组合的系数 2.4. 选择最小重投影误差 3. 标题

End-to-End视觉里程计新突破:从运动模糊图像中精确估计相机姿态

更多优质内容,请关注公众号:智驾机器人技术前线 1.论文信息 论文标题:MBRVO: A Blur Robust Visual Odometry Based on Motion Blurred Artifact Prior 作者:Jialu Zhang, Jituo Li*, Jiaqi Li, Yue Sun, Xinqi Liu, Zhi Zheng, and Guodong Lu

姿态识别+康复训练矫正+代码+部署

YOLO-NAS姿势模型是对姿势估计领域的最新贡献。今年早些时候,Deci凭借其开创性的目标探测基础模型YOLO-NAS获得了广泛认可。在YOLO-NAS成功的基础上,该公司现在推出了YOLO-NAS Pose作为其Pose Estimation对应产品。这个姿势模型在延迟和准确性之间提供了一个极好的平衡。 姿态估计在计算机视觉中起着至关重要的作用,涵盖了广泛的重要应用。这些应用

姿态识别 python 效果好,提供多种精准模型

该项目是一款基于Python的AI健身教练系统,它利用先进的姿态识别技术来帮助用户进行正确的运动姿势训练。该系统可以识别并纠正用户在做特定运动时的姿势,比如深蹲、仰卧起坐、步行等。 技术栈: 编程语言:Python深度学习框架:可以使用TensorFlow、PyTorch等姿态识别模型:项目提供了多种高精度的模型,包括但不限于基于卷积神经网络(CNN)的模型、基于Transformer架

姿态识别 python 效果好,提供多种精准模型欢

该项目是一款基于Python的AI健身教练系统,它利用先进的姿态识别技术来帮助用户进行正确的运动姿势训练。该系统可以识别并纠正用户在做特定运动时的姿势,比如深蹲、仰卧起坐、步行等。 技术栈: 编程语言:Python深度学习框架:可以使用TensorFlow、PyTorch等姿态识别模型:项目提供了多种高精度的模型,包括但不限于基于卷积神经网络(CNN)的模型、基于Transformer架构

基于 YOLOv8n-pose 模型的图像特征提取,可用于识别特定的姿态

目录 1. __init__ 方法:初始化类的实例 2. save_pose_feat 方法: 3. load_db_pose_feat 方法: 4. cal_similarity 方法: 实现了一个基于 YOLOv8n-pose 模型的图像特征提取和相似性比较系统。它可以从图像中提取人体关键点信息,并将其保存为特征文件。然后,通过计算输入图像与数据库中图像特征的相似度,确定输入