跳转至

RePX4Block 模块文档

所属工具箱:RflySim APIs

RePX4Block 模块外观

简介

一句话描述:该模块可实现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)

特性项
支持的数据类型 doublesingleuint8boolean
直接馈通(Direct Feedthrough)
采样时间 离散
代码生成支持

数据通信协议

本模块通过接口将控制指令与模式发送至CopterSim的DLL模型,不涉及独立外部网络通信。

相关模块

模块名 说明
HIL16CtrlsPWM 发布16路PWM控制输出,配合Mode1完全屏蔽模式使用
HIL16CtrlsNorm 发布归一化16路控制输出,配合Mode1完全屏蔽模式使用
TorqueThrustCtrls 发送力和力矩控制量,配合Mode2力和力矩层屏蔽模式使用
RCOverCtrlAPI 替换PX4遥控器信号,配合Mode3遥控器屏蔽模式使用
PWM_output 实飞场景下输出PWM控制信号,配合Mode1完全屏蔽模式使用
Aux_output 实飞场景下输出辅助通道控制信号,配合Mode1完全屏蔽模式使用

使用示例

相关使用示例请参考以下路径:

[RflySim安装路径]/RflySimAPIs/5.RflySimFlyCtrl/2.AdvExps/e0_AdvApiExps/5.RepPX4Func/Readme.pdf

请在上述路径中查看 Readme.pdf 获取完整的示例说明与操作步骤。

注意事项与常见问题

  • 初始化顺序:本模块依赖PX4固件的自定义接口,该接口仅在通过RflySim一键安装脚本部署对应固件后才能正常工作,使用前请确认固件已正确部署,否则模块功能无法生效。
  • 模式对应配置:不同mode对应不同使用场景,请勿混淆配置:Mode1完全屏蔽模式实飞场景不支持DShot等特殊电调协议;需要使用特殊电调协议或力力矩层控制时,请选择Mode2模式;需要替换遥控器信号时必须使用Mode3,避免控制信号冲突。
  • 采样时间匹配:请将本模块的Sample Time设置为和Simulink控制算法步长保持一致,避免因采样间隔不匹配导致控制指令更新异常,出现控制抖动或输出失效问题。
  • 搭配模块要求:不同模式需要对应搭配指定模块使用:Mode1仿真场景需搭配HIL16CtrlsPWMHIL16CtrlsNorm发布控制消息,实飞场景需搭配PWM_outputAux_output输出;Mode2需要搭配TorqueThrustCtrls模块发送力力矩控制量;Mode3需要搭配RCOverCtrlAPI接口使用,缺少对应模块会导致输出失效。
  • 信号冲突问题:使用Mode3替换遥控器信号时,必须启用本模块的屏蔽功能,否则Simulink发送的自定义遥控器信号会和PX4原生信号冲突,导致控制输出抖动甚至失控。

更新日志

  • v4.1.0 (2024-08-07): 初始发布RePX4Block在线屏蔽PX4输出模块,支持4种不同屏蔽模式,提供仿真与实飞场景下的PX4输出自定义控制功能。