菜单

PX4 Drone App & APIs

下载

参考资料:

Drone Apps & APIs | PX4 Guide (main)

PX4无人机API概述

无人机API允许您编写代码来控制和集成PX4动力飞行器,而无需了解飞行器和飞行堆栈的详细信息,也不必考虑安全关键行为。

例如,您可能希望创建新的“智能”飞行模式,或自定义地理围栏模式,或集成新硬件。无人机API允许您使用所选编程语言中的高级指令来实现这一点,然后代码可以在车载配套计算机或地面站上运行。在引擎盖下,API使用MAVLink或uXRCE DDS与PX4通信。

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

我该选择哪种API接口?

PX4官方建议在可能的情况下使用MAVSDK,主要是因为它更直观、更容易学习,并且可以在更多的操作系统和性能较低的硬件上运行。 如果你已经知道如何使用ROS,或者你想利用已有的集成(例如计算机视觉任务),你可能更喜欢ROS。更一般地说,对于需要非常低延迟或与PX4深度集成的任务,ROS可能是比MAVLink提供的更好的选择。

以下是主要区别:

  • MAVSDK:
    • 直观且针对无人机进行了优化,学习曲线小,设置简单。
    • 你可以用C++、Python、Swift、Java、Go等编写应用程序。
    • 在资源受限的硬件上运行
    • 可在多种操作系统上运行,包括Android、Linux、Windows。
    • 通过MAVLink进行通信。
    • 稳定且得到广泛支持。
    • 仅限于MAVLink服务-所需信息可能不会公开。
    • 对于某些用例,延迟可能太高。
  • ROS 2
    • 通用机器人API已扩展为支持无人机集成:
    • 从概念上讲,没有MAVSDK那么适合无人机
    • 显著的学习曲线
    • 许多预先存在的库:对代码重用有用。
    • 支持C++和Python库
    • 在Linux上运行
    • ROS 2是最新版本,通过XRCE-DDS连接。
    • DDS接口层允许深度集成到作为UORB主题公开的PX4的任何方面(几乎所有方面)。
    • 可以提供更低的延迟。
    • 仍在开发中:
      • 在撰写本文时,需要比ROS 1更深入地了解PX4。
        • 与PX4的消息接口在ROS和PX4版本中不稳定/未得到维护。
  • ROS1(弃用的API)
    • 虽然没有严格弃用,但ROS 1处于其最终的LTS版本“Noetic Ninjamys”,该版本将于2025年5月结束。这意味着不会提供新功能或错误修复,甚至安全更新也将在2025年停止。 ROS 1仍然在PX4上“工作”,因为它使用MAVROS,一个MAVLINK-ROS抽象作为集成层。这意味着ROS 1具有MAVLink的所有限制,例如更高的延迟和较小的API表面(以及诸如稳定界面等优点)。PX4对ROS的所有投资都将用于与ROS 2的深度集成。这将基本上使ROS 2应用程序与PX4本身运行的代码几乎无法区分。
  • DroneKit(弃用的API)
    • DroneKit-Python是一个用Python编写的MAVLink API。它没有针对PX4进行优化,也有几年没有进行维护。

Offboard模式控制

Offboard control is dangerous. It is the responsibility of the developer to ensure adequate preparation, testing and safety precautions are taken before offboard flights.

The idea behind off-board control is to be able to control the PX4 flight stack using software running outside of the autopilot. This is done through the MAVLink protocol, specifically the SET_POSITION_TARGET_LOCAL_NED and the SET_ATTITUDE_TARGET messages.

PX4固件设置

Enable RC Override

In QGroundControl you can set the COM_RC_OVERRIDE parameter to automatically switch from offboard mode (or any mode) to Position mode if the RC sticks are moved. This is the best way to ensure that an operator can easily take control of the vehicle and switch to the safest flight mode.

Map an RC switch to offboard mode activation

In QGroundControl you can set the RC_MAP_OFFB_SW parameter to the RC channel that will be used to activate offboard mode. This can be used to switch between offboard mode and the mode set by the mode switch (RC_MAP_MODE_SW). You can also switch into offboard mode using a GCS/MAVLink so this is not "mandatory".

Note also that this mechanism is not as "safe" as using RC Override to switch out of offboard mode, because the mode you switch to is unpredictable.

使能机载电脑的连接接口

  • 串口设置
  • EKF2参数设置
  • 等等...

安装在车辆上的小型计算机通过UART到USB适配器连接到自动驾驶仪,同时还与运行ROS的地面站有WiFi连接。这可以是上述部分中的任何一台计算机,再加上WiFi适配器。

硬件连接

通过数传连接飞控与地面电脑

无人机上放置机载电脑

无人机上放置机载电脑(机载电脑通过wifi转发MAVLink连接QGC)

上一个
PX4多旋翼无人机飞行模式(Flight Mode)
下一个
PX4无人机调参
最近修改: 2025-02-13