# 使用 ROS 进行集成测试

本主题介绍如何运行(和扩展)PX4 基于 ROS 的集成测试。

备注

MAVSDK 集成测试 是编写新测试时的首选。使用基于 ROS 的集成测试框架处理以下用例 要求 ROS(如物体回避)。

所有 PX4 集成测试都由我们的 持续集成 系统

# 先决条件

# 执行测试

运行 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 官方文档还包含如何使用 单元测试 (打开新窗口) (测试套件的基础)。

编写新测试

  1. 复制下面的空测试骨架,创建新的测试脚本:

    #!/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, 马夫罗斯新测试)
    
  2. 仅运行新测试

    • 启动模拟器
      CD <;PX4-Autopilot_clone>;
      消息来源 Tools/simulation/gazebo/setup_gazebo.bash roslaunch launch/mavros_posix_sitl.launch
      
    • 运行测试(在新 shell 中):
      cd <PX4-Autopilot_clone> source Tools/simulation/gazebo/setup_gazebo.bash rosrun px4 mavros_new_test.py
      
  3. 在启动文件中添加新的测试节点

    • 测试/ 新建 <测试名称>.测试 ROS 启动文件。
    • 使用其中一个基本脚本调用测试文件 rostest_px4_run.shrostest_avoidance_run.sh
  4. (可选) 在 Makefile 中创建一个新目标

    • 打开 Makefile
    • 搜索 测试 部分
    • 添加新目标名称并调用测试

    例如

    测试_<;新测试目标名称>;:rostest @";$(SRC_DIR)";/test/rostest_px4_run.sh mavros_posix_tests_<;新测试>;.测试
    

运行上述测试。