PX4中混控器Mixer的分析

2024-08-31 06:32
文章标签 分析 px4 mixer 控器

本文主要是介绍PX4中混控器Mixer的分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PX4架构保证了核心控制器中不需要针对机身布局做特别处理。混控指的是把输入指令(例如:遥控器打右转)分配到电机以及舵机的执行器(如电调或舵机PWM)指令。对于固定翼的副翼控制而言,每个副翼由一个舵机控制,那么混控的意义就是控制其中一个副翼抬起而另一个副翼落下。同样的,对多旋翼而言,俯仰操作需要改变所有电机的转速。将混控逻辑从实际姿态控制器中分离出来可以大大提高复用性。

1 控制流程

一个特定的控制器(如姿态控制器)发送特定的归一化(-1..+1)的命令到给混合(mixing),然后混合后输出独立的PWM到执行器(电调,舵机等).在经过输出驱动如(串口,UAVCAN,PWM)等将归一化的值再转回特性的值(如输出1300的PWM等)。如图1所示。

2 控制组

PX4 有输入组和输出组的概念,顾名思义:控制输入组(如: attitude),就是用于核心的飞行姿态控制,(如: gimbal )就是用于挂载控制.一个输出组就是一个物理总线,如前8个PWM组成的总线用于舵机控制,组内带8个归一化(-1..+1)值,一个混合就是用于输入和输出连接方式(如:对于四轴来说,输入组有俯仰,翻滚,偏航等,对于于向前打俯仰操作,就需要改变输出组中的4个电调的PWM输出值,前俩个降低转速,后两个增加转速,飞机就向前)。对于简单的固定翼来说,输入0(roll),就直接连接到输出的0(副翼)。对于多旋翼来说就不同了,输入0(roll)需要连接到所有的4个电机。

Control Group #0 (Flight Control)
•	0: roll (-1..1)
•	1: pitch (-1..1)
•	2: yaw (-1..1)
•	3: throttle (0..1 normal range, -1..1 for variable pitch / thrust reversers)
•	4: flaps (-1..1)
•	5: spoilers (-1..1)
•	6: airbrakes (-1..1)
•	7: landing gear (-1..1)
Control Group #1 (Flight Control VTOL/Alternate)
•	0: roll ALT (-1..1)
•	1: pitch ALT (-1..1)
•	2: yaw ALT (-1..1)
•	3: throttle ALT (0..1 normal range, -1..1 for variable pitch / thrust reversers)
•	4: reserved / aux0
•	5: reserved / aux1
•	6: reserved / aux2
•	7: reserved / aux3
Control Group #2 (Gimbal)
•	0: gimbal roll
•	1: gimbal pitch
•	2: gimbal yaw
•	3: gimbal shutter
•	4: reserved
•	5: reserved
•	6: reserved
•	7: reserved (parachute, -1..1)
Control Group #3 (Manual Passthrough)
•	0: RC roll
•	1: RC pitch
•	2: RC yaw
•	3: RC throttle
•	4: RC mode switch
•	5: RC aux1
•	6: RC aux2
•	7: RC aux3
Control Group #6 (First Payload)
•	0: function 0 (default: parachute)
•	1: function 1
•	2: function 2
•	3: function 3
•	4: function 4
•	5: function 5
•	6: function 6
•	7: function 7

 

3 混控文件的定义

ROMFS/px4fmu_common/mixers中的文件实现了预定义机架所使用的混控器。它们可以用于自定义机架或者一般的测试。

3.1 语法

mixer通过文本文件定义;以单个大写字母加一个冒号开始的行是有效的。其它的行则会被忽略,这意味着注释可以自由地在定义中穿插使用。
每个文件可以定义多个混控器;混控器与作动器的分配关系由读取混控器定义的设备决定,作动器输出数目则由混控器决定。
例如:每个简单混控器或者空混控器按照它们在混控器文件中出现的顺序对应到输出1到输出x。一个混控器定义通常具有如下形式:
<tag>: <mixer arguments>
tag标签决定混控器的类型;M对应简单求和混控器,R对应多旋翼混控器,等等。

3.2 空混控器

空混控器不接受控制输入并产生单个作动器输出,其输出值恒为零。空混控器的典型用法是在一组定义作动器特定输出模式的混控器组中占位。空混控器定义形式如下:
Z:

3.3 简单混控器

