深入解读四轴飞行器的硬件设计

2023-05-16



转载自:http://www.openedv.com/posts/list/20892.htm


传感器之一:角速度传感器应用科里奥利力原理:科里奥利力来自于物体运动所具有的惯性,在旋转体系中进行直线运动的质点,由于惯性的作用,有沿着原有运动方向继续运动的趋势,但是由于体系本身是旋转的,在经历了一段时间的运动之后,体系中质点的位置会有所变化,而它原有的运动趋势的方向,如果以旋转体系的视角去观察,就会发生一定程度的偏离。当一个质点相对于惯性系做直线运动时,相对于旋转体系,其轨迹是一条曲线。立足于旋转体系,我们认为有一个力驱使质点运动轨迹形成曲线,这个力就是科里奥利力。

角速度传感器的通常被应用于检测物体的移动。举个例子,一个人朝着一个固定方向在直线前进,从太空来看,这个人其实是以一定的角度在旋转前进。通过检测这个角速度,我们就能够只物体是否在移动。

在四轴飞行器中,通过对不同方向的角速度检测,我们就能够知道飞行器的运动方向。常用的运动方向检测包括X方向,Y方向,Z方向,即通常所说的三轴角速度传感器,也称3轴陀螺仪。

传感器之二:四轴飞行器所用到的加速度传感器也叫重力感应器,用于测量设备相对于水平面的倾斜角度。那么它的测量原理是什么呢? 我们知道,任何地球上的物体都会受到重力的作用。我们先来回顾下重力的计算公式:G=mg. 其中的g就是重力加速度,其值是9.8牛每千克。根据我们中学所学的物理知识可以知道,一个放置于斜面上的物体所受到的重力可以分解为两个方向:平行于物体的方向和垂直于物体的方向。那么对于斜角是@的物体,重力加速度g可以分解为X方向的sin@和Y方向的cos@,从而可以得到X方向的重力作用Fx=mg.sin@ 以及Y方向的重力作用 Fy=mg.cos@. 重力感应器把这两个力转化成电压信号,我们通过读取该电压信号,即可以计算中物体的倾斜角度。另外我们必须注意的是,运动中的物体所测量出来的倾斜角度是不准确的,原因是运动中的物体,由于不同角度的加速度的叠加,使得物体各个方向的力不能准确代表由于倾斜所产生的重力,因而使用中要注意到这一点。
初学者可能有个疑虑,为什么这个不直接叫重力传感器,而叫加速度传感器呢。实际上加速度传感器能感性各种各样的加速度,而不单单是地球重力加速度。 我们在四轴飞行器中把它称作重力传感器是因为我们只需要用对重力加速度进行检测,从而获得四轴飞行器相对于地面的倾斜角度。
简单的来说,加速度传感器的制造原理就是把压力转化为电信号。多数加速度传感器都是根据压电效应的原理来工作的。所谓压电效应,即使某些电介质在沿一定方向上受到外力的作用而变形时,其内部会产生极化现象,同时在它的两个相对表面上出现正负相反的电荷。通过测量这些电荷,并转化为电压信号输出,即完成了加速度传感器的制造。

常用的角速度和加速度传感器合一的模块有MPU6050,目前已经某宝已经有串口的MPU6050模块了。

传感器之三:地磁传感器,即数字罗盘,我们都知道它是用来确定方向的。它利用地磁场来定北极,其基本原理和我们熟知的指南针差不多。三维地磁传感器通过给出在X轴,Y轴和Z轴上的地磁力投影,可以提供活动物体的航向角 、俯仰角和横 滚角,从而可以确定物体 的姿 态,实际 上 就是确定了物体坐标系与地理坐标系之间的方位关系。不过在实际应用中,需要注意周围物体所产生出来的磁场对传感器造成的干扰。

