跳到主要内容

4.1 PX4

PX4 支持通过MAVLink Shell系统控制台 进行终端访问系统 。

以下内容解释了主要区别以及如何使用 MAVLink Shell和系统控制台。

PX4 系统控制台提供对系统的低级访问、调试输出和系统启动过程的分析:

只有一个 系统控制台,它在一个特定的 UART(调试端口,如 NuttX 中配置的)上运行,并且通常通过 FTDI 电缆(或其他一些调试适配器,如 Zubax BugFace BF1 )连接到计算机 。

  • 用于 低级调试/开发 :启动、NuttX、启动脚本、板启动、PX4 核心部分的开发(例如 uORB)。
  • 特别是,这是打印所有启动输出(包括有关启动时自动启动的应用程序的信息)的唯一地方。

MAVLink Shell 提供对系统的更高级别的访问:

  • 用于基本模块测试/运行命令。
  • 直接 显示您启动的模块的输出。
  • 无法 直接 显示工作队列上运行的任务的输出。
  • 当系统未启动时(因为尚未运行)无法调试问题。

信息

dmesg 命令现在可以通过部分主板上的 shell 运行,从而支持比以前更低级别的调试。例如, dmesg -f & 您还可以看到后台任务的输出。

可以有多个 Shell,它们要么运行在专用 UART 上,要么通过 MAVLink 运行。由于 MAVLink 提供了更大的灵活性,目前仅 使用 MAVLink Shell 。

在系统无法启动时,系统 控制台 至关重要(它会在主板断电重启时显示系统启动日志)。MAVLink Shell 设置起来更容易,因此通常更推荐用于大多数调试。

MAVLink Shell 是一个 NSH 控制台 ,可以通过串行(USB/Telemetry)或 WiFi(UDP/TCP)链路(特别是在基于 NuttX 的系统上,如:Pixhawk、Pixracer 等)通过 MAVLink 访问。

  • FC USB连接到PC

Shell 可用于运行命令和模块,并显示它们的输出。虽然 Shell 无法 直接 显示其未启动的模块的输出,但它可以使用 dmesg 命令间接显示( dmesg -f & 可用于显示工作队列中运行的其他模块和任务的输出)。

访问 shell 的最简单方法是使用 QGroundControl MAVLink 控制台 (参见 Analyze View > Mavlink Console )。控制台仅当连接到运行_PX4飞行组件的硬件_时才有效。不支持 PX4 SITL 和 ArduPilot。

这项功能对开发者来说非常有用,因为它允许深度访问系统。特别是,如果您通过 Wi-Fi 连接,则可以在飞行器飞行时获得相同级别的访问权限。

分析视图 MAVLink 控制台

视图不显示任何输出,除非响应命令。连接车辆后,您可以在提供的栏中输入命令(要查看可用命令的完整列表,请输入:)?

命令输出显示在命令栏上方的视图中。单击**“显示最新”**可跳转到命令输出的底部。

您还可以使用mavlink_shell.py脚本在终端中访问 shell :

  1. 关闭_QGroundControl_。

  2. 安装依赖项:

    pip3 install --user pymavlink pyserial
  3. 打开终端(在 PX4-Autopilot 目录中)并启动 shell:

    # For serial port
    ./Tools/mavlink_shell.py /dev/ttyACM0
    # For Wifi connection
    ./Tools/mavlink_shell.py 0.0.0.0:14550

用于mavlink_shell.py -h获取所有可用参数的描述。

PX4系统控制台设置

PX4 系统控制台 提供对系统的低级访问、调试输出和系统启动过程的分析。

提示

如果系统无法启动,则应使用控制台进行调试。MAVLink Shell 可能更适合,因为它设置起来更容易,并且可以执行 许多相同的任务

连接控制台

  • FC Debug连接到PC图

控制台通过(开发板专用)UART 连接,可使用 3.3V FTDI 线缆连接到计算机 USB 端口。这样便可使用终端应用程序访问控制台。

Pixhawk 控制器制造商应通过 符合 Pixhawk 连接器标准的专用 调试端口 公开控制台 UART 和 SWD (JTAG) 调试接口。遗憾的是,有些开发板的版本早于此标准或不符合此标准。

以下部分概述/链接了许多常见电路板的接线和系统控制台信息。

电路板专用布线

系统控制台 UART 引脚排列/调试端口通常记录在 自动驾驶仪概述页面 中(其中一些链接如下):

Pixhawk调试端口

Pixhawk 飞行控制器通常配备 Pixhawk 连接器标准调试端口 ,该端口可以是 10 针 Pixhawk Debug Full 端口或 6 针 Pixhawk Debug Mini 端口。

这些端口具有用于控制台 TX 和 RX 的引脚,可连接到 FTDI 电缆。Pixhawk Debug Mini 到 FTDI 的映射如下所示。

Pixhawk调试端口-FTDI-
1(红色)目标处理器电压N/C(用于 SWD/JTAG 调试)
2(黑色)控制台 TX(输出)5FTDI RX(黄色)
3(黑色)控制台 RX(输入)4FTDI TX(橙色)
4(黑色)SWDION/C(用于 SWD/JTAG 调试)
5(黑色)开关时钟N/C(用于 SWD/JTAG 调试)
6(黑色)接地1FTDI GND(黑色)

SWD 调试端口 页面 和单独的飞行控制器页面包含有关调试端口引脚排列的更多信息。

打开系统控制台

控制台连接完成后,使用您选择的默认串行端口工具或下面描述的默认工具:

比如,在Ubuntu 上的安装screen工具:

sudo apt-get install screen
  • 串口:Pixhawk v1 / Pixracer 使用 57600 波特

将screen连接到正确的串口,波特率为 BAUDRATE,数据位为 8,停止位为 1(使用ls /dev/tty*并观察拔出/重新插入 USB 设备时的变化)。Linux系统上的常用名称为/dev/ttyUSB0和, Mac OS 系统上的常用名称为 。/dev/ttyACM0``/dev/tty.usbserial-ABCBD

screen /dev/ttyXXX BAUDRATE 8N1

MAVLink 外壳/控制台和 系统控制台的 使用方式大致相同。

例如,键入 ls 以查看本地文件系统、 free 查看剩余的可用 RAM、 dmesg 查看启动输出。

以下是一些可以在 NuttShell 中使用来了解系统的命令。

此 NSH 命令提供剩余的可用内存:

free

top 命令显示每个应用程序的堆栈使用情况:

top

请注意,堆栈使用量是通过堆栈着色计算的,并且是自任务开始以来的最大值(而不是当前使用量)。

要查看工作队列中正在运行什么以及运行速率是多少,请使用:

work_queue status

要调试 uORB 主题:

uorb top

要检查特定的 uORB 主题:

listener <topic_name>

模块和命令参考 中列出了许多其他系统命令和模块 (例如 toplistener 等)。

提示

某些主板上可能禁用某些命令(例如,某些模块未包含在 RAM 或 FLASH 受限的主板的固件中)。在这种情况下,您将看到以下响应: command not found

更多信息

请参考PX4官方文档 https://docs.px4.io/main/en/debug/consoles.html