1. 四旋翼无人机建模基础四旋翼无人机作为典型的欠驱动系统其建模过程需要同时考虑刚体动力学和空气动力学特性。在Simulink中搭建6DOF六自由度模型时我们需要分别建立位置X/Y/Z和姿态滚转/俯仰/偏航的运动方程。这里有个很形象的类比就像搭建乐高模型需要先准备好基础积木块再按照物理规律把它们组装起来。我刚开始接触无人机建模时最大的误区就是直接跳进代码实现。后来发现先理清物理模型再动手能省去80%的调试时间。四旋翼的核心动力学方程主要包含三个部分刚体平动方程描述无人机在三维空间中的位置变化m\ddot{\mathbf{p}} \mathbf{R} \cdot \begin{bmatrix} 0 \\ 0 \\ \sum F_i \end{bmatrix} - \begin{bmatrix} 0 \\ 0 \\ mg \end{bmatrix}其中m是质量R是旋转矩阵F_i是单个旋翼的升力刚体转动方程描述姿态角的变化\mathbf{I}\dot{\boldsymbol{\omega}} \boldsymbol{\omega} \times \mathbf{I}\boldsymbol{\omega} \mathbf{M}I是惯性张量ω是角速度M是总力矩电机动力学描述电机转速与升力的关系F_i k_f \cdot \omega_i^2k_f是升力系数ω_i是电机转速在Simulink中实现时我建议先创建三个子系统分别对应这三个部分。实测发现这种模块化设计能让后期调试效率提升3倍以上。比如平动方程可以这样搭建% 平动子系统示例代码 function [pos_dot, vel_dot] translational_dynamics(F_total, R, mass, g) gravity [0; 0; -mass*g]; acc (R * [0; 0; F_total] gravity) / mass; vel_dot acc; pos_dot vel; end2. Simulink环境配置与模块搭建2.1 基础模块准备打开Simulink后我习惯先准备好这些核心模块可以在Library Browser中搜索6DOF (Euler Angles)Simscape Multibody UtilitiesPID ControllerSimulink ContinuousMATLAB FunctionSimulink User-Defined FunctionsBus CreatorSimulink Signal Routing有个容易踩坑的地方6DOF模块有多个版本一定要选择Euler Angles版本的因为四旋翼控制通常用欧拉角表示姿态。我曾经用错成四元数版本调试了整整两天才发现问题。2.2 电机模型实现电机是四旋翼的动力源建模时需要特别注意两个非线性特性转速延迟实际电机响应命令会有约50ms延迟转速饱和物理电机有最大最小转速限制在Simulink中可以用Transfer Function模块模拟延迟特性1 / (0.05*s 1) % 一阶惯性环节模拟延迟然后用Saturation模块限制转速范围建议设为1000-8000RPM。完整的电机子系统应该长这样[期望转速] → [饱和限制] → [延迟环节] → [升力计算] → [实际升力]这里有个实用技巧在调试阶段可以先用Step信号测试单个电机的响应曲线确认延迟和饱和效果符合预期后再接入完整系统。3. 分层控制策略实现3.1 姿态内环控制姿态控制是四旋翼的肌肉神经负责快速响应姿态变化。我推荐使用PD控制器而不是PID因为积分项容易引发振荡。具体参数整定步骤先调比例项P让无人机能快速响应但不超调再加入微分项D抑制振荡最后微调两个参数直到阶跃响应曲线满意在Simulink中姿态控制器可以这样配置% 滚转通道PD控制示例 roll_error roll_desired - roll_actual; roll_rate_desired Kp_roll * roll_error Kd_roll * (roll_error - prev_roll_error); prev_roll_error roll_error;实测发现初始参数可以设为Kp_roll/pitch ≈ 2.5Kd_roll/pitch ≈ 0.5Kp_yaw ≈ 1.2Kd_yaw ≈ 0.33.2 位置外环控制位置环是四旋翼的大脑负责宏观路径规划。这里有个关键转换如何将位置误差转换为姿态指令。我的经验公式是\theta_{des} \text{atan2}(a_{x,des}, g a_{z,des}) \phi_{des} \text{atan2}(-a_{y,des}, g a_{z,des})在Simulink中可以用MATLAB Function模块实现这个转换。调试位置环时建议先用Z轴高度控制练手设置期望高度为2米观察无人机的上升曲线调整PID参数直到能平稳悬停常见问题排查如果无人机上下振荡减小比例增益如果响应太慢适当增加微分增益如果有稳态误差加入小的积分项4. 仿真调试技巧4.1 参数整定方法论调试PID参数时我总结了一套三阶调试法粗调阶段用阶跃响应观察大体趋势微调阶段用正弦扫频测试频响特性验证阶段用复合运动测试鲁棒性有个特别好用的工具是Simulink的PID Tuner右键PID模块即可打开它能自动计算合适的参数范围。不过要注意自动调参结果通常需要手动微调20%左右才能达到最佳效果。4.2 可视化调试在View菜单下打开这些窗口能极大提升调试效率Simulation Data Inspector实时查看信号曲线Animation3D可视化无人机运动Dashboard自定义仪表盘监控关键参数我习惯把以下信号组成监控组XYZ位置误差姿态角变化电机转速电池电压如果建模了电源系统5. 进阶优化方向当基础模型能稳定悬停后可以考虑这些优化5.1 加入风扰模型在Environment模块中添加风场扰动% 常值风阵风模型 wind_velocity base_wind gust_amplitude * sin(2*pi*gust_frequency*time);5.2 实现轨迹跟踪用Waypoint模块生成路径点配合Spline Trajectory生成平滑轨迹。关键是要处理好加速度连续性问题否则会导致姿态剧烈变化。5.3 硬件在环测试将模型部署到Pixhawk等飞控硬件时需要注意采样时间与硬件同步数据类型匹配特别是浮点精度通信延迟补偿我在实验室调试时发现加入5ms的前馈补偿能显著提升硬件控制效果。这个经验值可能随硬件不同而变化建议从3ms开始测试。