From b3c825d0f937ab9fa0cebeee949d45fd894d6c85 Mon Sep 17 00:00:00 2001 From: Jacob Dahl Date: Wed, 18 Mar 2026 01:11:10 -0800 Subject: [PATCH] chore(tests): remove dead integration test utilities with zero references - integrationtests/python_src/px4_it/util/manual_input.py: last meaningful change 2019, 0 refs - integrationtests/python_src/px4_it/util/px4_test_helper.py: last meaningful change 2016, 0 refs --- .../python_src/px4_it/util/manual_input.py | 168 ------------------ .../python_src/px4_it/util/px4_test_helper.py | 110 ------------ 2 files changed, 278 deletions(-) delete mode 100755 integrationtests/python_src/px4_it/util/manual_input.py delete mode 100644 integrationtests/python_src/px4_it/util/px4_test_helper.py diff --git a/integrationtests/python_src/px4_it/util/manual_input.py b/integrationtests/python_src/px4_it/util/manual_input.py deleted file mode 100755 index 66d484381c..0000000000 --- a/integrationtests/python_src/px4_it/util/manual_input.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python -#*************************************************************************** -# -# Copyright (c) 2015 PX4 Development Team. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# 3. Neither the name PX4 nor the names of its contributors may be -# used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -#***************************************************************************/ - -# -# @author Andreas Antener -# -import rospy - -from px4.msg import manual_control_setpoint -from px4.msg import offboard_control_mode -from mav_msgs.msg import CommandAttitudeThrust -from std_msgs.msg import Header - -# -# Manual input control helper -# -class ManualInput(object): - - def __init__(self): - rospy.init_node('test_node', anonymous=True) - self.pub_mcsp = rospy.Publisher('manual_control_setpoint', manual_control_setpoint, queue_size=10) - self.pub_off = rospy.Publisher('offboard_control_mode', offboard_control_mode, queue_size=10) - - def arm(self): - rate = rospy.Rate(10) # 10hz - - att = CommandAttitudeThrust() - att.header = Header() - - pos = manual_control_setpoint() - pos.x = 0 - pos.z = 0 - pos.y = 0 - pos.r = 0 - pos.mode_switch = 3 - pos.return_switch = 3 - pos.posctl_switch = 3 - pos.loiter_switch = 3 - pos.acro_switch = 0 - pos.offboard_switch = 3 - - count = 0 - while not rospy.is_shutdown() and count < 5: - rospy.loginfo("zeroing") - time = rospy.get_rostime().now() - pos.timestamp = time.secs * 1e6 + time.nsecs / 1000 - self.pub_mcsp.publish(pos) - rate.sleep() - count = count + 1 - - pos.r = 1 - count = 0 - while not rospy.is_shutdown() and count < 5: - rospy.loginfo("arming") - time = rospy.get_rostime().now() - pos.timestamp = time.secs * 1e6 + time.nsecs / 1000 - self.pub_mcsp.publish(pos) - rate.sleep() - count = count + 1 - - def posctl(self): - rate = rospy.Rate(10) # 10hz - - # triggers posctl - pos = manual_control_setpoint() - pos.x = 0 - pos.z = 0 - pos.y = 0 - pos.r = 0 - pos.mode_switch = 2 - pos.return_switch = 3 - pos.posctl_switch = 1 - pos.loiter_switch = 3 - pos.acro_switch = 0 - pos.offboard_switch = 3 - - count = 0 - while not rospy.is_shutdown() and count < 5: - rospy.loginfo("triggering posctl") - time = rospy.get_rostime().now() - pos.timestamp = time.secs * 1e6 + time.nsecs / 1000 - self.pub_mcsp.publish(pos) - rate.sleep() - count = count + 1 - - - def offboard_attctl(self): - self.offboard(False, False, True, True, True, True) - - def offboard_posctl(self): - self.offboard(False, False, True, False, True, True) - - # Trigger offboard and set offboard control mode before - def offboard(self, ignore_thrust=False, ignore_attitude=False, ignore_bodyrate=True, - ignore_position=False, ignore_velocity=True, ignore_acceleration_force=True): - rate = rospy.Rate(10) # 10hz - - mode = offboard_control_mode() - mode.ignore_thrust = ignore_thrust - mode.ignore_attitude = ignore_attitude - mode.ignore_bodyrate_x = ignore_bodyrate - mode.ignore_bodyrate_y = ignore_bodyrate - mode.ignore_bodyrate_z = ignore_bodyrate - mode.ignore_position = ignore_position - mode.ignore_velocity = ignore_velocity - mode.ignore_acceleration_force = ignore_acceleration_force - - count = 0 - while not rospy.is_shutdown() and count < 5: - rospy.loginfo("setting offboard mode") - time = rospy.get_rostime().now() - mode.timestamp = time.secs * 1e6 + time.nsecs / 1000 - self.pub_off.publish(mode) - rate.sleep() - count = count + 1 - - # triggers offboard - pos = manual_control_setpoint() - pos.x = 0 - pos.z = 0 - pos.y = 0 - pos.r = 0 - pos.mode_switch = 3 - pos.return_switch = 3 - pos.posctl_switch = 3 - pos.loiter_switch = 3 - pos.acro_switch = 0 - pos.offboard_switch = 1 - - count = 0 - while not rospy.is_shutdown() and count < 5: - rospy.loginfo("triggering offboard") - time = rospy.get_rostime().now() - pos.timestamp = time.secs * 1e6 + time.nsecs / 1000 - self.pub_mcsp.publish(pos) - rate.sleep() - count = count + 1 diff --git a/integrationtests/python_src/px4_it/util/px4_test_helper.py b/integrationtests/python_src/px4_it/util/px4_test_helper.py deleted file mode 100644 index b069b70c40..0000000000 --- a/integrationtests/python_src/px4_it/util/px4_test_helper.py +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env python -#*************************************************************************** -# -# Copyright (c) 2015 PX4 Development Team. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# 3. Neither the name PX4 nor the names of its contributors may be -# used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -#***************************************************************************/ - -# -# @author Andreas Antener -# -PKG = 'px4' - -import unittest -import rospy -import rosbag - -from px4.msg import vehicle_local_position -from px4.msg import vehicle_attitude_setpoint -from px4.msg import vehicle_attitude -from px4.msg import vehicle_local_position_setpoint - -from threading import Condition - -# -# Test helper -# -class PX4TestHelper(object): - - def __init__(self, test_name): - self.test_name = test_name - - def setUp(self): - self.condition = Condition() - self.closed = False - - rospy.init_node('test_node', anonymous=True) - self.bag = rosbag.Bag(self.test_name + '.bag', 'w', compression="lz4") - - self.sub_vlp = rospy.Subscriber("iris/vehicle_local_position", - vehicle_local_position, self.vehicle_position_callback) - self.sub_vasp = rospy.Subscriber("iris/vehicle_attitude_setpoint", - vehicle_attitude_setpoint, self.vehicle_attitude_setpoint_callback) - self.sub_va = rospy.Subscriber("iris/vehicle_attitude", - vehicle_attitude, self.vehicle_attitude_callback) - self.sub_vlps = rospy.Subscriber("iris/vehicle_local_position_setpoint", - vehicle_local_position_setpoint, self.vehicle_local_position_setpoint_callback) - - - def tearDown(self): - try: - self.condition.acquire() - self.closed = True - - self.sub_vlp.unregister() - self.sub_vasp.unregister() - self.sub_va.unregister() - self.sub_vlps.unregister() - self.bag.close() - - finally: - self.condition.release() - - def vehicle_position_callback(self, data): - self.bag_write('px4/vehicle_local_position', data) - - def vehicle_attitude_setpoint_callback(self, data): - self.bag_write('px4/vehicle_attitude_setpoint', data) - - def vehicle_attitude_callback(self, data): - self.bag_write('px4/vehicle_attitude', data) - - def vehicle_local_position_setpoint_callback(self, data): - self.bag_write('px4/vehicle_local_position_setpoint', data) - - def bag_write(self, topic, data): - try: - self.condition.acquire() - if not self.closed: - self.bag.write(topic, data) - else: - rospy.logwarn("Trying to write to bag but it's already closed") - finally: - self.condition.release()