跳转至

PosVelAttAll 模块文档

所属工具箱:RflySim APIs

PosVelAttAll 模块外观

简介

一句话描述:该模块用于从PX4的uORB消息订阅获取载具经过滤波处理的完整位置、速度、姿态、角加速度、角速度全量运动状态量。

该模块属于RflySim APIs接口库,是RflySim工具链中用于获取PX4端载具状态的基础功能模块,典型应用于自定义飞控算法开发、状态观测算法验证、状态数据记录分析等场景。

该模块会自动订阅PX4固件中vehicle_local_position、vehicle_attitude、vehicle_angular_velocity三个uORB话题,提取PX4飞控内部滤波估计后的全量运动状态,通过MsgBus总线输出整理后的加速度、时间戳、姿态四元数、欧拉角、机体角速度等状态数据,可与Simulink中的自定义控制算法模块直接对接,在基于CopterSim的PX4联合仿真、搭配RflySim3D的可视化仿真流程中,为用户算法提供可靠的PX4端状态输入。

端口说明

输入端口(Inputs)

本模块无输入端口。

输出端口(Outputs)

端口名 数据类型 维度 说明
MsgBus double 1×21 输出载具经PX4滤波后的所有运动状态量,按照协议顺序排列:NED系三轴加速度ax, ay, az(3个)、系统时间戳timestamp(1个)、机体系FRD到地系NED的旋转四元数q(4个)、滚转/俯仰/偏航角Roll, Pitch, Yaw(3个)、机体系FRD三轴角速度xyz(3个),总计21个元素,单位分别为m/s²、μs、无量纲、rad、rad/s

参数配置(Parameters)

双击模块打开的 Mask 对话框中可配置以下参数:

参数名 类型 默认值 可选值/范围 说明
Sample Time(s) double 0.01 >0 模块采样时间,单位为秒

参数设置说明

Sample Time(s)

该参数控制模块状态数据读取的采样频率,需与Simulink模型的整体仿真步长匹配,常规仿真使用默认值即可,若需要更高频率的状态数据可根据需求减小该参数值。

模块特性(Block Characteristics)

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

数据通信协议

本模块通过uORB消息总线订阅PX4飞控内部滤波后的状态消息,MsgBus输出数据协议格式如下:

字段 数据类型 说明
ax float32 NED大地坐标系下北向加速度,单位:m/s²
ay float32 NED大地坐标系下东向加速度,单位:m/s²
az float32 NED大地坐标系下向下加速度,单位:m/s²
timestamp uint64 系统启动时间,单位:微秒
q[4] float32[4] 从FRD机体坐标系到NED大地坐标系的旋转四元数
Roll float32 FRD坐标系下滚转角,由四元数转换得到,单位:rad
Pitch float32 FRD坐标系下俯仰角,由四元数转换得到,单位:rad
Yaw float32 FRD坐标系下偏航角,由四元数转换得到,单位:rad
xyz[3] float32[3] 修正偏差后的FRD机体坐标系三轴角速度,单位:rad/s

相关模块

模块名 说明
PosVelAtt 获取载具基本位置速度姿态状态量的模块
GetMAVLinkData 通过MAVLink协议获取载具各类状态数据的模块
VehicleStatusGet 获取PX4飞控核心状态信息的模块

使用示例

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

[RflySim安装路径]/RflySimAPIs/5.RflySimFlyCtrl/0.ApiExps/11.StateDataGatAPI/Readme.pdf

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

注意事项与常见问题

  • 初始化顺序:该模块依赖PX4飞控的uORB消息通信机制,仿真启动时需等待PX4飞控完成初始化、对应消息 topic 完成注册后,模块才能正确输出有效状态数据,仿真启动初期前几个采样步输出可能为零,属于正常现象。
  • 坐标系说明:模块输出的位置、加速度为NED地面坐标系,姿态角和角速度为FRD机体坐标系,使用输出数据开发控制算法时请注意坐标系转换,避免因坐标系不匹配导致控制逻辑错误。
  • 采样时间匹配:模块输出的PX4状态为滤波后数据,建议将模块采样时间设置为与PX4飞控内部状态估计周期一致(默认250Hz即0.004s),避免因采样频率不匹配获取到重复或过时的状态数据。
  • 数据合法性检查:PX4飞控未完成起飞前锁桨状态下,部分状态字段初始值可能存在异常,建议在控制逻辑中添加对输出姿态、速度数据的范围检查,避免异常值导致算法误触发。
  • 字段扩展说明:若需要获取该模块未输出的额外uORB字段,可参考PX4官方消息定义,在RflySim安装目录下的Firmware\msg文件夹中查看vehicle_local_positionvehicle_attitudevehicle_angular_velocity三个消息的完整字段定义。

更新日志

  • v4.20 (2024-08-07): 初始版本发布,实现载具位置、速度、姿态、加速度全状态量获取功能,支持订阅vehicle_local_position、vehicle_attitude、vehicle_angular_velocity三个uORB滤波后消息输出。