# 无人机应用程序和应用程序接口

通过无人机应用程序接口,您可以编写代码来控制 PX4 驱动的飞行器并与之集成,而无需了解飞行器和飞行算法池的具体细节,也无需考虑安全关键行为。

例如,您可能想创建新的智能飞行模式或自定义地理围栏模式,或者集成新的硬件。无人机应用程序接口允许您使用自己选择的编程语言中的高级指令来实现这些功能,然后这些代码可以在车载系统中运行。 配套电脑 或地面站。在引擎盖下,应用程序接口通过以下方式与 PX4 通信 MAVLinkRTPS.

PX4 支持以下 SDK/机器人工具:

# 我应该使用什么应用程序接口?

我们建议尽可能使用 MAVSDK,主要是因为它更直观、更易学。它还可以在更多的操作系统和性能较差的硬件上运行。

如果您已经知道如何使用 ROS,或者您想利用已有的集成(例如计算机视觉任务),您可能会更喜欢 ROS。一般来说,对于需要极低延迟或与 PX4 进行比 MAVLink 更深入集成的任务,ROS 可能是更好的选择。

主要区别在于

  • MAVSDK:
    • 操作直观,针对无人机进行了优化,学习曲线小,设置简单。
    • 您可以用 C++、Python、Swift、Java、Go 等语言编写应用程序。
    • 在资源有限的硬件上运行
    • 可在安卓、Linux、Windows 等多种操作系统上运行。
    • 通过 MAVLink 进行通信。
      • 稳定并得到广泛支持。
      • 仅限于 MAVLink 服务 - 所需信息可能不会公开。
      • 对于某些用例,延迟可能过高。
  • ROS:
    • 通用机器人应用程序接口,已扩展至支持无人机集成:
      • 在概念上没有为无人机进行优化
      • 显著的学习曲线
    • 许多已有库:有利于代码重复使用。
    • 支持 C++ 和 Python 库
    • 在 Linux 上运行
    • ROS2 是通过 DDS 连接的最新版本。
      • DDS 接口层允许深度集成到 PX4 作为 UORB 主题暴露的任何方面(几乎所有方面)。
      • 可提供更低的延迟。
      • 仍在开发中。在编写本报告时,需要对 PX4 有比 ROS1 更深入的了解
    • ROS1 是旧版本,可通过 MAVLink 或 ROS2 连接。我们鼓励用户为新项目更新到 ROS2。