传感器之四:气压传感器,用于测量物体所在平面的高度。气压是由地表空气的重力所产生的。海拔高的地方,地表的空气厚度小,气压低;海拔低的地方,地表的空气厚度大,气压高。通过测量所在地的大气压值,与标准值比较,就可以获得物体所在位置的高度。这就是气压高度计的基本测量原理。在实际应用中,需要结合温度等对测量结果进行修正。

四轴飞行器传感器之总汇: 在上面的各个章节中,分别介绍了角速度传感器,加速度传感器,地磁传感器和气压传感器。除了气压传感器外,余下的三个传感器均能提供X,Y,Z三轴的测量数据,综合在一起,可以称做10轴传感器。 我们知道,传感器是根据大自然的现象进行测量的一种器件。为了方便大家更好理解各个传感器的功能,我们总结如下:
1)        加速度传感器:利用了地球万有引力,把重力加速度投影到X,Y,Z轴上,测量出物体的姿势。
2)        地磁传感器:利用了地球南北极的磁场所产生的吸力,并投影到X,Y,Z轴上,测量出物体的方位和姿态。
3)        角速度传感器:利用旋转物体的旋转轴所指的方向在不受外力影响时的不变性,测量外力对物体的影响。跟地球万有引力和地球南北极的磁力具有固定方向性不同,旋转物体的旋转轴方向是不确定的,因而角速度传感器只能用来测量位置改变,而无法像加速度传感器和地磁传感器那样,测量出物体的绝对角度和姿势。我们必须要注意,角速度传感器输出的角速度是瞬时量,它的测量基准是自身,并没有系统外的绝对参照物。
4)        气压传感器:利用空气的压力,测量出物体所在位置的高度。

从上面的描述可知,除了气压传感器外,加速度传感器,地磁传感器和角速度传感器均可以用于对物体的姿势进行检测,从而对四轴飞行器平衡进行控制。那么它们的缺点分别是什么呢?
首先我们来看地磁传感器:
我们知道,磁场是非常容易发生干扰的。所谓电磁效应,即电场会产生磁场,而磁场又会产生电场。我们我们单纯用地磁传感器来控制四轴飞行器的平衡,那么一个电器产生的磁力感应有可能被误认为是飞行器的姿势发生了改变,从而引起微处理器改变电机的平衡转速,从而导致四轴飞行器失去平衡。大家知道飞行器中最容易产生磁场的就是电机,也就是说,电机不通电能够测出地磁场,一通电,磁场传感器就傻了。如果您做的不是静态模型,那我还是建议您不要考虑磁场了,为自己省点银子。

对于加速度传感器,我们知道运动中的物体会产生包括重力加速度在内的各种各样的加速度。当四轴飞行器起飞的一霎那,由于电机转速本身的重量和转速误差,我们无法感知飞行器本身的受力情况,从而无法通过加速度来判别物体的姿势。要获得准确的物体角度和姿势,加速度传感器就需要在静止或者匀速的情况下进行测量,而飞行器起飞的瞬间,物体是运动的,所以你无法用它来平衡四轴飞行器。
角速度传感器是理想的平衡控制传感器,它能感知物体的运行变化。四轴飞行器的微处理器通过读取这些数据进行分析,并根据运动变化进行反馈控制,即可以使得物体保持平衡。四轴飞行器在起飞瞬间,飞行器在四个电机的作用力下,开始运动,由于不同电机的驱动力差异,飞行器姿势会发生改变,微处理器获得这些改变后,微调各个电机的转速,从而使得飞行器达到平衡。
那么只有角速度传感器的四轴飞行器可以飞吗? 理论上是可行的,但是正像我们前面提到那样,角速度传感器无法绝对定位自己的位置和姿势。 它只是感知物体的姿势改变,然后通过微控制器来阻止这种改变,从而获得平衡。简单来说,四轴飞行器起飞瞬间,如果它的位置是斜的,那么它平衡后,位置也是斜的,因为它无法知道自己的初始状态。所以只有角速度传感器的四轴飞行器无法水平飞行,无法感应飞行姿势,也无法修正飞行姿势。此外,还需要注意,角速度传感器输出的瞬时量其实并不适合于用来直接进行平衡控制。关于平衡控制,我们将来接下来的章节谈到。

