mikate 发表于 2024-5-14 20:37:35

PX4软件入门教程-混控器与执行器(1)

混控器作用

PX4 的系统构架可确保不需要在核心控制器中对不同的机身布局进行任何特殊的处理。混合意味着接收力的指令(比如:向右转),然后将这些指令转换成实际的执行器指令来控制电机或者舵机。对于一个每片副翼都有一个舵机的飞机而言这就意味着控制这两个舵机一个向上偏转,一个向下偏转。这也适用于多旋翼:向前俯仰需要改变所有电机的转速。将混控逻辑与实际的姿态控制器分离开来大大提高了程序的可复用性。
控制通道

特定的控制器发送一个特定的归一化的力或力矩指令(缩放至 -1..+1)给混控器,混控器则相应地去设置每个单独的执行器。控制量输出驱动程序(比如:UART, UAVCAN 或者 PWM)则将混控器的输出缩放为执行器实际运行时的原生单位, 例如输出一个值为 1300 的 PWM 指令。

控制组

PX4 系统中使用控制组(输入)和输出组。从概念上讲这两个东西非常简单:一个控制组可以是核心飞行控制器的姿态,也可以是载荷的云台。一个输出组则是一个物理上的总线,例如飞控上最开始的8个PWM舵机输出口。每一个组都有8个单位化(-1..+1)的指令端口,这些端口可以通过混控器进行映射和缩放。混控器定义了这8个控制信号如何连接至8个输出口。对于一个简单的飞机来说control 0(滚转)直接与 output 0(副翼)相连接。对于多旋翼而言事情要稍有不同:control 0(滚转)与全部四个电机相连接,并会被整合至油门指令中。
控制组 #0 (Flight Control)
1:pitch (-1..1)
2:yaw (-1..1)
3:throttle (正常范围为 0..1,变距螺旋桨和反推动力情况下范围为 -1..1)
4:flaps (-1..1)
5:spoilers (-1..1)
6:airbrakes (-1..1)
7:landing gear (-1..1)
控制组 #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,变距螺旋桨和反推动力情况下范围为 -1..1)
4:保留 / aux0
5:reserved / aux1
6:保留 / aux2
7:保留 / aux3
控制组 #2 (Gimbal)
0:gimbal roll
1:gimbal pitch
2: gimbal yaw
3: gimbal shutter
4:保留
5:保留
6:保留
7:保留 (降落伞, -1..1)
控制组 #3 (Manual Passthrough)
1: RC pitch
2: RC yaw
3: RC throttle
4: RC mode switch
5: RC aux1
6: RC aux2
7: RC aux3
注解:
这个组仅用于在正常操作期间定义RC输入到特定输出的映射(参见quad_x.main.mix,例如AUX2在混合器中缩放的例子)。在手动IO故障安全覆盖的情况下(如果PX4FMU停止与PX4IO板通信),只使用由控制组0输入定义的映射/混合,用于滚转,俯仰,偏航和油门(其他映射被忽略)。
控制组 #6 (First Payload)
0: function 0 (默认:降落伞)
1: function 1
2: function 2
3: function 3
4: function 4
5: function 5
6: function 6
7: function 7

[*]虚拟控制组虚拟控制组只与创建VTOL代码的开发人员相关。它们不应该用在混合器中,只是为了“完整性”而提供。这些组不是混频器输入,而是作为元通道将固定翼和多旋翼控制器输出输入到VTOL调速器模块。

控制组 #4 (Flight Control MC VIRTUAL)
1:pitch ALT (-1..1)
2:yaw ALT (-1..1)
3: throttle ALT (正常范围为 0..1,变距螺旋桨和反推动力情况下范围为 -1..1)
4:保留 / aux0
5:保留 / aux1
6:保留 / aux2
7:保留 / aux3
控制组 #5 (Flight Control FW VIRTUAL)
1: pitch ALT (-1..1)
2: yaw ALT (-1..1)
3: throttle ALT (正常范围为 0..1,变距螺旋桨和反推动力情况下范围为 -1..1)
4:保留 / aux0
5:保留 / aux1
6:保留 / aux2
7:保留 / aux3
映射

因为有多个控制组(例如飞行控制、有效载荷等)。和多个输出组(总线) ,一个控制组可以向多个输出组发送命令。混频器文件没有显式地定义应用输出的实际输出组(物理总线)。相反,混频器的目的(例如控制MAIN或AUX输出)是从混频器文件名推断出来的,并映射到系统启动脚本中适当的物理总线(特别是在rc.interface(打开新窗口)中)。

这种方法是必要的,因为用于主输出的物理总线并不总是相同的;这取决于飞行控制器是否有IO板(见PX4参考飞行控制器设计>主/IO功能分解)或使用UAVCAN进行电机控制。启动脚本使用“设备”的抽象,将混合器文件加载到板的适当设备驱动程序中。如果uavcan启用,则主混频器加载到设备/dev/uavcan/esc (uavcan)中,否则加载到/dev/pwm_output0(该设备映射到带有I/O板的控制器上的IO驱动程序,以及不带I/O板的板上的FMU驱动程序)。aux混频器文件被加载到设备/dev/pwm_output1中,它映射到具有I/O板的Pixhawk控制器上的FMU驱动程序。由于存在多个控制组(如飞行控制、有效载荷等)和多个输出组(总线),因此一个控制组可以向多个输出组发送命令。



实际上,启动脚本只将mixers加载到单个设备(输出组)中。这是一种配置限制,而不是技术限制;你可以将主混频器加载到多个驱动器中,例如,在UAVCAN和主引脚上都有相同的信号。

往期推荐 ·

[油管搬运]PX4_2022年开发者峰会视频

[油管搬运]基于Simulink机器人竞技场教程

[油管搬运]基于Simulink的机器人仿真系列教程

[油管搬运]自主导航系列教程





工业小说家

微信号|Byzeal_LEO

哔哩哔哩|工业小说家
页: [1]
查看完整版本: PX4软件入门教程-混控器与执行器(1)