跳转至

PX4FaultInParamsSend 模块文档

所属工具箱:RflySim Model

PX4FaultInParamsSend 模块外观

简介

一句话描述:将指定的故障注入仿真参数打包,通过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)

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

数据通信协议

本模块基于UDP协议向CopterSim发送故障注入仿真参数,协议规则如下:

  1. 端口规则:端口号为 30100 + (CopterID - 1) * 2,其中 CopterID 为目标无人机序号,从1开始计数。
  2. 数据格式:按照以下自定义结构体打包发送,结构体格式说明:
struct PX4ModelInParams{
         int32_t checksum;         // 固定值1234567891,标识数据包类型
         uint32_t Bitmask;         // 32位无符号位掩码,每个位对应一个待修改参数,位为1时表示修改对应参数
         double InParams[32];      // 32个待发送的双精度浮点参数
};

打包格式为 iI32d:依次为1个32位整型校验位、1个32位无符号整型位掩码、32个双精度浮点参数。

  1. 目标地址:可配置目标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故障注入仿真参数的功能。