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
获取所有可用参数的描述。