简单混控器将0个或多个控制输入混合为单个作动器输出。所有输入被缩放后,经过混合函数得到混合后的输入,最后再经过输出缩放产生输出信号。简单混控器定义如下:
M: <control count>
O: <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>
如果 <control count> 为0,那么混合结果实际上为0,混控器将输出一个定值,这个值是在<lower limit>和<upper limit>限制下的<offset>。第二行用前文讨论过的缩放参数定义了输出缩放器。计算以浮点操作被执行,存储在定义文件中的值经过了因子10000的缩放,即偏移量-0.5会被存储为-5000。紧跟在<control count>词目之后的定义描述了控制输入以及它们的缩放,形式如下:
S: <group> <index> <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>
<group>值标示了控制输入来源,缩放器从中读取控制量,<index>值则是控制量在组内的序号。这些值对读取混控器定义的设备而言都是特定的。当用来混合载体控制时,控制组0是载体姿态控制组,序号0到3通常对应滚转,俯仰,偏航和油门。混控器定义行中剩下的域则用来配置缩放器,参数如前文讨论。计算以浮点操作被执行,存储在定义文件中的值经过了因子10000的缩放,即偏移量-0.5会被存储为-5000。
 

4 固定翼混控的简单分析

分析一下固定翼Wing Wing Z-84的混控器设计,机型如图2所示。它的混控文件为wingwing.main.mix。这个机型只有左右副翼和一个电机。

其中左右副翼的链接输出通道的0和1,电机链接输出通道3,对于输出通道2则闲置。输入通道来源于通道0(飞机姿态),通道0中,Roll、Pitch、thrust分别对于0,1,3(这里好像不支持Yaw的控制)。混控器的设置由图3所示。由于左右两个舵机在物理上是反向的,所以对于Pitch的输入也需要做反向处理。

混控文件是这样的

混控器中第一行M:2表示输出0需要对下面两个通道的的输入做简单的加法混控。O:      10000  10000      0 -10000  10000代表负值正值的缩放比例都为1000,偏置为0,最大最小输出范围为-10000到10000。后面两行S开头的代表需要做混控的输入,第一行是对输入Roll的处理,第二行是对输入Pitch的处理。同理第二个M:2是混控得到输出1。

举个简单的例子,Roll的输入为0,加入当前Pitch的输入为0.1。执行前两个混控后,得到的输出为,通道0的输出为650,通道1的输出为-650,按理说对Pitch的控制,两个副翼的角度应该是一样的,但是因为两个舵机在以上的安放位置相反,所以输出也相反。
对于通道3的输出就只有油门了,对油门进行缩放即可。

5 多旋翼混控的简单分析

多旋翼的的混控那最简单的四轴X模式来分析,先分析混控文件,如图4所示。四周的混控文件非常简单,R: 4x 10000 10000 10000 0表示的意思为,R:旋翼混控器,4x:四轴X模式,后面的3个10000是Roll、Pitch、Yaw的缩放比例,0为死区范围。而后面的两个混控器是准备别的辅助通道混控,Roll、Pitch、Yaw的混控并不在这个混控文件里面,因为四轴一个电机的输出和Roll、Pitch、Yaw、thrust都有关系,所以四轴的混控在mixer_multirotor.cpp中完成。

对于不同的旋翼机型会定义不同的混控数组,四轴X模式的数组如图5所示。其中每一行对应一个电机的输出,每一列对于Roll、Pitch、Yaw、Thrust的输入。

在mixer_multirotor.cpp文件中会先计算先根据Roll、Pitch的输入计算出混控器的输出,然后根据电机是否饱和缩放后,再次加入Yaw叫输入的混控,最后加入油门的混控。

6 饱和的处理

处理的代码如下图

1 根据混控矩阵计算得到out,这一步已经包含油门,同时记录下最大输出和最小输出,outputs保存四个电机的输出值。

2 第一种情况,min小于0,max大于0,min,max之差小于1,可以通过偏移解决。加油油门增加幅度大于|min|,可以通过增加油门的方式解决,boost = -min_out;如果油门增加幅度太小,需要把roll和pitch的缩小后再计算。

举个例子,当前thrust为0.2,计算得到新的输出值之后,min为-0.2,max为0.6,roll和pitch带来转速上的变化是0.4,由于只计算了Roll和Pitch,所以在旋翼里面,min和max到thrust的距离一定是一样的。这种情况就是第一种情况,并且油门增大幅度为0.2*0.5=0.1,不足以平衡min的大小。需要对Roll和Pitch进行缩放。计算得到boost=0.1,roll_pitch_scale=0.75,然后再计算下面的代码。可以知道min=0,max=0.6,没有饱和。

这篇关于PX4中混控器Mixer的分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据