RePX4Block 模块文档¶
所属工具箱:RflySim APIs

简介¶
一句话描述:该模块可实现PX4不同层级输出的在线动态屏蔽,支持仿真与实飞场景下PX4原控制输出与用户自定义控制的在线切换。
该模块属于RflySim APIs工具库,是RflySim工具链提供的PX4自定义控制扩展接口,由一键部署固件脚本自动添加PX4端对应支持。该模块可与CopterSim、PX4配合完成软硬件在环仿真与实飞控制,将用户自定义控制配置发送给PX4,最终输出控制结果传递到CopterSim的DLL模型接口,在RflySim3D中完成可视化仿真。该模块支持四种屏蔽模式,可满足不同开发需求:既可以完全接管PX4的电机舵机输出层,也可以仅在力和力矩控制层替换PX4原控制,还可实现自定义遥控器信号替换,防止信号冲突抖动,兼容多旋翼、固定翼、无人车等多种载具,支持DShot等特殊电调协议,适用于用户开发自定义飞行控制算法、扩展特殊控制功能的典型场景。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
isEnCtr |
boolean |
1×1 |
使能控制输入,输入为true时,使能自定义屏蔽模式,按照mode端口配置工作,输入为false时不启用自定义屏蔽 |
mode |
uint8 |
1×1 |
屏蔽模式选择输入,不同数值对应不同的屏蔽工作模式 |
输出端口(Outputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
CtrlS |
double |
1×16 |
输出控制信号,将被发送到CopterSim的DLL模型的inPWM接口中 |
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Sample Time(s) |
double |
0.001 |
>0 |
模块采样时间,控制仿真计算周期 |
参数设置说明¶
Sample Time(s)¶
该参数定义了模块输出信号的更新间隔,单位为秒。一般可根据飞控控制周期设置,默认1ms适配大多数实时仿真场景。
模式说明¶
模块支持的4种工作模式如下:
Mode 0 (0):不屏蔽模式,PX4正常接收原控制输出:actuator_outputs(软硬件在环仿真)、actuator_controls_0(力和力矩接口),保持正常电机控制逻辑Mode 1 (1):完全屏蔽模式:SIL/HIL仿真时不再接收PX4的actuator_outputs,改为接收actuator_outputs_rfly消息,需搭配HIL16CtrlsPWM或HIL16CtrlsNorm模块发布消息;实飞时屏蔽PX4底层电机舵机控制代码,改为接收PWM_output和Aux_output模块的控制输出,不支持DShot等特殊协议Mode 2 (2):中间力和力矩层屏蔽模式:SIL/HIL仿真和实飞都支持,不再接收PX4的actuator_controls_0,改为接收actuator_controls_rfly的力和力矩控制量,需要搭配TorqueThrustCtrls模块发送力和力矩控制量,支持DShot、UartESC等特殊电调协议,兼容多旋翼、固定翼、无人车等多种载具Mode 3 (3):遥控器信号屏蔽模式,屏蔽PX4发出的manual_control_setpoint消息,可通过RCOverCtrlAPI接口替换遥控器信号,避免Simulink输出的遥控器信号与PX4原生信号冲突产生控制抖动
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、uint8、boolean |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块通过接口将控制指令与模式发送至CopterSim的DLL模型,不涉及独立外部网络通信。
相关模块¶
| 模块名 | 说明 |
|---|---|
HIL16CtrlsPWM |
发布16路PWM控制输出,配合Mode1完全屏蔽模式使用 |
HIL16CtrlsNorm |
发布归一化16路控制输出,配合Mode1完全屏蔽模式使用 |
TorqueThrustCtrls |
发送力和力矩控制量,配合Mode2力和力矩层屏蔽模式使用 |
RCOverCtrlAPI |
替换PX4遥控器信号,配合Mode3遥控器屏蔽模式使用 |
PWM_output |
实飞场景下输出PWM控制信号,配合Mode1完全屏蔽模式使用 |
Aux_output |
实飞场景下输出辅助通道控制信号,配合Mode1完全屏蔽模式使用 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:本模块依赖PX4固件的自定义接口,该接口仅在通过RflySim一键安装脚本部署对应固件后才能正常工作,使用前请确认固件已正确部署,否则模块功能无法生效。
- 模式对应配置:不同mode对应不同使用场景,请勿混淆配置:Mode1完全屏蔽模式实飞场景不支持DShot等特殊电调协议;需要使用特殊电调协议或力力矩层控制时,请选择Mode2模式;需要替换遥控器信号时必须使用Mode3,避免控制信号冲突。
- 采样时间匹配:请将本模块的Sample Time设置为和Simulink控制算法步长保持一致,避免因采样间隔不匹配导致控制指令更新异常,出现控制抖动或输出失效问题。
- 搭配模块要求:不同模式需要对应搭配指定模块使用:Mode1仿真场景需搭配
HIL16CtrlsPWM或HIL16CtrlsNorm发布控制消息,实飞场景需搭配PWM_output和Aux_output输出;Mode2需要搭配TorqueThrustCtrls模块发送力力矩控制量;Mode3需要搭配RCOverCtrlAPI接口使用,缺少对应模块会导致输出失效。 - 信号冲突问题:使用Mode3替换遥控器信号时,必须启用本模块的屏蔽功能,否则Simulink发送的自定义遥控器信号会和PX4原生信号冲突,导致控制输出抖动甚至失控。
更新日志¶
v4.1.0(2024-08-07): 初始发布RePX4Block在线屏蔽PX4输出模块,支持4种不同屏蔽模式,提供仿真与实飞场景下的PX4输出自定义控制功能。