至于气压传感器,那就单纯是测量飞行器高度,可用于导航。有没有,对四轴飞行器影响不大。
大家知道飞行器中最容易产生磁场的就是电机,也就是说,电机不通电能够测出地磁场,一通电,磁场传感器就傻了。如果您做的不是静态模型,那我还是建议您不要考虑磁场了,为自己省点银子。

四轴飞行器传之平衡和姿势控制:
上述各个章节对传感器进行了具体描述,下面谈下如何进行四轴飞行器传的平衡和姿势控制。开始这部分描述前,大家必须不要混淆加速度传感器和角速度传感器。 角速度传感器也有人叫角加速度传感器,不过不要小看这个“角”字,一字之差,千里之别。如果你还是无法区分它们,建议在读本节之前,先重新复习下上面各章节。
前面说到,角速度传感器输出的角速度是瞬时的角加速度量,一般的平衡控制系统不能直接使用它。我们需要得到角度的变化量来进行平衡控制,这就需要使用角速度和时间进行积分运算,从而得到角度的变化量。然后这个角度的变化量就能用于平衡控制。所以在实际的四轴飞行系统中,首先要对角速度传感器做 PI运算。PI是比例积分控制,是滞后校正,它是PID(比例/积分/微分)发展起来的一种PID改进算法。P是指比例控制,其控制器的输出与输入误差信号成比例关系。I是指积分控制,控制器的输出与输入误差信号的积分成正比关系。
PID是一种闭环控制算法,必须在硬件上具有闭环系统,即控制系统和反馈系统。PID(比例/积分/微分)并不是必须同时具备三种算法,可以是PD,PI,甚至P算法控制。单纯的P算法控制是最简单的,以四轴飞行器为例,就是把角加速度数据读回来,是正就电机加速,是负就电机减速,或做相反控制。对于单纯的P(比例)控制,反映系统的当前状态,可以通过加快调节来减小误差,但是使系统稳定性下降,甚至造成系统不稳定。   I(积分)和D(微分)不能单独起作用,必须和P(比例)控制配合使用,   I(积分)反映系统的累计偏差,使系统消除稳态误差。D(微分)反映系统偏差信号的变化率,具有预见性,从而进行超前控制。四轴飞行器只用到PI算法。关于PI算法的更多知识,我们将会在后续的章节中陆续谈到。
理论上,如果我们知道物体的初始姿势,通过角速度传感器的上述积分运算,我们也能得到物体的最终姿势,但是,我们知道积分运算是有误差的,随着时间的流逝,误差越来越大,最终这个计算出来的变化的角度就和实际的角度相差较远。从而导致姿势和我们预想的发生偏差。
加速度传感器是以重力作为参考力方向的,在无外力的情况下,测量出来的是物体的绝对姿势。但是它无法区分重力加速度和外力加速度。因为运动中的四轴飞行器同时受到重力和外力的作用,所以加速度传感器的姿势输出也无法反映飞行器最真实的姿态。
所以在没有其它参照物的基础上,就要充分了解这两种传感器的特性,扬长避短,在短时间内使用角加速度的值,在长时间内使用加速度的值进行校正,从而得到接近真实值的姿势。加速度与角速度融合求解姿态最正确的方法是利用动态卡尔曼滤波进行输出,它能够自动根据观测量修正状态参量,但是卡尔曼滤波算法比较复杂,非常难懂。没有一定的功底是不好做的。好在现在淘宝上面有一款串口的MPU6050模块,里面集成了卡尔曼滤波和姿态解算算法,能够动态修正陀螺的累积误差,也算是大家的福音了。本人测试漂移抑制得挺好,其动态精度还算可以。附上传感器的图片。

