一天精通无人机第 38 讲 高级篇系列:混合控制器

file

一、混合控制原理

经过位置控制和姿态控制之后,控制量将通过actuator_controls这个uORB发布到内部通信总线上,这个uORB中的control数组变量中存放了滚转、俯仰、航向以及油门的控制量,其索引号的定义如下:

uint8 INDEX_ROLL = 0 #滚转索引

uint8 INDEX_PITCH = 1 #俯仰索引

uint8 INDEX_YAW = 2 #航向索引

uint8 INDEX_THROTTLE = 3 #油门

float32[4] control #控制量数组

对于不同的多旋翼机型,它们的控制量都是相同的,但是混合控制方案却不同。接下来我们分别介绍不同机型的多旋翼的混合控制原理。首先设滚转、俯仰、航向、油门这4个控制量分别为:

float roll = control[INDEX_ROLL];

float pitch = control[INDEX_PITCH];

float yaw = control[INDEX_YAW];

float thro = control[INDEX_THROTTLE];

  1. 十字型四旋翼:由于十字型四旋翼的4个螺旋桨与滚转、俯仰轴重合因此,我们可以将向量(0,1)和(0,-1)投影到轴臂上作为滚转控制系数,如下图所示:

file

于是,我们可以得到的混控矩阵为:

file

  1. 叉型四旋翼:与十字型四旋翼类似的,我们只需要计算4个控制量投影到轴臂上的分量得到混控矩阵即可。如下图所示:

file

于是,叉型四旋翼的混控矩阵为:

file

  1. 十字六旋翼:同理:

file

file

  1. 叉型六旋翼:同理:

file

file

对于其它机型原理与四旋翼与旋翼类似的,我们不再赘述。

二、混控配置文件

在PX4程序当中通过订阅actuator_controls这个uORB得到控制系统所输出的控制量,然后经过混合控制器(简称混控,Mixer)得到实际输出的PWM信号。在PX4程序中根据不同的机型定义了不同的混控文件,存放在Firmware/ROMFS/px4fmu_common/mixers目录当中,多旋翼机型常用的混控配置文件有:

quad_+.main.mix # 十字型四旋翼

quad_x.main.mix # 叉型四旋翼

hexa_+.main.mix # 十字型六旋翼

hexa_x.main.mix # 叉型六旋翼

octo_+.main.mix # 十字型八旋翼

octo_x.main.mix # 叉型八旋翼

混控配置文件中其中包括:空混控器、简单混控器和机型布局混控器。配置文件中的混控器有着特定的格式,如下:

<tag>: <args>

其中tag表示混控器类型,args表示混控器参数。

  1. 空混控器:可以接收任何的输入,但是其输出始终为0。控混控器在配置文件中可以起到占位的作用:

Z:

  1. 简单混控器:将0个或多个输入通道的控制量进行混合,再经过缩放和限幅得到1个通道的输出结果:
M: <control count>

S: <group> <index> <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>

其中,control count表示混控器输入通道数;group表示控制量来源于actuator_controls这个uORB中的组号;index表示控制量来源于控制量数组control的索引号;scale表示将控制量放大的系数;offset为偏离量;limit表示对混控的输出结果进行限幅。

  1. 机型布局混控器:其中包括多旋翼、直升机、固定翼、垂起固定翼、倾转旋翼等多种机型。我们主要讨论多旋翼常用机型的混控器:
R: <geometry> <roll scale> <pitch scale> <yaw scale> <deadband>

其中,geometry表示多旋翼机型布局,不同的布局需要使用不同的混控矩阵;roll scale、pitch scale、yaw scale分别表示多滚转通道、俯仰通道和航向通道的放大系数;deadband表示当某一个通道的执行器饱和时为了保证此数值不超出有效范围,其他的执行器将会北重新缩放到一个安全范围内,整体比例关系不变。

下期预告:《传感器校准原理》

file