添加一个新的机型
所有定义的机型文件保存在ROMFS/px4fmu_common/init.d。
建立一个混控器
1 简单学习混控器定义:
舵机/电机的接口顺序和这个文件中的混控器顺序一致。意思是按照文件从头到尾的混控器顺序就是通道(channel)的顺序一致。
混控器只有以一个字母开头后紧跟冒号的行是有用的,其他格式的均为注释。以如下一个简单飞翼的副翼混控器定义为例:
M: 2
O: 10000 10000 0 -10000 10000
S: 0 0 -6000 -6000 0 -10000 10000
S: 0 1 6500 6500 0 -10000 10000
从左到右每个数字代表的意思如下:
M:代表有2个缩放系数(对应着两个输入)
O:代表输出缩放系数(负输入量缩放系数为1,正输入量缩放系数为1),偏移量(这里是0),输出范围(这里-1到+1)
S:代表第一个输入量的缩放系数:输入量来自控制组#0(姿态控制)的第一个输入(滚转),缩放系数为0.6,并且符号取反(-0.6换算到标准单位是-6000),没有偏移量(0),输出为全范围(-1到+1)
S:代表第二个输入量的缩放系数:输入量来自控制组#0(姿态控制)的第二个输入(俯仰),缩放系数为0.65(0.65换算到标准单位是6500),没有偏移量(0),输出为全范围(-1到+1)
解释一下单行的定义:
S: <group> <index> <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>
比如:
S: 0 0 -6000 -6000 0 -10000 10000
- 第一个0 指的是group的值。如下:
- 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
- 第二个0指的是group中的index在组中的序号,比如这个例子中值得是group 0 的 0:roll。
- <-ve scale> <+ve scale> 表示缩放比例,也可以理解为权重。
关于正负问题的解释:
最常规的固定翼的正负定义如下:
Aileron | S: 0 0 10000 10000 0 -10000 10000 |
Elevator | S: 0 1 -10000 -10000 0 -10000 10000 |
Rudder | S: 0 2 10000 10000 0 -10000 10000 |
Motor speed | S: 0 3 0 20000 -10000 -10000 10000 |
对于最简单的飞翼布局的无人机,两个舵的定义如下:
M: 2
O: 10000 10000 0 -10000 10000
S: 0 0 -6000 -6000 0 -10000 10000
S: 0 1 6500 6500 0 -10000 10000
M: 2
O: 10000 10000 0 -10000 10000
S: 0 0 -6000 -6000 0 -10000 10000
S: 0 1 -6500 -6500 0 -10000 10000
所以我们可以归纳总结出:
当通过两个舵来控制滚转偏航俯仰时,因为对称分布所以左右打相同角度时有正负差别,这一物理安装决定,另外副翼和方向舵所打角度左右正好相反,所以相当于乘了两次-1,于是两个
- <offset> <lower limit> <upper limit> 中立位 最小值 最大值。
注意; 因为是脚本文件,所以在相加时总是优先满足放在上面的通道。