使用 MAVSDK 进行集成测试
PX4 可以端到端测试,也可以使用基于以下内容的集成测试 MAVSDK.
这些测试主要是针对 SITL 开发的,并在持续集成(CI)中运行。今后,我们计划将其推广到任何平台/硬件。
下面的说明介绍了如何在本地设置和运行测试。
先决条件
设置开发人员环境
如果你还没有这样做:
安装 利纳克斯 或 MacOS (不支持 Windows)。 经典仿真场景Gazebo 是必需的,默认情况下应该安装。
- 吁
Git 复制 https://github.com/PX4/PX4-Autopilot.git --递归 CD PX4-自动驾驶仪
构建 PX4 进行测试
要为模拟器测试构建 PX4 源代码,请使用
吁
DONT_RUN=1 生产 px4_sitl 古董 mavsdk_tests
安装 MAVSDK C++ 库
测试需要在整个系统中安装 MAVSDK C++ 库(例如在 /usr/lib
或 /usr/local/lib
).
从二进制文件或源代码安装:
- MAVSDK > C++ > C++ QuickStart:在支持的平台上作为预编译库安装(推荐)
- MAVSDK > C++ 指南 > 从源代码构建:从源代码构建 C++ 库。
运行所有 PX4 测试
中定义的所有 SITL 测试。 sitl.json你会的
吁
test/mavsdk_tests/mavsdk_test_runner.py test/mavsdk_tests/configs/sitl.json --速度系数 10
这将列出所有测试,然后按顺序运行。
要查看所有可能的命令行参数,请使用 -h
争论:
吁
test/mavsdk_tests/mavsdk_test_runner.py -h
使用: mavsdk_test_runner.py [-h] [--log-dir LOG_DIR] [--speed-factor SPEED_FACTOR] [--iterations ITERATIONS] [--abort-early] [--gui] [--model MODEL]
[--case CASE] [--debugger DEBUGGER] [--verbose] [--case CASE] [--debugger DEBUGGER] [--verbose]
配置文件
位置 争论:
配置文件 JSON 配置 文件 至 使用
可选的 争论:
-h, --帮助 展览 此 帮助 信息 和 出口
--日志路径 LOG_DIR 目录 对于 登录 文件
--速度系数 速度系数
如何 快 至 运行 的 仿真
--迭代 试 验
如何 时常 至 运行 一应俱全 试验
--早 中止 关于 第一次 不成功 测试
--桂 展示 的 可视化 对于 a 仿真
--模型 型号 只是 运行 试验 对于 一种 模型
--案例 案例 只是 运行 试验 对于 一种 个案
--调试器 调试器 选择 从 valgrind、 callgrind、 gdb、 lldb
--verbose 以便 更多 冗长 产量
运行一次测试
通过指定 模型
和测试 个案
作为命令行选项。例如,要在任务中测试尾随者的飞行,可以运行
吁
test/mavsdk_tests/mavsdk_test_runner.py test/mavsdk_tests/configs/sitl.json --速度系数 10 --模型 尾随者 --案例 执行 VTOL 任务;
找出当前模型集及其相关测试用例的最简单方法是运行所有 PX4 测试 如上图 (注意,如果只想测试一个,可以取消构建)。
在撰写本报告时,运行所有测试后生成的清单如下:
吁
关于 至 运行 39 测试 案件 对于 3 选定的 模型 (1 迭代):
- 鸢尾花
- '任务期间 GPS 丢失时着陆(巴罗高度模式)';
- '任务期间 GPS 丢失时着陆(GPS 高度模式)';
- '继续执行任务时丢失的弹匣';
- '继续执行任务期间丢失的气压计(气压计高度模式)';
- '继续执行任务期间丢失的气压计(GPS 高度模式)';
- '继续执行任务时卡住的气压计(气压计高度模式)';
- '继续执行任务时卡住的气压计(GPS 高度模式)';
- 起飞和降落';
- '飞行方形多旋翼任务,包括 RTL';
- '使用手动 RTL 执行方形多旋翼飞行任务';
- '直飞多旋翼飞行任务';
- '机外起降';
- '机外位置控制';
- '在位置控制中向前飞';
- '控制高度向前飞行';
- standard_vtol:
- '任务期间 GPS 丢失时着陆(巴罗高度模式)';
- '任务期间 GPS 丢失时着陆(GPS 高度模式)';
- '继续执行任务时丢失的弹匣';
- '继续执行任务期间丢失的气压计(气压计高度模式)';
- '继续执行任务期间丢失的气压计(GPS 高度模式)';
- '继续执行任务时卡住的气压计(气压计高度模式)';
- '继续执行任务时卡住的气压计(GPS 高度模式)';
- 起飞和降落';
- '飞行方形多旋翼任务,包括 RTL';
- '使用手动 RTL 执行方形多旋翼飞行任务';
- '在位置控制中向前飞';
- '控制高度向前飞行';
- 尾随者
- '任务期间 GPS 丢失时着陆(巴罗高度模式)';
- '任务期间 GPS 丢失时着陆(GPS 高度模式)';
- '继续执行任务时丢失的弹匣';
- '继续执行任务期间丢失的气压计(气压计高度模式)';
- '继续执行任务期间丢失的气压计(GPS 高度模式)';
- '继续执行任务时卡住的气压计(气压计高度模式)';
- '继续执行任务时卡住的气压计(GPS 高度模式)';
- 起飞和降落';
- '飞行方形多旋翼任务,包括 RTL';
- '使用手动 RTL 执行方形多旋翼飞行任务';
- '在位置控制中向前飞';
- '控制高度向前飞行';
实施说明
测试从测试运行脚本中调用 mavsdk_test_runner.py是用 Python 编写的。
除 MAVSDK 外,该运行程序还会启动
px4
以及 Gazebo 进行 SITL 测试,并收集这些进程的日志。测试运行程序是一个 C++ 二进制文件,其中包含
使用的术语:
- "型号":这是选定的仿真场景Gazebo型号,例如
马兰花
. - 测试用例":这是一个 catch2 测试用例.