所以在一个四轴飞行器系统中,对角速度传感器进行PI运算,四轴飞行器就有了瞬时的增稳,能够进行飞行,由于累积的误差作用,很快中心点就会偏离水平位置,通过使用姿态角度输出进行纠正,就能使得四轴飞行器的中心点保持在水平位置,实现平衡飞行。

四轴飞行器线路图规划:

上面详述了四轴飞行器所用的各传感器资料,下面开始线路图规划。

1)        四轴飞行器总指挥:STM32是首选,资料多,容易买。用STM32F103就差不多了 。

2)        四轴飞行器后勤:电源是四轴飞行的保证,采用4手机锂电池,充电芯片就用TP4056之类吧。充电接口采用USB接口,顺便整合USB Bootloader以方便算法升级

3)        通讯接口,那就选用2.4G无线通讯NRF24L01

4)        传感器就用6轴角加速度+加速度传感器:串口MPU-6050,磁场的可用性不高,主要是环境干扰严重,先不采用。气压高度计用处不大,体积不小,不确定是否使用

5)         再加上电源芯片,采用低压差的LDO从锂电池直接生成3.3V。

该有的差不多了,更多的功能慢慢扩展吧 。

遥控器部分暂时采用电脑, 采用USB+2.4G无线通讯NRF24L01。为了方便对飞行算法进行调试,计划STM32暂时不做算法运行,只采集各传感器数据回到电脑,电脑分析后,发出指令给各电机,控制姿势 。

遥控器上位机软件采用VB或者Labview。 后者在图表,三维方面具有很大的编程优势。

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

