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设置
MAVLink Shell 是一个 NSH 控制台 ,可以通过串行(USB/Telemetry)或 WiFi(UDP/TCP)链路(特别是在基于 NuttX 的系统上,如:Pixhawk、Pixracer 等)通过 MAVLink 访问。
- FC USB连接到PC
Shell 可用于运行命令和模块,并显示它们的输出。虽然 Shell 无法 直接 显示其未启动的模块的输出,但它可以使用 dmesg
命令间接显示( dmesg -f &
可用于显示工作队列中运行的其他模块和任务的输出)。
通过QGroundControl MAVLink 控制台
访问 shell 的最简单方法是使用 QGroundControl MAVLink 控制台 (参见 Analyze View > Mavlink Console )。控制台仅当连接到运行_PX4飞行组件的硬件_时才有效。不支持 PX4 SITL 和 ArduPilot。
这项功能对开发者来说非常有用,因为它允许深度访问系统。特别是,如果您通过 Wi-Fi 连接,则可以在飞行器飞行时获得相同级别的访问权限。
视图不显示任何输出,除非响应命令。连接车辆后,您可以在提供的栏中输入命令(要查看可用命令的完整列表,请输入:)?
。
命令输出显示在命令栏上方的视图中。单击**“显示最新”**可跳转到命令输出的底部。
通过PX4-Autopilot源码自带mavlink_shell.py
您还可以使用mavlink_shell.py脚本在终端中访问 shell :
-
关闭_QGroundControl_。
-
安装依赖项:
pip3 install --user pymavlink pyserial
-
打开终端(在 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(输出) | 5 | FTDI RX(黄色) |
3(黑色) | 控制台 RX(输入) | 4 | FTDI TX(橙色) |
4(黑色) | SWDIO | N/C(用于 SWD/JTAG 调试) | |
5(黑色) | 开关时钟 | N/C(用于 SWD/JTAG 调试) | |
6(黑色) | 接地 | 1 | FTDI 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
PX4系统控制台/MAVLink Shell使用方式
MAVLink 外壳/控制台和 系统控制台的 使用方式大致相同。
例如,键入 ls
以查看本地文件系统、 free
查看剩余的可用 RAM、 dmesg
查看启动输出。
以下是一些可以在 NuttShell 中使用来了解系统的命令。
此 NSH 命令提供剩余的可用内存:
free
top 命令显示每个应用程序的堆栈使用情况:
top
请注意,堆栈使用量是通过堆栈着色计算的,并且是自任务开始以来的最大值(而不是当前使用量)。
要查看工作队列中正在运行什么以及运行速率是多少,请使用:
work_queue status
要调试 uORB 主题:
uorb top
要检查特定的 uORB 主题:
listener <topic_name>
模块和命令参考 中列出了许多其他系统命令和模块 (例如 top
, listener
等)。
提示
某些主板上可能禁用某些命令(例如,某些模块未包含在 RAM 或 FLASH 受限的主板的固件中)。在这种情况下,您将看到以下响应: command not found