Pixhawk学习3——Mixer函数分析

Pixhawk是一个通用型飞控,支持了各种多旋翼、固定翼、复合翼、尾座式、倾转式等等机型。对于这么多类型的飞机,其执行机构都各不相同。但从飞行控制原理上来讲,任何刚体的运动都可以描述成为六自由度模型(三个姿态运动和三个位置运动),而飞机的水平位置往往都要通过姿态调整来实现,也就是说,对于飞机来讲,所要控制的变量都是横滚、俯仰、偏航和油门这几个量。
因此,Pixhawk中根据不同的飞机类型定义了一系列Mix混控函数,采用飞控中共用的姿态解算模块算出来的拉力和三个姿态力矩的量,根据不同类型飞机执行机构的分布,通过缩放、限幅、偏置、运算等计算方法最终得到执行机构的指令。
以ROMFS/px4fmu_common/mixers/X5.main.mix中的三角翼为例进行讲解。

Delta-wing mixer for PX4FMU
===========================

This file defines mixers suitable for controlling a delta wing aircraft using
PX4FMU. The configuration assumes the elevon servos are connected to PX4FMU
servo outputs 0 and 1 and the motor speed control to output 3. Output 2 is
assumed to be unused.

Inputs to the mixer come from channel group 0 (vehicle attitude), channels 0
(roll), 1 (pitch) and 3 (thrust).

See the README for more information on the scaler format.

Elevon mixers
-------------
Three scalers total (output, roll, pitch).

On the assumption that the two elevon servos are physically reversed, the pitch
input is inverted between the two servos.

The scaling factor for roll inputs is adjusted to implement differential travel
for the elevons.

M: 2
O:      10000  10000      0 -10000  10000
S: 0 0  -8000  -8000      0 -10000  10000
S: 0 1   6000   6000      0 -10000  10000

M: 2
O:      10000  10000      0 -10000  10000
S: 0 0  -8000  -8000      0 -10000  10000
S: 0 1  -6000  -6000      0 -10000  10000

Output 2
--------
This mixer is empty.

Z:

Motor speed mixer
-----------------
Two scalers total (output, thrust).

This mixer generates a full-range output (-1 to 1) from an input in the (0 - 1)
range.  Inputs below zero are treated as zero.

M: 1
O:      10000  10000      0 -10000  10000
S: 0 3      0  20000 -10000 -10000  10000

三角翼的输入为油门、俯仰、横滚三个量,输出为左右副翼和油门三个量。Pixhawk中按照横滚、俯仰、偏航、油门顺序标号为0、1、2、3。

矩阵的含义注释如下:
M: (代表输入数量)1:代表本通道中输出由一个输入决定。2:代表本通道中输出由两个输入决定……
O: (负值缩放比例) (正值缩放比例) (零偏)(最小限幅)(最大限幅)
S: (组号) (组内标号) (负值缩放比例) (正值缩放比例) (零偏)(最小限幅)(最大限幅)

上述文件的注释:

// 该矩阵中用到了两个输入,横滚、俯仰作为输入,一边副翼作为输出
M: 2
O: 10000 10000 0 -10000 10000
S: 0 0 -8000 -8000 0 -10000 10000
S: 0 1 6000 6000 0 -10000 10000

// 该矩阵中用到了两个输入,横滚、俯仰作为输入,另一边副翼作为输出
M: 2
O: 10000 10000 0 -10000 10000
S: 0 0 -8000 -8000 0 -10000 10000
S: 0 1 -6000 -6000 0 -10000 10000

// 由于偏航没有输出,所以该矩阵为空,但是得占位置。
Z:

// 油门通道。
M: 1
O: 10000 10000 0 -10000 10000
S: 0 3 0 20000 -10000 -10000 10000

上述为固定翼的Mix,由于旋翼机的每个电机都与各通道有关,因此不能采用简单的加性运算就能解决。

Multirotor mixer for PX4FMU
===========================

This file defines a single mixer for a quadrotor in the + configuration. All controls
are mixed 100%.

R: 4+ 10000 10000 10000 0

Gimbal / payload mixer for last two channels
-----------------------------------------------------

M: 1
O:      10000  10000      0 -10000  10000
S: 3 5  10000  10000      0 -10000  10000

M: 1
O:      10000  10000      0 -10000  10000
S: 3 6  10000  10000      0 -10000  10000

上述是“+”四旋翼的mix文件。
R: 4+ 10000 10000 10000 0
R表示旋翼机;
4+表示“+”型四旋翼;
10000,10000,10000,0 表示三个姿态的比例缩放和死区范围。
后面两个矩阵为附加通道的计算,并非四旋翼电机的计算。

旋翼的Mixer在文件Src/modules/systemlib/mixer/mixer_multirotor.cpp中(也不知道为啥放在这里),在该文件下,首先对各通道的控制计算量进行了限幅,然后根据具体旋翼机型,进行了相关的加减运算。此处就不再详细介绍了,代码比较清楚。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值