深入解读四轴飞行器的硬件设计 的相关文章

  • docker镜像仓库

    前言 镜像 xff0c 可以理解为将应用程序和运行环境打包成 应用模板 xff0c 是容器的上层抽象 容器是镜像的运行实例 xff0c 启动时传入相应的参数 xff0c 即可运行应用程序 二者的关系类似于代码中的 类和对象 要以容器的方式运
  • 杂谈我的IT梦

    误打误撞进入IT 我个人认为我还有是属于能说会道的 xff0c 比较善于与人沟通 xff0c 表达能力也可以 xff0c 所以当初我准备选的专业是医药营销 xff0c 因为那个时候根据我的分析 xff0c 医药是个很可观的赚钱领域 xff0
  • Ubuntu更新sudo apt update库报错

    sudo apt update报错 evyn 64 ubuntu sudo apt update E 文件 list 第 1 行的记录格式有误 etc apt sources list d ros latest list Suite E 无
  • 孤立森林(Isolation Forest)从原理到实践

    异常检测 离群点是在给定数据集中 xff0c 与其他数据点显著不同的数据点 异常检测是找出数据中离群点 和大多数数据点显著不同的数据点 的过程 离群点 真实世界中的大型数据集的模式可能非常复杂 xff0c 很难通过查看数据就发现其模式 这就
  • 一个C++程序员的学习经历

    正在上网的时候有这个念头的 xff0c 所以急急忙忙找了一些学习编程的高人的感想 xff1a 我开始学VC时就是自己一个人在啃 xff0c 也没什么人指导 xff0c 当时没有条件上网 xff0c 资料特别少 xff0c 在书店里随便买本书
  • Mac mini 2018 win10 外接显卡终极教程

    Mac mini 2018 win10 外接N卡应该算是最简单了 但是有些小问题 xff0c 比如说总是需要插拔雷电3的线材 xff0c 对于强迫症或者偏执来说总是感觉不爽 一种解决方案是用refind 启动方法 xff0c 将refind
  • Layui上传系列之二(多文件分块上传优化实现)

    接下来 xff0c 就要实现layui的uploader分块上传了 xff0c 在官网上没有提到分块上传 xff0c 倒是有一个多文件选择后 xff0c 显示文件列表的例子 目录 现状分析 我的做法 功能优化 上代码了 现状分析 对于我们能
  • tigervnc+noVNC远程使用RViz

    写在前面 遇到了远程桌面访问ubuntu系统并使用RViz的需要 xff0c 试了常用的vnc4server xff0c 在没有外接显示器的情况下 xff0c vnc4server需要虚拟一个显示器出来 xff0c 虚拟显示器可以使用Xvf
  • VINS-Mono融合轮式编码器和GPS(三):后端优化

    VINS Mono融合轮式编码器和GPS xff08 三 xff09 xff1a 后端优化 开篇介绍理论目标函数IMU约束1 残差2 优化变量3 Jacobian4 协方差 实践配合代码查看 开篇 项目地址VINS GPS Wheel xf
  • ROS-Gazebo (一):关于Gazebo无法加载模型,长时间卡在开始界面的问题解决方法

    在使用ROS Gazebo的过程中首先遇到的问题就是长时间加载不出模型 来 通常的解决方法是 从官方模型库下载号所有的基本模型 然后解压到 gazebo models文件夹里面就可以了 具体的下载地址和详细的操作方式可以 百度或者谷歌 34
  • 用SST89E516RD自制51单片机仿真器

    原文网址 xff1a http www1 eccn com tech06 te074653 asp 用SST89E516RD自制51单片机仿真器 文 xff0f 吴汉清 单片机实验和开发中最重要的一个环节就是程序的调试 xff0c 在业余条
  • Latex (一) 安装和环境变量的设置

    一 安装 Tex有很多不同的版本 xff0c 很多人喜欢用ctex xff0c 但是最推荐是官方版本Texlive 搜了很多资料 xff0c 一般windows的话 xff0c 可以将Tex live 43 Tex studio作为标配 x
  • KITTI 数据集 参数—— tracking devkit中的rotation_y和alpha角

    根据devkit中的readme txt和cs overview pdf的描述以及根据通过对数据集做的小实验总结的 xff0c 如果过有错误的地方欢迎指正 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 拯救者Y7000P 安装Ubuntu16.04问题解决

    先列一下问题 xff1a 1 wifi开不来了 xff1b 2 触摸板没法用 3 休眠后打不开 目前1 3 xff0c 解决了 xff0c 但是2依然没法解决 xff0c 不过问题不大 xff0c 大不了用鼠标 首先 xff0c 问题的原因
  • VSCode python调试库代码以及添加相关扩展支持opencv

    调试python 代码的时候可以再launch json 文件中添加 justMycode 34 false 来调试安装的包的代码 由于opencv 底层调用的C xff0c 所以如果要在代码提示中正确提示可能要安装额外插件 xff1a 比
  • vscode python包的引用一些问题

    个人使用vscode碰到的一些python包的引用问题以及尝试解决的一些办法 xff0c 可能只适用我自己的情况 项目目录大概如下 xff1a lib是根目录下的一个文件夹 xff0c 里面每个文件夹都是一个python 包 xff0c 都
  • MATLAB 矩阵的化简rref()函数

    在用MATLAB求解线性方程组的时候 xff0c 可以使用 rref 函数对矩阵进行化简 xff0c 从而很方便直观的得到原方程的解 xff0c 举一个简单的例子 xff1a 解下列线性方程组 则用MATLAB的rref函数解上述方程组的代
  • MATLAB求符号函数的函数值的方法

    在MATLAB中定义函数的方法有许多种 xff0c 比较常用的一种是定义符号变量 x 和 y 举一个简单的例子 xff1a 对函数 y 61 x 2 用上述方法的MATLAB语言如下 xff1a syms x y y 61 x 2 要想画出
  • C++寻找数组最大值和最小值

    寻找数组中的最大最小值 include lt iostream gt using namespace std include lt algorithm gt int main int n cin gt gt n int p 61 new i

随机推荐