跳至内容

使用 ROS 进行集成测试

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

信息

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

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

先决条件

执行测试

运行 MAVROS 测试:

消息来源 <;catkin_ws>;/devel/setup.bash
CD <;PX4-Autopilot_clone>;
生产 px4_sitl_default sitl_gazebo
生产 <;测试大车t>;

测试目标 是一个 makefile 目标: 任务测试, 任务覆盖测试, 测试避免测试.

也可以直接运行测试脚本来执行测试。 测试/:

消息来源 <;catkin_ws>;/devel/setup.bash
CD <;PX4-Autopilot_clone>;
生产 px4_sitl_default sitl_gazebo
./test/<test_bash_script>; <;测试启动文件e>;

例如

./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';
    
    舶来品 单元测试
    舶来品 蟑螂
    舶来品 挎包
    
     传感器_msgs.msg 舶来品 NavSatFix
    
     马夫罗斯新测试(单元测试.测试用例):
    	""";
    	测试说明
    	""";
    
    	捍卫 设置(自己):
    		rospy.init_node('test_node';, 匿名=正确)
    		rospy.wait_for_service('mavros/cmd/arming';, 30)
    
    		rospy.Subscriber("mavros/global_position/global";NavSatFix、 自我.global_position_callback)
    		自我.费率 = rospy.Rate(10) # 10 赫兹
    		自我.has_global_pos = 假的
    
    	捍卫 拆除(自己):
    		通过
    
    	#
    	# 测试中使用的一般回调函数
    	#
    	捍卫 global_position_callback(自我,数据):
    		自我.has_global_pos = 正确
    
    	捍卫 测试方法(自己):
    		"""测试方法描述""";
    
    		# 修正:等待模拟准备就绪的黑客程序
    		虽然 自我.has_global_pos:
    			自我.rate.sleep()
    
    		# TODO:执行测试
    
    如果 姓名____ == '__main__';:
    	舶来品 滚测
    	rostest.rosrun(PKG, 'mavros_new_test', MavrosNewTest)
  2. 仅运行新测试

    • 启动模拟器

      CD <;PX4-Autopilot_clone>;
      消息来源 Tools/simulation/gazebo/setup_gazebo.bash
      玫瑰发射 launch/mavros_posix_sitl.launch
    • 运行测试(在新 shell 中):

      CD <;PX4-Autopilot_clone>;
      消息来源 Tools/simulation/gazebo/setup_gazebo.bash
      玫瑰 px4 mavros_new_test.py
  3. 在启动文件中添加新的测试节点

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

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

    例如

    tests_<new_test_target_name>: 滚测
    	@";$(SRC_DIR)";/test/rostest_px4_run.sh mavros_posix_tests_<;新字节t>;.测试

运行上述测试。