103、飞控仿真环境搭建:Gazebo与PX4 SITL
飞控仿真环境搭建:Gazebo与PX4 SITL从一次炸机说起去年冬天调试一个四旋翼的偏航控制,代码烧进去,上电解锁,推油门——飞机直接在地上打了个转,然后侧翻。电机停转那一刻,我闻到一股焦糊味。拆下来检查,电调烧了一个。后来复盘,问题出在yaw_rate控制器的积分项限幅设错了。但当时没有仿真环境,每次改参数都得去室外飞,炸一次修一次,一个PID参数调了两周。从那以后,我养成了一个习惯:任何控制算法改动,先在SITL里跑三遍,确认没问题再上真机。今天这篇笔记,就是记录我搭建Gazebo+PX4 SITL环境时踩过的坑和总结的经验。环境选择:为什么是Gazebo+PX4 SITL市面上飞控仿真方案不少,ArduPilot的SITL、AirSim、甚至MATLAB Simulink都能做。但我最终选了PX4 SITL + Gazebo,原因有三:第一,PX4的代码结构清晰,模块化程度高,适合做算法二次开发。你可以在不修改底层驱动的情况下,替换掉姿态估计、位置控制甚至整个导航栈。第二,Gazebo的物理引擎虽然不如AirSim的Unreal引擎逼真,但胜在轻量、开源、插件丰富。对于飞控算法验证,Gazebo的刚体动力学模型已经足够。第三,也是最重要的——社区活跃。遇到问题,PX4的issue和discourse上基本能找到答案,不像某些商业软件,文档写得像天书。安装过程:那些年我踩过的坑