航天器姿态自由运动及PID控制仿真平台
项目介绍
本项目是一个基于MATLAB的数学仿真系统,旨在模拟刚体航天器在太空环境下的姿态动力学行为。项目完全基于MATLAB脚本编写,核心利用
ode45数值积分器对刚体动力学欧拉方程和四元数运动学方程进行高精度解算。
代码通过两个主要场景展示了航天器的物理特性与控制性能:一是无须外力干预的自由旋转运动,用于验证物理模型的正确性及角动量守恒定律;二是基于偏差四元数的PID闭环控制,用于模拟航天器从大角度偏差状态机动并稳定至目标姿态的过程。
功能特性
- 高保真姿态动力学模型:基于刚体运动学欧拉方程,结合四元数(Quaternion)描述姿态,避免了欧拉角描述中的万向节死锁问题。
- 双模式仿真场景:
*
自由运动:模拟仅受初始角速度驱动的旋转,验证系统能量与动量的物理守恒性。
*
闭环控制:实现姿态捕获与定点控制,包含完整的传感器反馈、误差解算与执行机构模型。
- 非线性PID控制算法:基于四元数误差向量的非线性PID控制律,具备积分抗饱和及执行机构力矩限幅功能。
- 独立数学库:代码内部实现了四元数与欧拉角的互转、四元数乘法等基础数学运算,不依赖额外的工具箱。
- 多维度数据可视化:提供欧拉角响应、角速度变化、动量守恒曲线、控制力矩输出及误差收敛过程的详细图表。
系统要求
- MATLAB R2016b 或更高版本
- 不需要额外的工具箱(如Aerospace Toolbox),所有数学运算均在脚本内由基础公式实现。
使用方法
- 确保MATLAB当前工作路径包含主脚本文件。
- 直接运行
main 函数。 - 程序将依次计算自由运动及闭环控制过程,运行结束后自动弹出两幅主要结果图窗。
- 参数调整:用户可在代码的“系统参数初始化”部分修改惯性张量(
J)、PID增益(Kp, Ki, Kd)、仿真时长(T_sim)以及初始姿态与目标姿态。
核心实现逻辑与代码分析
1. 系统参数与初始化
代码首先定义了航天器的物理属性,假设航天器主轴坐标系下的惯性张量为对角矩阵。设定了仿真时间步长与总时长,并配置了PID控制器的三项系数及执行机构的最大输出力矩(饱和值),为后续的数值解算提供基础常数。
2. 场景一:自由运动仿真
在此部分,系统设置了一个非零的初始欧拉角和角速度。通过将系统动力学函数
spacecraft_dynamics 传入
ode45 解算器,模拟受控对象在力矩输入为零向量时的状态演化。
- 验证目的:通过后处理计算每一步的角动量模值,验证其在由于没有外力矩作用下是否保持恒定,从而检验动力学方程实现的正确性。
3. 场景二:PID姿态稳定控制
此部分模拟闭环控制系统。初始状态被设定为与目标状态存在较大偏差。
- 状态向量扩展:为了支持积分控制(I项),状态向量被扩展为10维:4维四元数 + 3维角速度 + 3维误差积分项。
- 过程重构:由于
ode45 仅返回状态轨迹,代码通过循环重新调用控制逻辑函数,以复现仿真过程中的控制力矩和瞬时误差,以便于绘图分析。
4. 关键算法与函数详解
#### spacecraft_dynamics (动力学核心)
这是系统的物理引擎。它接收当前状态和外部力矩:
- 运动学:使用四元数微分方程 $dot{q} = 0.5 cdot Omega cdot q$,其中 $Omega$ 是由角速度构成的偏对称矩阵。代码包含四元数归一化步骤以防止数值积分累积误差。
- 动力学:使用刚体欧拉方程 $Jdot{omega} = T_{ext} - omega times (Jomega)$ 计算角加速度。
####
closed_loop_dynamics (闭环控制逻辑)
该函数封装了动力学模型,加入了反馈控制律:
- 误差解算:计算目标四元数与当前四元数的共轭乘积,得到误差四元数。
- 最短路径逻辑:判断误差四元数的标量部分符号,确保控制系统总是沿着最短路径进行旋转(避免旋转超过180度的远路)。
- PID控制律:
*
P项:基于误差四元数的向量部分。
*
I项:基于状态向量中的误差积分累积值。
*
D项:基于当前角速度(阻尼项),假设目标角速度为零。
- 执行机构饱和:对计算出的总力矩应用
max(min(...)) 限幅逻辑,模拟真实推进器或反作用飞轮的能力限制。
#### process_results (后处理)
负责将求解器输出的四元数轨迹转换为直观的欧拉角(Yaw-Pitch-Roll顺序),并计算角动量模值,便于可视化分析。
#### 数学辅助函数
euler2quat / quat2euler:实现欧拉角(ZYX旋转顺序)与四元数之间的相互转换。quat_multiply:手动实现的四元数乘法运算,定义了误差计算的代数规则。
可视化结果说明
- 图1 - 自由运动:
* 展示三轴欧拉角随时间的自由演化。
* 展示系统角动量模值随时间保持恒定(直线),直观证明了物理模型的守恒性。
- 图2 - PID控制:
* 展示欧拉角从初始大偏差迅速收敛并稳定至0度的过程。
* 展示三轴控制力矩的输出曲线,可以观察到初始阶段的饱和现象以及稳态时的零输出。
* 展示姿态跟踪误差模值的对数收敛曲线,反映控制精度的数量级变化。