# 使用 ROS 进行集成测试
本主题介绍如何运行(和扩展)PX4 基于 ROS 的集成测试。
# 先决条件
# 执行测试
运行 MAVROS 测试:
消息来源 <;catkin_ws>;/devel/setup.bash
CD <;PX4-Autopilot_clone>;
生产 px4_sitl_default sitl_gazebo
生产 <;测试目标>;
测试目标
是一个 makefile 目标: 任务测试, 任务覆盖测试, 测试 和 避免测试.
也可以直接运行测试脚本来执行测试。 测试/
:
消息来源 <;catkin_ws>;/devel/setup.bash
CD <;PX4-Autopilot_clone>;
生产 px4_sitl_default sitl_gazebo ./test/<;test_bash_script>; <;测试启动文件>;
例如
./test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test
还可以使用图形用户界面运行测试,查看测试结果(默认情况下测试无头运行):
./test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test gui:=真无头:=错误
.测试 文件中定义的相应 Python 测试。 integrationtests/python_src/px4_it/mavros/
# 编写新的 MAVROS 测试(Python)
本节介绍如何使用 ROS(1)/MAVROS 编写新的 python 测试、测试并将其添加到 PX4 测试套件中。
我们建议您查看现有的测试作为示例/启发 (integrationtests/python_src/px4_it/mavros/ (打开新窗口)).ROS 官方文档还包含如何使用 单元测试 (打开新窗口) (测试套件的基础)。
编写新测试
复制下面的空测试骨架,创建新的测试脚本:
#!/usr/bin/env python # [... 许可证...] # # @author 示例作者 <[email protected]>; # PKG = px4 舶来品 单元测试 舶来品 蟑螂 舶来品 挎包 从 传感器.信息 舶来品 NavSatFix 类 马夫罗斯新测试(单元测试.测试用例): """测试说明"""; 捍卫 设置(自我): 蟑螂.初始节点(测试节点, 匿名=正确) 蟑螂.等待服务(mavros/cmd/arming, 30) 蟑螂.订阅者("mavros/global_position/global";, NavSatFix, 自我.global_position_callback) 自我.费率 = 蟑螂.费率(10) # 10 赫兹 自我.has_global_pos = 假的 捍卫 拆除(自我): 通过 # # 测试中使用的一般回调函数 # 捍卫 global_position_callback(自我, 数据): 自我.has_global_pos = 正确 捍卫 测试方法(自我): """测试方法描述"""; # FIXME: hack to wait for simulation to be ready 虽然 不 自我.has_global_pos: 自我.费率.睡眠() # TODO: 执行测试 如果 姓名____ == '__main__'(__main__: 舶来品 rostest rostest.玫瑰(PKG, mavros_new_test, 马夫罗斯新测试)
仅运行新测试
- 启动模拟器
CD <;PX4-Autopilot_clone>; 消息来源 Tools/setup_gazebo.bash roslaunch launch/mavros_posix_sitl.launch
- 运行测试(在新 shell 中):
cd <PX4-Autopilot_clone> source Tools/setup_gazebo.bash rosrun px4 mavros_new_test.py
- 启动模拟器
在启动文件中添加新的测试节点
- 在
测试/
新建<测试名称>.测试
ROS 启动文件。 - 使用其中一个基本脚本调用测试文件 rostest_px4_run.sh 或 rostest_avoidance_run.sh
- 在
(可选) 在 Makefile 中创建一个新目标
- 打开 Makefile
- 搜索 测试 部分
- 添加新目标名称并调用测试
例如
测试_<;新测试目标名称>;:rostest @";$(SRC_DIR)";/test/rostest_px4_run.sh mavros_posix_tests_<;新测试>;.测试
运行上述测试。
← MAVSDK 集成测试 Docker 容器 →