PX4FaultInParamsSend 模块文档¶
所属工具箱:RflySim Model

简介¶
一句话描述:将指定的故障注入仿真参数打包,通过UDP协议发送给对应CopterSim实例的动力学模型。
该模块属于RflySim Model工具链,用于在Simulink仿真过程中动态修改CopterSim中无人机动力学模型的参数,典型应用场景为无人机故障注入仿真试验,可在仿真运行过程中动态修改无人机的传感器、执行器或动力学相关参数,模拟各类硬件故障与性能退化场景。模块会根据配置的目标IP地址和CopterID,自动计算对应UDP端口(30100+(copterID-1)*2),将用户指定的待修改参数位掩码和32维参数值打包为标准结构体,通过UDP发送给CopterSim的dll动力学模型,配合PX4飞控实现闭环的故障仿真验证。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
Bitmask |
uint32 |
1×1 |
32位无符号位掩码,每个位对应一个待修改的输入参数,位为1时表示修改对应参数 |
InParams |
double |
1×32 |
32维双精度浮点数数组,为待注入的仿真参数值 |
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Target IP Address |
string |
127.0.0.1 |
合法IPv4地址 | 目标CopterSim所在主机的IP地址 |
CopterID |
int |
1 |
1~255 |
目标无人机的ID编号 |
参数设置说明¶
Target IP Address¶
指定运行目标CopterSim仿真进程的主机IP地址,本地仿真时默认使用127.0.0.1即可。若CopterSim运行在其他主机上,需修改为对应主机的IP地址。
CopterID¶
目标无人机的编号,模块会根据该ID自动计算UDP通讯端口:端口号 = 30100 + (CopterID - 1) * 2,ID范围支持1~255,对应多个无人机同时仿真时的参数注入场景。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、uint32 |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块基于UDP协议向CopterSim发送故障注入仿真参数,协议规则如下:
- 端口规则:端口号为
30100 + (CopterID - 1) * 2,其中CopterID为目标无人机序号,从1开始计数。 - 数据格式:按照以下自定义结构体打包发送,结构体格式说明:
struct PX4ModelInParams{
int32_t checksum; // 固定值1234567891,标识数据包类型
uint32_t Bitmask; // 32位无符号位掩码,每个位对应一个待修改参数,位为1时表示修改对应参数
double InParams[32]; // 32个待发送的双精度浮点参数
};
打包格式为 iI32d:依次为1个32位整型校验位、1个32位无符号整型位掩码、32个双精度浮点参数。
- 目标地址:可配置目标CopterSim的IP地址。
相关模块¶
| 模块名 | 说明 |
|---|---|
PX4FaultInParamsRecv |
接收CopterSim返回的故障注入参数数据 |
PX4InitInParamsSend |
发送PX4仿真初始化参数到CopterSim |
PX4Receiver |
接收PX4飞控输出的仿真状态数据 |
PX4ActuatorControl |
发送执行器控制数据到PX4飞控 |
使用示例¶
相关使用示例请参考以下路径:
[RflySim安装路径]/RflySimAPIs/4.RflySimModel/3.CustExps/e0_AdvApiExps/5.ParamAPI/2.FaultInParams/2.Matlab/Readme.pdf
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:需保证CopterSim仿真进程已经启动并完成初始化后,PX4FaultInParamsSend模块才能正常发送故障注入参数,若仿真启动前提前发送参数,UDP数据包会丢失,不会被CopterSim接收。
- CopterID与端口匹配:模块默认通过
30100+(copterID-1)*2端口发送数据,请确保配置的CopterID与目标CopterSim实例的编号一致,编号从1开始计数,避免端口不匹配导致参数无法送达。 - Bitmask格式要求:Bitmask输入必须为uint32类型的32位无符号整数,每一位对应一个待修改参数,只有Bitmask中置1的位对应的参数才会被更新,若Bitmask全0则不会修改任何参数;若需要一次性修改全部32个参数,可使用
bitshift(1,31) * 2 + 1生成对应位掩码。 - InParams维度要求:InParams输入必须为长度为32的双精度数组或列表,模块会自动对输入长度做校正,输入长度不足32时剩余参数会补0,超出32时会截断仅保留前32个元素。
- IP地址配置:当CopterSim与Simulink运行在同一台计算机时,可保持默认
127.0.0.1的Target IP Address配置;若对端CopterSim运行在其他主机,需要修改为目标主机正确的局域网IP地址,同时保证网络防火墙开放对应UDP端口。 - 采样时间匹配:建议模块采样时间与Simulink仿真步长匹配,不要过高频率发送参数,避免造成UDP网络拥塞,导致参数丢包。
更新日志¶
v4.0.0(2024-01-01): 初始版本发布,实现通过UDP向CopterSim发送PX4故障注入仿真参数的功能。