|
不知不觉PX4系列已经更新了有十几篇,往期内容可以在公众号的菜单中点击OPENUAV/PX4中阅读。
我们聊了PX4的代码框架和一些基础组件,可以基于PX4开发一些飞控的外设支持和功能。
飞行测试是验证飞控功能的最直接的方式,不过飞行的准备是比较麻烦的,要检查飞机结构、桨叶、电池、电机、电调、GPS、遥控器等等设备的状态,还需要一定的飞行经验和水平。如果是比较复杂的功能逻辑,还有一定的危险性。
在飞行测试之前,飞行仿真是我们验证飞控功能的很好的方式,它可以帮我们先验证算法和功能逻辑是否正确,是一种低成本高效率的方式。同时对于新手而言,仿真是最快上手飞控开发很好的方式。
这一篇我们聊一下PX4的仿真系统。PX4为我们提供了非常完善强大的仿真功能,可以分为3类:
软件在环仿真SITL
硬件在环仿真HITL
硬件仿真SIH
下面我们简单分析一下这三种仿真模式的区别:
软件在环仿真SITL
SITL飞控软件与仿真模型都运行在仿真PC中,与真实飞控与环境没有直接关系。
飞控软件与运行在飞控中的软件,在功能逻辑层与算法层使用相同的代码,而飞控系统与底层驱动使用适配仿真PC的代码。
下图是PX4官方开发者文档中关于SITL的结构图,这里直接引用一下。
由图可以知道PX4的SITL各个组件的连接关系,
PX4飞控软件由仿真器中获取传感器数据(陀螺仪、加速度计、罗盘、GPS、高度计、摄像头、激光雷达等等)
通过飞控软件解算得到控制输出量给到仿真器
仿真器根据控制量通过无人机动力学模型再次解算出仿真模拟数据反馈给飞控软件
PX4与仿真器形成闭环回路
PX4支持多种仿真器,包括gazebo、AirSim、 jMAVSim、 FlightGear、 JSBSim,这里不再展开。
硬件在环仿真HITL
HITL与SITL的区别是飞控软件运行在真实飞控硬件中,而仿真器依然运行在仿真PC中,进行真实环境与飞行器动力学模型的仿真计算。
飞控软件与真实工况相比不同之处在于通过USB从仿真PC获取传感器数据并将控制指令发送给仿真PC。
HITL相对于SITL的优点是飞控软件运行在真实飞控硬件中,在仿真测试中飞控运行的flash、ram、线程堆栈以及线程的cpu占用率等状态与实际工况相差更小,
下图为PX4 HITL的组件关系图:
硬件仿真SIH
SIH与HITL相比,它将仿真模型也运行在飞控中,脱离了仿真PC,PC仅用于地面站的状态显示。
它不需要保证飞控与仿真PC的时间同步,不需要性能强大的PC。
飞控在执行正常的飞控任务的同时需要运行仿真模型任务,因此对飞控的性能有一定的要求(fmuv2版本的fmu不支持),同时由于仿真任务的运行与真实的工况也是有一定的区别。
SIH模型算法在src/modules/sih,通过sih start命令启动仿真模型
SIH可以模拟基本的陀螺仪、加速度计、罗盘、gps、气压计、高度计数据,可以满足基本的仿真需求,不过不能模拟更加复杂的传感器,比如激光雷达、摄像头以及复杂的环境场景和复杂的机架构型模型。
总结
简单的介绍了一下三种仿真方式的特点,大家可以根据PX4的开发者文档,很快的上手飞控的仿真,然后实现一些有趣的功能。
PX4也提供了与ROS/ROS2的接口,在仿真时接入ROS的环境,进行SLAM、机器视觉、路径规划等算法的仿真。关于PX4的ROS/ROS2的支持在后面的文章中与大家分享。
往期分享:
PX4-12-飞行任务框架
AcmeGCS-12-地图与任务规划优化
AcmeIot-3-在嵌入式设备中运行ROS2
这里会不定期更新一些我整理的无人机相关知识,欢迎关注分享。 |
|