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

简介¶
一句话描述:该模块用于从PX4飞控订阅并输出所有Offboard控制模式相关的uORB消息数据,为Simulink侧的离线控制开发提供完整的飞控状态与控制设定信息。
该模块属于RflySim APIs接口库,是RflySim工具链中支持Offboard模式无人机开发的核心通信模块,专为在Simulink环境中开发自定义离线控制算法提供数据源支持。在仿真流程中,该模块与PX4飞控、CopterSim物理引擎仿真程序交互,从PX4飞控中订阅vehicle_status、offboard_control_mode、trajectory_setpoint、vehicle_attitude_setpoint、vehicle_rates_setpoint共5类和Offboard控制相关的uORB消息,将所有消息中的字段整合后通过MsgBus总线输出给Simulink中的自定义控制逻辑。
该模块的典型使用场景是配合Offboard控制算法开发,开发者可以直接获取PX4飞控的当前状态、现有控制设定等全部相关信息,无需单独配置多个消息订阅模块,简化了Simulink模型的搭建流程,支持快速开发、验证基于PX4的自定义离线控制算法,搭配RflySim3D可视化模块即可完成全流程的闭环仿真验证。各输出消息字段的具体定义可参考PX4官方文档或RflySim安装目录下的Firmware\msg目录中的定义文件。
端口说明¶
输入端口(Inputs)¶
本模块无输入端口。
输出端口(Outputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
MsgBus |
Bus |
- | 输出vehicle_status、offboard_control_mode、trajectory_setpoint、vehicle_attitude_setpoint、vehicle_rates_setpoint这些uORB消息中定义的所有数据 |
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Sample Time(s) |
double |
0.01 |
>0 |
模块输出数据的采样时间 |
参数设置说明¶
Sample Time(s)¶
该参数用于指定模块的采样步长,控制模块输出offboard控制相关消息的频率,可根据仿真任务的控制需求调整合适的采样时间。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single |
| 直接馈通(Direct Feedthrough) | 否 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块通过UDP协议与PX4飞控仿真进程通信,获取uORB话题数据,默认使用飞控端提供的UDP数据端口完成数据订阅,输出整合后的uORB消息总线数据。
相关模块¶
| 模块名 | 说明 |
|---|---|
VehicleStatusGet |
解析OffCtrlMsgAll输出的消息总线,提取vehicle_status状态数据 |
OffboardModeSet |
向飞控发送Offboard控制模式切换指令 |
SetPointSender |
发送各类控制设定点到飞控,配合Offboard控制使用 |
UORB_Read |
读取单个指定uORB话题的消息数据 |
UORB_Write |
写入单个指定uORB话题的消息数据 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:本模块依赖PX4固件uORB消息机制完成数据订阅,仿真启动前请确保RflySim环境已完成初始化、PX4仿真进程已正常启动,否则会出现消息订阅失败,输出全零数据的问题。
- 采样时间匹配:请将本模块的采样时间设置为和Offboard控制逻辑模块的采样时间保持一致,避免因采样频率不匹配导致控制消息读取滞后,引发控制异常;PX4 Offboard控制要求心跳消息至少500ms刷新一次,建议本模块采样时间不大于0.2s,保证数据实时性。
- 消息输出使用:本模块输出为整合的MsgBus总线信号,如需单独提取某类uORB消息的字段,需配合Simulink的Bus Selector模块使用,字段定义可前往RflySim安装目录下的
Firmware\msg文件夹查看对应消息文件。 - 模式适配说明:本模块仅在PX4 Offboard控制模式下输出有效消息数据,若无人机处于其他飞行模式,部分控制相关的消息字段会保持默认值,开发Offboard控制逻辑时,请先通过本模块输出的vehicle_status消息判断当前是否已切到Offboard模式,再执行控制算法。
更新日志¶
v4.00(2024-08-07): 初始版本发布,支持订阅Offboard控制相关的vehicle_status、offboard_control_mode、trajectory_setpoint、vehicle_attitude_setpoint、vehicle_rates_setpoint共5种uORB消息,可总线输出所有消息内的定义数据。