Skip to content

无人机应用程序与API

无人机API使你能够编写代码来控制搭载PX4的飞行器,并与之集成,而无需深入了解飞行器和飞行堆栈的细节,也无需操心安全关键行为。

例如,你可能想要创建新的 “智能” 飞行模式、自定义地理围栏模式,或者集成新硬件。无人机API允许你使用自己选择的编程语言中的高级指令来实现这些功能,代码可以在飞行器上的机载计算机中运行,也可以在地面站运行。在底层,这些API通过MAVLinkuXRCE - DDS 与PX4进行通信。

PX4支持以下软件开发工具包(SDK)/机器人技术工具:

我该使用哪种API?

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

如果你已经熟悉ROS的使用方法,或者希望利用现有的集成功能(例如计算机视觉任务),那么你可能会更喜欢ROS。一般来说,对于那些需要非常低延迟,或者需要比MAVLink提供的更深度集成PX4的任务,ROS可能是更好的选择。

它们的主要区别如下:

MAVSDK:

  • 易用性与针对性:直观且针对无人机进行了优化,学习曲线平缓,设置简单。
  • 编程语言支持:你可以使用C++、Python、Swift、Java、Go等多种语言编写应用程序。
  • 硬件适应性:可在资源受限的硬件上运行。
  • 操作系统兼容性:可在包括安卓、Linux、Windows在内的广泛操作系统上运行。
  • 通信协议:通过MAVLink进行通信。
    • 优点:稳定且得到广泛支持。
    • 缺点:受限于MAVLink服务,所需信息可能无法获取;对于某些用例,延迟可能过高。

ROS 2

  • 通用性与针对性:通用型机器人API,已扩展支持无人机集成。
    • 缺点:从概念上讲,对无人机的优化不如MAVSDK;学习曲线较陡峭。
    • 优点:有许多现成的库,便于代码复用。
  • 编程语言支持:支持C++ 和Python库。
  • 操作系统兼容性:在Linux上运行。
  • 通信协议:ROS 2是最新版本,通过XRCE - DDS连接。
    • 优点:DDS接口层允许深度集成到PX4以UORB主题形式暴露的任何方面(几乎涵盖所有方面);可以提供低得多的延迟。
    • 缺点:仍在开发中。在撰写本文时,相比ROS 1,需要对PX4有更深入的了解;与PX4的消息接口在ROS和PX4版本间不稳定,缺乏维护。

已弃用的API

ROS 1

虽然严格来说尚未弃用,但ROS 1目前处于其最后一个长期支持版本 “Noetic Ninjemys”,该版本将于2025年5月终止支持。这意味着届时将不再提供新功能或错误修复,甚至安全更新也将在2025年停止。

ROS 1在PX4上仍然 “可用”,因为它使用MAVROS,这是一个MAVLINK - ROS抽象层作为集成层。这意味着ROS 1具有MAVLink的所有局限性,例如较高的延迟和较小的API 表面(当然也有其优点,例如稳定的接口)。

PX4在ROS方面的所有投入都将用于与ROS 2的深度集成。这将使ROS 2应用程序与在PX4中直接运行的代码几乎没有区别。

TIP

新项目请使用ROS 2。现有项目请尽快升级到ROS 2。

DroneKit

DroneKit - Python是一个用Python编写的MAVLink API。它并非针对PX4的使用进行优化,并且已有数年未维护。使用PX4和DroneKit的旧版文档可在此处找到:PX4 v1.12 > DroneKit

TIP

MAVSDK 是推荐用于PX4的MAVLink API。它在几乎所有方面都更出色:功能、速度、编程语言支持、维护等。