简介:PX4/Pixhawk是一款流行的开源飞控板,其软件系统是一个固件,核心OS为NuttX实时ARM系统。其软件架构分为多个层次,包括API层、框架层、系统库和OS内核,为开发用户自定义飞控应用软件提供了基础。PX4的软件架构具有抽象性,可将飞控逻辑与底层控制器指令实现进行解耦合,提高代码重用性和无人机控制效率。
PX4/Pixhawk是一款开源飞控板,其软件系统实际上是一个固件,这与其他商业飞控板有所不同。这个固件基于一个实时ARM系统——NuttX,这是PX4飞控板的核心操作系统。
PX4的软件架构设计得相当复杂,主要分为四个层次。首先是API层,这一层相对简单,易于理解。然后是框架层,它包含了操作基础飞行控制的默认程序集(节点)。系统库层则包含了所有的系统库和基本交通控制的函数。最后是OS内核层,它提供了硬件驱动程序、网络、UAVCAN和故障安全系统等功能。
值得注意的是,这个架构是为开发者设计的,特别是那些想要开发自己的飞控应用软件的人。对于PX4的用户来说,他们通常不需要深入了解这个架构的细节。
然而,还有另一种更简单、更抽象的描述方式,它把PX4的软件从总体上分为两层:PX4 flight stack和PX4 Middleware。PX4 flight stack是一系列自治无人机自动控制算法的集合,而PX4 Middleware则是一系列针对无人机控制器、传感器等物理设备的驱动及底层通讯、调度等机制的集合。这种分层设计使得PX4软件架构更为清晰,也更容易理解。
PX4软件架构中,最有趣的一点在于其抽象性(多态性)。为了最大限度地提高飞控算法代码的重用性,PX4将飞控逻辑与具体的底层控制器指令实现进行了解耦合。这意味着一套高层飞控算法(如autopilot、GeoFence等)在不作显著修改的情况下,可以适用于固定翼、直升机、多旋翼等多种机型的控制场合。这一特性使得PX4飞控具有很高的灵活性,只需简单的修改一下机架配置参数,就可以将高层的用户自定义飞控应用应用于各种无人机平台。
在实际应用中,这种设计带来的好处是显而易见的。首先,它显著降低了代码维护成本和开发效率。其次,由于其高度的抽象性和灵活性,PX4飞控板具有很好的硬件兼容性。此外,遵循PX4的软件架构模式也更容易实现高处理性能,避免控制拥塞,提高无人机侧系统的并发处理效率。
虽然有些人可能会认为直接使用底层控制协议来控制飞控板会更高效,但实际上PX4的软件架构已经在更高的抽象层面上提供了更好的选择。这不仅降低了开发难度,也提高了整个系统的稳定性和可靠性。因此,对于那些没有太多软件经验的自动化专业出身的开发者来说,遵循PX4的软件架构模式是更好的选择。
总的来说,PX4/Pixhawk的软件架构设计得非常出色,它为用户和开发者提供了极大的便利性和灵活性。无论你是想要自己开发飞控应用软件,还是想要更好地理解和使用PX4/Pixhawk飞控板,了解其软件架构都是非常必要的。