跳转至

6DOF 模块文档

所属工具箱:RflySim Model

6DOF 模块外观

简介

一句话描述:该模块集成了基于四元数的刚体六自由度运动模型与简易环境模型,用于计算无人载具飞行过程中的位置、姿态、速度等运动状态,提供标准化的总线输出。

该模块是RflySim Model工具链中实现无人系统动力学仿真的核心基础模块,主要面向各类固定翼、多旋翼等无人载具的动力学仿真开发场景。模块接收由力和力矩计算模块、碰撞摩擦模块、风干扰模块输出的合力力矩、碰撞干扰力力矩、环境风速输入,结合用户配置的载具质量、转动惯量、初始运动状态参数,基于四元数法求解刚体六自由度运动方程,同时通过简易环境模型完成站心NED坐标到大地LLA GPS坐标的转换,并基于WGS 84基准计算对应位置的地球重力加速度,最终将所有运动状态与环境参数封装为标准Bus输出。

在RflySim仿真工具链中,该模块计算得到的载姿位置运动状态会进一步传输给CopterSim,实现PX4飞控的硬件在环仿真,同时也会将状态信息发送给RflySim3D,完成飞行过程的三维可视化展示,支撑从动力学建模到闭环仿真、可视化验证的全流程开发。

端口说明

输入端口(Inputs)

端口名 数据类型 维度 说明
FM_body double 1×6 机体坐标系下载具所受合力与合力矩拼接而成的向量,由力和力矩模块输出
fColi double 1×6 机体坐标系下碰撞和摩擦产生的力和力矩拼接而成的向量,由碰撞模块和地面模块输出,无对应模块时输入全零向量即可
Wind double 1×3 站心坐标系(常为NED)下的风速向量,由风干扰模块输出,无对应模块时输入全零向量即可

输出端口(Outputs)

端口名 数据类型 维度 说明
6DOF Bus Bus - 封装了简易环境模型和刚体六自由度模型所有输出的Simulink Bus对象,包含位置、速度、姿态、角速度、GPS坐标等所有运动状态信息

参数配置(Parameters)

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

参数名 类型 默认值 可选值/范围 说明
Init_PosE double [0 0 0] 任意3维向量 站心坐标系(常为NED)下的载具初始位置,单位:米
Init_VelB double [0 0 0] 任意3维向量 机体坐标系下的载具xyz速度初始向量,单位:m/s
Init_AngEuler double [0 0 0] 任意3维向量 机体坐标系下载具初始欧拉姿态角,单位:弧度(rad)
Init_RateB double [0 0 0] 任意3维向量 机体坐标系下的载具绕xyz轴的角速度初始向量,单位:rad/s
Param_uavMass double 1 >0 无人载具的总质量,单位:kg
Param_uavJ double diag([0.01, 0.01, 0.02]) 3×3对角矩阵,主对角线元素>0 载具的转动惯量矩阵,主对角线元素为机体系xyz三个主轴的转动惯量,单位:kg·m²
Param_GPSLatLong double [30.533800, 114.358200] 2维向量,纬度范围(-90, 90),经度范围(-180, 180) 地图GPS原点的纬度和经度,单位:度
Param_envAltitude double -16 <0 地图GPS原点的海拔高度,竖直向下为正,高于海平面填负值,单位:米

参数设置说明

Init_PosE

站心NED坐标系的x轴指向北,y轴指向东,z轴指向地心方向(向下),初始位置为相对于GPS原点的偏移量。

Init_AngEuler

默认采用Z-Y-X顺规的欧拉角(偏航-俯仰-横滚),对应载常用的yaw-pitch-roll姿态定义。

Param_uavJ

模块仅支持对角转动惯量矩阵,非对角惯性积通常在小型载具中可忽略,直接填写3×3对角矩阵即可。

Param_GPSLatLong

该参数定义了站心NED坐标系的原点经纬度,用于将NED下相对位置转换为LLA大地坐标。

Param_envAltitude

由于Simulink内置大气模型不支持海平面以下的输入,该参数要求必须为负值(海平面为0,高于海平面高度为负,符合向下为正的定义规则)。

模块特性(Block Characteristics)

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

数据通信协议

本模块不涉及网络通信。

相关模块

模块名 说明
ForceAndMoment 计算多旋翼无人机总拉力和力矩,输出机体坐标系下的合力与合力矩
WindDisturb 生成指定特性的风干扰,输出NED坐标系下的风速向量
GroundInteract 模拟地面碰撞与摩擦效应,输出机体坐标系下碰撞摩擦产生的力和力矩
Visualization 根据6DOF输出的状态信息实现无人机仿真的可视化展示

注意事项与常见问题

  • 初始化顺序:该模块为RflySim仿真的核心动力学模块,在整个仿真模型中必须位于所有依赖其输出的模块(如控制器、传感器模块)上游,保证仿真迭代时先更新载具动力学状态,再计算其他模块输出,避免状态延迟导致仿真发散。
  • 参数合法性校验Param_envAltitude参数必须设置为负值,该参数定义高于海平面为负,若设置为非负值会导致Simulink内置大气模型报错,引发仿真终止。转动惯量矩阵Param_uavJ必须为对角矩阵,非对角元素需保持为0,不符合格式的输入会导致六自由度动力学计算错误。
  • 坐标系一致性:本模块采用NED站心坐标系和机体坐标系定义,所有输入输出遵循该约定,接入自定义模块时需要保证坐标系转换正确,避免因坐标系不匹配出现姿态计算发散、位置偏移错误。
  • 输入补零要求:若模型中未添加碰撞摩擦模块和风干扰模块,对应fColiWind输入端口必须接全零向量,不可悬空,否则会导致动力学积分计算出现未定义错误。
  • 采样时间匹配:该模块默认使用固定步长离散积分,建议仿真步长设置不大于1ms,同时保证模块采样时间与仿真固定步长一致,过大的采样时间会导致六自由度积分误差累积,引发仿真不稳定。
  • GPS坐标换算说明:输出的LLA坐标是基于输入的GPS原点参数经逆投影变换得到,若不需要GPS定位输出,也不可随意修改Param_GPSLatLong参数,否则会导致重力加速度计算错误,影响动力学仿真结果。

更新日志

  • v4.1.0 (2024-07-11): 初始版本发布,提供基于四元数的刚体六自由度运动模型与简易环境模型,支持初始状态配置、惯量参数设置、GPS坐标换算和重力加速度计算功能。