From 2e1e8ed0f2ea1370ebd71e2e6a32eb6a6090f12f Mon Sep 17 00:00:00 2001 From: floweisshardt Date: Sun, 11 Oct 2020 21:50:38 +0200 Subject: [PATCH 01/13] activate pylint checks --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 40ef587c..3ec34dd1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,9 @@ env: global: - CATKIN_LINT=pedantic - NOT_TEST_DOWNSTREAM=true + - PYLINT_ARGS="--output-format=parseable --errors-only --ignored-modules=catkin_pkg,matplotlib.pyplot,numpy,numpy.random,rospkg,tf2_ros,yaml" + - PYLINT2_CHECK=true + - PYLINT3_CHECK=false - PARALLEL_TESTS=true - ROS_REPO=ros - VERBOSE_OUTPUT=false @@ -18,6 +21,6 @@ env: - ROS_DISTRO=kinetic - ROS_DISTRO=melodic install: - - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci.git .industrial_ci -b master + - git clone --quiet --depth 1 https://github.com/fmessmer/industrial_ci.git .industrial_ci -b master_pylint script: - .industrial_ci/travis.sh From 63e04fc69adf6579bac6f6eafffc970822699c8c Mon Sep 17 00:00:00 2001 From: floweisshardt Date: Wed, 14 Oct 2020 10:32:16 +0200 Subject: [PATCH 02/13] fix some pylint issues --- atf_core/scripts/analyser.py | 1 + atf_core/src/atf_core/recorder.py | 1 + atf_core/src/atf_core/test.py | 2 +- .../src/atf_recorder_plugins/example.py | 14 ++++++-------- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/atf_core/scripts/analyser.py b/atf_core/scripts/analyser.py index cfd71194..d483fc5e 100755 --- a/atf_core/scripts/analyser.py +++ b/atf_core/scripts/analyser.py @@ -13,6 +13,7 @@ import yaml from atf_core import ATFConfigurationParser +from atf_core.error import ATFAnalyserError from atf_msgs.msg import AtfResult, TestResult, TestblockResult, MetricResult, TestblockStatus, KeyValue, DataStamped, Groundtruth from atf_metrics import metrics_helper diff --git a/atf_core/src/atf_core/recorder.py b/atf_core/src/atf_core/recorder.py index 436a95a3..be93fe37 100644 --- a/atf_core/src/atf_core/recorder.py +++ b/atf_core/src/atf_core/recorder.py @@ -12,6 +12,7 @@ import tf from threading import Lock +from atf_core.error import ATFRecorderError from atf_msgs.msg import TestblockTrigger from diagnostic_msgs.msg import DiagnosticStatus from tf2_msgs.msg import TFMessage diff --git a/atf_core/src/atf_core/test.py b/atf_core/src/atf_core/test.py index b3d62162..3e2b023a 100644 --- a/atf_core/src/atf_core/test.py +++ b/atf_core/src/atf_core/test.py @@ -1,6 +1,7 @@ #!/usr/bin/env python from atf_msgs.msg import TestResult +from atf_core.error import ATFAnalyserError class Test: def __init__(self): @@ -18,7 +19,6 @@ def __init__(self): self.testblockset_name = None # testblocks with metrics - metrics_handle = None self.testblocks = [] def get_result(self): diff --git a/atf_recorder_plugins/src/atf_recorder_plugins/example.py b/atf_recorder_plugins/src/atf_recorder_plugins/example.py index e2ce5361..1b16e9c2 100644 --- a/atf_recorder_plugins/src/atf_recorder_plugins/example.py +++ b/atf_recorder_plugins/src/atf_recorder_plugins/example.py @@ -1,14 +1,12 @@ #!/usr/bin/env python -from atf_recorder import BagfileWriter - class Example: - def __init__(self, topic_prefix, config_file, robot_config_file, write_lock, bag_file): - self.topic_prefix = topic_prefix - self.test_config = config_file - - self.BfW = BagfileWriter(bag_file, write_lock) + def __init__(self, write_lock, bag_file_writer): + self.name = "example" + self.bag_file_writer = bag_file_writer - def trigger_callback(self, msg): + def trigger_callback(self, testblock_name): # Process Trigger + # e.g. write to bag file + # self.bag_file_writer.write_to_bagfile(TOPIC, MSG, STAMP) pass From a4078985c4aea86ab13a6522091b373825764f75 Mon Sep 17 00:00:00 2001 From: fmessmer Date: Sun, 18 Oct 2020 15:17:43 +0200 Subject: [PATCH 03/13] proper python modules, cleanup, pylint fixes --- .travis.yml | 2 +- atf/package.xml | 1 + atf_core/scripts/analyser.py | 5 ++-- atf_core/scripts/cleaner.py | 2 +- atf_core/scripts/generate_tests.py | 8 ++----- atf_core/scripts/sm_test.py | 10 ++++---- atf_core/src/atf_core/__init__.py | 8 ------- atf_core/src/atf_core/atf.py | 17 +++++++------- atf_core/src/atf_core/configuration_parser.py | 10 ++++---- atf_core/src/atf_core/recorder.py | 16 ++++++------- atf_core/src/atf_core/sm_atf.py | 1 - atf_core/src/atf_core/testblock.py | 2 +- atf_metrics/package.xml | 1 + atf_metrics/src/atf_metrics/__init__.py | 12 ---------- .../src/atf_metrics/calculate_interface.py | 3 +-- .../src/atf_metrics/calculate_publish_rate.py | 2 +- .../calculate_tf_acceleration_translation.py | 7 +++--- .../calculate_tf_distance_rotation.py | 7 +++--- .../calculate_tf_distance_translation.py | 7 +++--- .../calculate_tf_jerk_translation.py | 7 +++--- .../calculate_tf_length_rotation.py | 7 +++--- .../calculate_tf_length_translation.py | 7 +++--- .../calculate_tf_velocity_translation.py | 7 +++--- atf_metrics/src/atf_metrics/calculate_time.py | 2 +- .../src/atf_metrics/calculate_user_result.py | 4 ++-- atf_metrics/src/atf_metrics/metrics_helper.py | 1 + atf_plotter/scripts/plot.py | 23 +++++++------------ atf_recorder_plugins/package.xml | 1 + .../src/atf_recorder_plugins/__init__.py | 4 ---- atf_test/scripts/application.py | 6 ++--- atf_test_tools/src/atf_test_tools/__init__.py | 1 - 31 files changed, 75 insertions(+), 116 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3ec34dd1..0955e72c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ env: global: - CATKIN_LINT=pedantic - NOT_TEST_DOWNSTREAM=true - - PYLINT_ARGS="--output-format=parseable --errors-only --ignored-modules=catkin_pkg,matplotlib.pyplot,numpy,numpy.random,rospkg,tf2_ros,yaml" + - PYLINT_ARGS="--output-format=parseable --errors-only" - PYLINT2_CHECK=true - PYLINT3_CHECK=false - PARALLEL_TESTS=true diff --git a/atf/package.xml b/atf/package.xml index 550eb69d..139c8ee3 100644 --- a/atf/package.xml +++ b/atf/package.xml @@ -15,6 +15,7 @@ atf_core atf_metrics atf_msgs + atf_plotter atf_recorder_plugins atf_test atf_test_tools diff --git a/atf_core/scripts/analyser.py b/atf_core/scripts/analyser.py index d483fc5e..f144e840 100755 --- a/atf_core/scripts/analyser.py +++ b/atf_core/scripts/analyser.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -import copy import json import os import progressbar @@ -12,9 +11,9 @@ import unittest import yaml -from atf_core import ATFConfigurationParser +from atf_core.configuration_parser import ATFConfigurationParser from atf_core.error import ATFAnalyserError -from atf_msgs.msg import AtfResult, TestResult, TestblockResult, MetricResult, TestblockStatus, KeyValue, DataStamped, Groundtruth +from atf_msgs.msg import AtfResult, TestResult, TestblockResult, MetricResult, TestblockStatus, Groundtruth from atf_metrics import metrics_helper class Analyser: diff --git a/atf_core/scripts/cleaner.py b/atf_core/scripts/cleaner.py index 1a91e9ec..fd5a92a0 100755 --- a/atf_core/scripts/cleaner.py +++ b/atf_core/scripts/cleaner.py @@ -5,7 +5,7 @@ import os import sys -from atf_core import ATFConfigurationParser +from atf_core.configuration_parser import ATFConfigurationParser class Cleaner(): diff --git a/atf_core/scripts/generate_tests.py b/atf_core/scripts/generate_tests.py index 05295b44..a436baf1 100755 --- a/atf_core/scripts/generate_tests.py +++ b/atf_core/scripts/generate_tests.py @@ -1,8 +1,5 @@ #!/usr/bin/env python import yaml -import json -import re -import itertools as it import rospkg import os import lxml.etree @@ -13,9 +10,8 @@ from xml.etree import ElementTree from xml.dom import minidom -from copy import deepcopy, copy - import atf_core +from atf_core.configuration_parser import ATFConfigurationParser class GenerateTests: def __init__(self, arguments): @@ -31,7 +27,7 @@ def __init__(self, arguments): self.test_generation_config_file = arguments[2] self.package_src_path = arguments[3] self.package_bin_path = arguments[4] - self.atf_configuration_parser = atf_core.ATFConfigurationParser(self.package_src_path, self.test_generation_config_file, skip_metrics=True) + self.atf_configuration_parser = ATFConfigurationParser(self.package_src_path, self.test_generation_config_file, skip_metrics=True) self.tests = self.atf_configuration_parser.get_tests() self.test_list = {} diff --git a/atf_core/scripts/sm_test.py b/atf_core/scripts/sm_test.py index d4faa079..dd0ad586 100755 --- a/atf_core/scripts/sm_test.py +++ b/atf_core/scripts/sm_test.py @@ -4,10 +4,12 @@ import smach import smach_ros import sys -import threading import unittest import atf_core +from atf_core.configuration_parser import ATFConfigurationParser +from atf_core.recorder import ATFRecorder +from atf_core.sm_atf import SmAtfTestblock class Recorder(): def __init__(self): @@ -24,7 +26,7 @@ def __init__(self): test_name = rospy.get_param("/atf/test_name") print "test_name:", test_name - atf_configuration_parser = atf_core.ATFConfigurationParser(package_name, test_generation_config_file) + atf_configuration_parser = ATFConfigurationParser(package_name, test_generation_config_file) tests = atf_configuration_parser.get_tests() for test in tests: #print "test.name:", test.name @@ -40,7 +42,7 @@ def __init__(self): outcome_map = {'succeeded':outcome_map_succeeded, 'error':outcome_map_error} - recorder_handle = atf_core.ATFRecorder(test) + recorder_handle = ATFRecorder(test) # Open the container with self.sm_top: @@ -57,7 +59,7 @@ def __init__(self): # Add states to the container for testblock in test.testblockset_config.keys(): #print "adding testblock:", testblock - smach.Concurrence.add(testblock, atf_core.SmAtfTestblock(testblock, recorder_handle)) + smach.Concurrence.add(testblock, SmAtfTestblock(testblock, recorder_handle)) # TODO preempt all other concurrent States as soon as one state returns 'error' diff --git a/atf_core/src/atf_core/__init__.py b/atf_core/src/atf_core/__init__.py index b1e73750..e69de29b 100644 --- a/atf_core/src/atf_core/__init__.py +++ b/atf_core/src/atf_core/__init__.py @@ -1,8 +0,0 @@ -from atf_core.atf import ATF -from atf_core.error import ATFError, ATFConfigurationError, ATFRecorderError, ATFAnalyserError -from atf_core.testblock import Testblock -from atf_core.test import Test -from atf_core.configuration_parser import ATFConfigurationParser -from atf_core.recorder import ATFRecorder -from atf_core.bagfile_helper import BagfileWriter -from atf_core.sm_atf import SmAtfTestblock diff --git a/atf_core/src/atf_core/atf.py b/atf_core/src/atf_core/atf.py index bf3bdae5..944b7faa 100644 --- a/atf_core/src/atf_core/atf.py +++ b/atf_core/src/atf_core/atf.py @@ -1,8 +1,9 @@ #!/usr/bin/env python import rospy -import atf_core import copy +from atf_core.configuration_parser import ATFConfigurationParser +from atf_core.error import ATFError from atf_msgs.msg import MetricResult, TestblockTrigger, DataStamped from smach_msgs.msg import SmachContainerStatus @@ -19,7 +20,7 @@ def __init__(self): test_name = rospy.get_param("/atf/test_name") print "test_name:", test_name - atf_configuration_parser = atf_core.ATFConfigurationParser(package_name, test_generation_config_file) + atf_configuration_parser = ATFConfigurationParser(package_name, test_generation_config_file) tests = atf_configuration_parser.get_tests() for test in tests: #print "test.name:", test.name @@ -42,7 +43,7 @@ def start(self, testblock): if testblock not in self.test.testblockset_config.keys(): error_msg = "testblock \'%s\' not in list of testblocks"%testblock self._send_error(error_msg) - raise atf_core.ATFError(error_msg) + raise ATFError(error_msg) rospy.loginfo("starting testblock \'%s\'"%testblock) trigger = TestblockTrigger() trigger.stamp = rospy.Time.now() @@ -54,7 +55,7 @@ def stop(self, testblock, metric_result = None): if testblock not in self.test.testblockset_config.keys(): error_msg = "testblock \'%s\' not in list of testblocks"%testblock self._send_error(error_msg) - raise atf_core.ATFError(error_msg) + raise ATFError(error_msg) if metric_result != None: @@ -69,25 +70,25 @@ def stop(self, testblock, metric_result = None): "metric %s is not a MetricResult. data=%s, type=%s" % ( testblock, metric_result.name, str(metric_result), type(metric_result)) self._send_error(error_msg) - raise atf_core.ATFError(error_msg) + raise ATFError(error_msg) if not isinstance(metric_result.data, DataStamped): error_msg = "metric_result.data of testblock %s for " \ "metric %s is not a DataStamped. data=%s, type=%s" % ( testblock, metric_result.name, str(metric_result.data), type(metric_result.data)) self._send_error(error_msg) - raise atf_core.ATFError(error_msg) + raise ATFError(error_msg) if not isinstance(metric_result.data.data, float) and not isinstance(metric_result.data.data, int): error_msg = "metric_result.data.data of testblock %s for " \ "metric %s is not a float or int. data=%s, type=%s" % ( testblock, metric_result.name, str(metric_result.data.data), type(metric_result.data.data)) self._send_error(error_msg) - raise atf_core.ATFError(error_msg) + raise ATFError(error_msg) if type(metric_result.details) is not list: error_msg = "metric_result.details of testblock %s for " \ "metric %s is not a list. detail=%s" % ( testblock, metric_result.name, str(metric_result.details)) self._send_error(error_msg) - raise atf_core.ATFError(error_msg) + raise ATFError(error_msg) else: rospy.loginfo("no user result set for testblock \'%s\'"%testblock) diff --git a/atf_core/src/atf_core/configuration_parser.py b/atf_core/src/atf_core/configuration_parser.py index 8a77092b..82ca42ce 100644 --- a/atf_core/src/atf_core/configuration_parser.py +++ b/atf_core/src/atf_core/configuration_parser.py @@ -1,17 +1,15 @@ #!/usr/bin/env python -import atf_core import fnmatch import yaml import rospkg -import rosparam -import atf_metrics import os -import itertools as it import json import rosbag -from atf_core import ATFConfigurationError -from atf_core import Test, Testblock +from atf_core.error import ATFConfigurationError +from atf_core.test import Test +from atf_core.testblock import Testblock +import atf_metrics class ATFConfigurationParser: def __init__(self, package_name = None, test_generation_config_file = None, skip_metrics = False): diff --git a/atf_core/src/atf_core/recorder.py b/atf_core/src/atf_core/recorder.py index be93fe37..703135ba 100644 --- a/atf_core/src/atf_core/recorder.py +++ b/atf_core/src/atf_core/recorder.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -import actionlib import roslib import rospy import rospkg @@ -7,15 +6,16 @@ import rosbag import yaml import os -import atf_recorder_plugins -import atf_core import tf from threading import Lock -from atf_core.error import ATFRecorderError -from atf_msgs.msg import TestblockTrigger -from diagnostic_msgs.msg import DiagnosticStatus from tf2_msgs.msg import TFMessage +from diagnostic_msgs.msg import DiagnosticStatus + +from actionlib.simple_action_client import SimpleActionClient +from atf_core.bagfile_helper import BagfileWriter +from atf_core.error import ATFRecorderError +import atf_recorder_plugins class ATFRecorder: @@ -42,7 +42,7 @@ def __init__(self, test): # create bag file writer handle self.lock_write = Lock() self.bag = rosbag.Bag(self.test.generation_config["bagfile_output"] + self.test.name + ".bag", 'w') - self.bag_file_writer = atf_core.BagfileWriter(self.bag, self.lock_write) + self.bag_file_writer = BagfileWriter(self.bag, self.lock_write) # Init metric recorder self.recorder_plugin_list = [] @@ -88,7 +88,7 @@ def __init__(self, test): rospy.logerr(msg) raise ATFRecorderError(msg) topic_type = topic_type[0:len(topic_type)-4] # remove "Goal" from type - client = actionlib.SimpleActionClient(action, roslib.message.get_message_class(topic_type)) + client = SimpleActionClient(action, roslib.message.get_message_class(topic_type)) # wait for action server client.wait_for_server() diff --git a/atf_core/src/atf_core/sm_atf.py b/atf_core/src/atf_core/sm_atf.py index 865dca14..a34c336a 100644 --- a/atf_core/src/atf_core/sm_atf.py +++ b/atf_core/src/atf_core/sm_atf.py @@ -3,7 +3,6 @@ import smach import smach_ros import threading -import atf_core from atf_msgs.msg import TestblockTrigger, TestblockStatus diff --git a/atf_core/src/atf_core/testblock.py b/atf_core/src/atf_core/testblock.py index 53168147..53d28b42 100644 --- a/atf_core/src/atf_core/testblock.py +++ b/atf_core/src/atf_core/testblock.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from atf_core import ATFAnalyserError +from atf_core.error import ATFAnalyserError from atf_msgs.msg import TestblockResult, TestblockStatus, Groundtruth class Testblock: diff --git a/atf_metrics/package.xml b/atf_metrics/package.xml index acb92b08..0f5618d3 100644 --- a/atf_metrics/package.xml +++ b/atf_metrics/package.xml @@ -13,6 +13,7 @@ catkin + atf_msgs rospy tf diff --git a/atf_metrics/src/atf_metrics/__init__.py b/atf_metrics/src/atf_metrics/__init__.py index eb9caddc..e69de29b 100644 --- a/atf_metrics/src/atf_metrics/__init__.py +++ b/atf_metrics/src/atf_metrics/__init__.py @@ -1,12 +0,0 @@ -# from example import Example, ExampleParamHandler -from atf_metrics.calculate_interface import CalculateInterface, CalculateInterfaceParamHandler -from atf_metrics.calculate_tf_length_translation import CalculateTfLengthTranslation, CalculateTfLengthTranslationParamHandler -from atf_metrics.calculate_tf_length_rotation import CalculateTfLengthRotation, CalculateTfLengthRotationParamHandler -from atf_metrics.calculate_tf_distance_translation import CalculateTfDistanceTranslation, CalculateTfDistanceTranslationParamHandler -from atf_metrics.calculate_tf_distance_rotation import CalculateTfDistanceRotation, CalculateTfDistanceRotationParamHandler -from atf_metrics.calculate_tf_velocity_translation import CalculateTfVelocityTranslation, CalculateTfVelocityTranslationParamHandler -from atf_metrics.calculate_tf_acceleration_translation import CalculateTfAccelerationTranslation, CalculateTfAccelerationTranslationParamHandler -from atf_metrics.calculate_tf_jerk_translation import CalculateTfJerkTranslation, CalculateTfJerkTranslationParamHandler -from atf_metrics.calculate_publish_rate import CalculatePublishRate, CalculatePublishRateParamHandler -from atf_metrics.calculate_time import CalculateTime, CalculateTimeParamHandler -from atf_metrics.calculate_user_result import CalculateUserResult, CalculateUserResultParamHandler diff --git a/atf_metrics/src/atf_metrics/calculate_interface.py b/atf_metrics/src/atf_metrics/calculate_interface.py index 7189d8e2..f378a9be 100644 --- a/atf_metrics/src/atf_metrics/calculate_interface.py +++ b/atf_metrics/src/atf_metrics/calculate_interface.py @@ -4,8 +4,7 @@ import re import rospy -from atf_core import ATFAnalyserError, ATFConfigurationError -from atf_msgs.msg import Api +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_publish_rate.py b/atf_metrics/src/atf_metrics/calculate_publish_rate.py index e69e4c37..40bbbeba 100644 --- a/atf_metrics/src/atf_metrics/calculate_publish_rate.py +++ b/atf_metrics/src/atf_metrics/calculate_publish_rate.py @@ -2,7 +2,7 @@ import math import rospy -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py index f8077300..54a8a2e8 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py @@ -4,10 +4,9 @@ import rospy import sys import tf -import tf2_py import tf2_ros -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper @@ -122,11 +121,11 @@ def get_data(self, t): sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ExtrapolationException as e: + except tf2_ros.ExtrapolationException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ConnectivityException as e: + except tf2_ros.ConnectivityException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None diff --git a/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py b/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py index 10393d4d..18c252b7 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py @@ -4,12 +4,11 @@ import rospy import sys import tf -import tf2_py import tf2_ros from tf import transformations -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper @@ -120,11 +119,11 @@ def get_data(self, t): sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ExtrapolationException as e: + except tf2_ros.ExtrapolationException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ConnectivityException as e: + except tf2_ros.ConnectivityException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None diff --git a/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py index a4bc72ab..7d2de13a 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py @@ -4,10 +4,9 @@ import rospy import sys import tf -import tf2_py import tf2_ros -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper @@ -118,11 +117,11 @@ def get_data(self, t): sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ExtrapolationException as e: + except tf2_ros.ExtrapolationException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ConnectivityException as e: + except tf2_ros.ConnectivityException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None diff --git a/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py index 59f81091..13bc0737 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py @@ -4,10 +4,9 @@ import rospy import sys import tf -import tf2_py import tf2_ros -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper @@ -123,11 +122,11 @@ def get_data(self, t): sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ExtrapolationException as e: + except tf2_ros.ExtrapolationException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ConnectivityException as e: + except tf2_ros.ConnectivityException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None diff --git a/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py b/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py index a9d22999..67997852 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py @@ -4,12 +4,11 @@ import rospy import sys import tf -import tf2_py import tf2_ros from tf import transformations -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper @@ -126,11 +125,11 @@ def get_data(self, t): sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ExtrapolationException as e: + except tf2_ros.ExtrapolationException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ConnectivityException as e: + except tf2_ros.ConnectivityException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None diff --git a/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py index a1e3511d..f7182175 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py @@ -4,10 +4,9 @@ import rospy import sys import tf -import tf2_py import tf2_ros -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper @@ -124,11 +123,11 @@ def get_data(self, t): sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ExtrapolationException as e: + except tf2_ros.ExtrapolationException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ConnectivityException as e: + except tf2_ros.ConnectivityException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None diff --git a/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py index 8c3ace64..adeb391d 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py @@ -4,10 +4,9 @@ import rospy import sys import tf -import tf2_py import tf2_ros -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper @@ -121,11 +120,11 @@ def get_data(self, t): sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ExtrapolationException as e: + except tf2_ros.ExtrapolationException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None - except tf2_py.ConnectivityException as e: + except tf2_ros.ConnectivityException as e: sys.stdout = sys.__stdout__ # restore stdout #print "Exception in metric '%s' %s %s"%(self.name, type(e), e) return None diff --git a/atf_metrics/src/atf_metrics/calculate_time.py b/atf_metrics/src/atf_metrics/calculate_time.py index 7577bab3..19efb265 100644 --- a/atf_metrics/src/atf_metrics/calculate_time.py +++ b/atf_metrics/src/atf_metrics/calculate_time.py @@ -2,7 +2,7 @@ import math import rospy -from atf_core import ATFAnalyserError, ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_user_result.py b/atf_metrics/src/atf_metrics/calculate_user_result.py index c4e9abb5..1f4ebcb3 100644 --- a/atf_metrics/src/atf_metrics/calculate_user_result.py +++ b/atf_metrics/src/atf_metrics/calculate_user_result.py @@ -2,8 +2,8 @@ import math import rospy -from atf_core import ATFAnalyserError, ATFConfigurationError -from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, TestblockStatus +from atf_core.error import ATFConfigurationError +from atf_msgs.msg import MetricResult, Groundtruth, TestblockStatus from atf_metrics import metrics_helper class CalculateUserResultParamHandler: diff --git a/atf_metrics/src/atf_metrics/metrics_helper.py b/atf_metrics/src/atf_metrics/metrics_helper.py index 5e02d17a..ea790c27 100644 --- a/atf_metrics/src/atf_metrics/metrics_helper.py +++ b/atf_metrics/src/atf_metrics/metrics_helper.py @@ -3,6 +3,7 @@ #import statistics # only available for python >3.4 import numpy +from atf_core.error import ATFAnalyserError from atf_msgs.msg import DataStamped, TestblockStatus, MetricResult def list_from_series(series): diff --git a/atf_plotter/scripts/plot.py b/atf_plotter/scripts/plot.py index d7599a09..1c17a555 100755 --- a/atf_plotter/scripts/plot.py +++ b/atf_plotter/scripts/plot.py @@ -1,27 +1,20 @@ #!/usr/bin/env python2 #-*- coding: utf-8 -*- +import sys +import time +import argparse +import numpy as np + import matplotlib.style import matplotlib as mpl mpl.style.use('classic') - -from atf_msgs.msg import AtfResult, MetricResult, TestblockStatus, Groundtruth -from atf_core import ATFConfigurationParser - import matplotlib.pyplot as plt - -import rosbag -import rospy - -import numpy as np - from matplotlib import cm -import argparse - -import sys - -import time +import rosbag +from atf_msgs.msg import AtfResult, MetricResult, TestblockStatus, Groundtruth +from atf_core.configuration_parser import ATFConfigurationParser class AtfPlotter(object): diff --git a/atf_recorder_plugins/package.xml b/atf_recorder_plugins/package.xml index 2fecac78..58d062a7 100644 --- a/atf_recorder_plugins/package.xml +++ b/atf_recorder_plugins/package.xml @@ -13,6 +13,7 @@ catkin + atf_msgs rospy diff --git a/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py b/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py index d54ff25b..e69de29b 100644 --- a/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py +++ b/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py @@ -1,4 +0,0 @@ -#from atf_recorder_plugins.plugin_resources import RecordResources -from atf_recorder_plugins.plugin_interface import RecordInterface -#from atf_recorder_plugins.plugin_obstacle_distance import RecordObstacleDistance -# from atf_recorder_plugins.example import Example diff --git a/atf_test/scripts/application.py b/atf_test/scripts/application.py index 8eaa1ab8..dc0d359e 100755 --- a/atf_test/scripts/application.py +++ b/atf_test/scripts/application.py @@ -1,13 +1,13 @@ #!/usr/bin/python import rospy -import atf_core +from atf_core.atf import ATF from atf_msgs.msg import MetricResult, Groundtruth -from atf_test_tools import PublishTf +from atf_test_tools.publish_tf import PublishTf class Application: def __init__(self): - self.atf = atf_core.ATF() + self.atf = ATF() self.ptf = PublishTf() def execute(self): diff --git a/atf_test_tools/src/atf_test_tools/__init__.py b/atf_test_tools/src/atf_test_tools/__init__.py index 843b9731..e69de29b 100644 --- a/atf_test_tools/src/atf_test_tools/__init__.py +++ b/atf_test_tools/src/atf_test_tools/__init__.py @@ -1 +0,0 @@ -from publish_tf import PublishTf From f4cafa52817b9014cb6500014d26452ea91eb59e Mon Sep 17 00:00:00 2001 From: fmessmer Date: Sun, 18 Oct 2020 16:26:21 +0200 Subject: [PATCH 04/13] properly register metrics --- atf_metrics/config/metrics.yaml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/atf_metrics/config/metrics.yaml b/atf_metrics/config/metrics.yaml index ea074975..91b6090c 100644 --- a/atf_metrics/config/metrics.yaml +++ b/atf_metrics/config/metrics.yaml @@ -1,24 +1,24 @@ # example: # handler: ExampleParamHandler interface: - handler: CalculateInterfaceParamHandler + handler: atf_metrics.calculate_interface.CalculateInterfaceParamHandler tf_length_translation: - handler: CalculateTfLengthTranslationParamHandler + handler: atf_metrics.calculate_tf_length_translation.CalculateTfLengthTranslationParamHandler tf_length_rotation: - handler: CalculateTfLengthRotationParamHandler + handler: atf_metrics.calculate_tf_length_rotation.CalculateTfLengthRotationParamHandler tf_distance_translation: - handler: CalculateTfDistanceTranslationParamHandler + handler: atf_metrics.calculate_tf_distance_translation.CalculateTfDistanceTranslationParamHandler tf_distance_rotation: - handler: CalculateTfDistanceRotationParamHandler + handler: atf_metrics.calculate_tf_distance_rotation.CalculateTfDistanceRotationParamHandler tf_velocity_translation: - handler: CalculateTfVelocityTranslationParamHandler + handler: atf_metrics.calculate_tf_velocity_translation.CalculateTfVelocityTranslationParamHandler tf_acceleration_translation: - handler: CalculateTfAccelerationTranslationParamHandler + handler: atf_metrics.calculate_tf_acceleration_translation.CalculateTfAccelerationTranslationParamHandler tf_jerk_translation: - handler: CalculateTfJerkTranslationParamHandler + handler: atf_metrics.calculate_tf_jerk_translation.CalculateTfJerkTranslationParamHandler publish_rate: - handler: CalculatePublishRateParamHandler + handler: atf_metrics.calculate_publish_rate.CalculatePublishRateParamHandler time: - handler: CalculateTimeParamHandler + handler: atf_metrics.calculate_time.CalculateTimeParamHandler user_result: - handler: CalculateUserResultParamHandler + handler: atf_metrics.calculate_user_result.CalculateUserResultParamHandler From c1d84bbd2e290a0875843f4749b88926946f614a Mon Sep 17 00:00:00 2001 From: fmessmer Date: Sun, 18 Oct 2020 17:09:22 +0200 Subject: [PATCH 05/13] revert special atf_metrics module --- atf_metrics/config/metrics.yaml | 22 +++++++++++----------- atf_metrics/src/atf_metrics/__init__.py | 12 ++++++++++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/atf_metrics/config/metrics.yaml b/atf_metrics/config/metrics.yaml index 91b6090c..ea074975 100644 --- a/atf_metrics/config/metrics.yaml +++ b/atf_metrics/config/metrics.yaml @@ -1,24 +1,24 @@ # example: # handler: ExampleParamHandler interface: - handler: atf_metrics.calculate_interface.CalculateInterfaceParamHandler + handler: CalculateInterfaceParamHandler tf_length_translation: - handler: atf_metrics.calculate_tf_length_translation.CalculateTfLengthTranslationParamHandler + handler: CalculateTfLengthTranslationParamHandler tf_length_rotation: - handler: atf_metrics.calculate_tf_length_rotation.CalculateTfLengthRotationParamHandler + handler: CalculateTfLengthRotationParamHandler tf_distance_translation: - handler: atf_metrics.calculate_tf_distance_translation.CalculateTfDistanceTranslationParamHandler + handler: CalculateTfDistanceTranslationParamHandler tf_distance_rotation: - handler: atf_metrics.calculate_tf_distance_rotation.CalculateTfDistanceRotationParamHandler + handler: CalculateTfDistanceRotationParamHandler tf_velocity_translation: - handler: atf_metrics.calculate_tf_velocity_translation.CalculateTfVelocityTranslationParamHandler + handler: CalculateTfVelocityTranslationParamHandler tf_acceleration_translation: - handler: atf_metrics.calculate_tf_acceleration_translation.CalculateTfAccelerationTranslationParamHandler + handler: CalculateTfAccelerationTranslationParamHandler tf_jerk_translation: - handler: atf_metrics.calculate_tf_jerk_translation.CalculateTfJerkTranslationParamHandler + handler: CalculateTfJerkTranslationParamHandler publish_rate: - handler: atf_metrics.calculate_publish_rate.CalculatePublishRateParamHandler + handler: CalculatePublishRateParamHandler time: - handler: atf_metrics.calculate_time.CalculateTimeParamHandler + handler: CalculateTimeParamHandler user_result: - handler: atf_metrics.calculate_user_result.CalculateUserResultParamHandler + handler: CalculateUserResultParamHandler diff --git a/atf_metrics/src/atf_metrics/__init__.py b/atf_metrics/src/atf_metrics/__init__.py index e69de29b..eb9caddc 100644 --- a/atf_metrics/src/atf_metrics/__init__.py +++ b/atf_metrics/src/atf_metrics/__init__.py @@ -0,0 +1,12 @@ +# from example import Example, ExampleParamHandler +from atf_metrics.calculate_interface import CalculateInterface, CalculateInterfaceParamHandler +from atf_metrics.calculate_tf_length_translation import CalculateTfLengthTranslation, CalculateTfLengthTranslationParamHandler +from atf_metrics.calculate_tf_length_rotation import CalculateTfLengthRotation, CalculateTfLengthRotationParamHandler +from atf_metrics.calculate_tf_distance_translation import CalculateTfDistanceTranslation, CalculateTfDistanceTranslationParamHandler +from atf_metrics.calculate_tf_distance_rotation import CalculateTfDistanceRotation, CalculateTfDistanceRotationParamHandler +from atf_metrics.calculate_tf_velocity_translation import CalculateTfVelocityTranslation, CalculateTfVelocityTranslationParamHandler +from atf_metrics.calculate_tf_acceleration_translation import CalculateTfAccelerationTranslation, CalculateTfAccelerationTranslationParamHandler +from atf_metrics.calculate_tf_jerk_translation import CalculateTfJerkTranslation, CalculateTfJerkTranslationParamHandler +from atf_metrics.calculate_publish_rate import CalculatePublishRate, CalculatePublishRateParamHandler +from atf_metrics.calculate_time import CalculateTime, CalculateTimeParamHandler +from atf_metrics.calculate_user_result import CalculateUserResult, CalculateUserResultParamHandler From 95f66e287ba76e21cf53e221ebe9219979e1f31f Mon Sep 17 00:00:00 2001 From: fmessmer Date: Sun, 18 Oct 2020 17:21:43 +0200 Subject: [PATCH 06/13] fixup: import atf_core.error --- .../src/atf_metrics/calculate_tf_velocity_translation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py index adeb391d..8151dd0c 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py @@ -6,7 +6,7 @@ import tf import tf2_ros -from atf_core import ATFConfigurationError +from atf_core.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper From 71c18afa8ed78263e60700f47be0f3e39dc2230f Mon Sep 17 00:00:00 2001 From: fmessmer Date: Fri, 6 Nov 2020 13:58:20 +0100 Subject: [PATCH 07/13] revert special atf_recorder_plugins module --- atf_recorder_plugins/src/atf_recorder_plugins/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py b/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py index e69de29b..1be44c83 100644 --- a/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py +++ b/atf_recorder_plugins/src/atf_recorder_plugins/__init__.py @@ -0,0 +1,2 @@ +# from atf_recorder_plugins.example import Example +from atf_recorder_plugins.plugin_interface import RecordInterface \ No newline at end of file From 707feab206a6537fc15592eb4783a2dbf9665de7 Mon Sep 17 00:00:00 2001 From: fmessmer Date: Fri, 6 Nov 2020 15:11:45 +0100 Subject: [PATCH 08/13] resolve cyclic dependency --- atf_core/scripts/analyser.py | 2 +- atf_core/src/atf_core/atf.py | 2 +- atf_core/src/atf_core/configuration_parser.py | 2 +- atf_core/src/atf_core/error.py | 6 ------ atf_core/src/atf_core/test.py | 2 +- atf_core/src/atf_core/testblock.py | 2 +- atf_metrics/package.xml | 1 - atf_metrics/src/atf_metrics/calculate_interface.py | 2 +- atf_metrics/src/atf_metrics/calculate_publish_rate.py | 2 +- .../atf_metrics/calculate_tf_acceleration_translation.py | 2 +- .../src/atf_metrics/calculate_tf_distance_rotation.py | 2 +- .../src/atf_metrics/calculate_tf_distance_translation.py | 2 +- .../src/atf_metrics/calculate_tf_jerk_translation.py | 2 +- atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py | 2 +- .../src/atf_metrics/calculate_tf_length_translation.py | 2 +- .../src/atf_metrics/calculate_tf_velocity_translation.py | 2 +- atf_metrics/src/atf_metrics/calculate_time.py | 2 +- atf_metrics/src/atf_metrics/calculate_user_result.py | 2 +- atf_metrics/src/atf_metrics/error.py | 6 ++++++ atf_metrics/src/atf_metrics/metrics_helper.py | 2 +- atf_recorder_plugins/package.xml | 1 - 21 files changed, 23 insertions(+), 25 deletions(-) create mode 100644 atf_metrics/src/atf_metrics/error.py diff --git a/atf_core/scripts/analyser.py b/atf_core/scripts/analyser.py index f144e840..3d71de58 100755 --- a/atf_core/scripts/analyser.py +++ b/atf_core/scripts/analyser.py @@ -12,7 +12,7 @@ import yaml from atf_core.configuration_parser import ATFConfigurationParser -from atf_core.error import ATFAnalyserError +from atf_metrics.error import ATFAnalyserError from atf_msgs.msg import AtfResult, TestResult, TestblockResult, MetricResult, TestblockStatus, Groundtruth from atf_metrics import metrics_helper diff --git a/atf_core/src/atf_core/atf.py b/atf_core/src/atf_core/atf.py index 944b7faa..8fabf75f 100644 --- a/atf_core/src/atf_core/atf.py +++ b/atf_core/src/atf_core/atf.py @@ -2,8 +2,8 @@ import rospy import copy -from atf_core.configuration_parser import ATFConfigurationParser from atf_core.error import ATFError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, TestblockTrigger, DataStamped from smach_msgs.msg import SmachContainerStatus diff --git a/atf_core/src/atf_core/configuration_parser.py b/atf_core/src/atf_core/configuration_parser.py index 82ca42ce..63eec26c 100644 --- a/atf_core/src/atf_core/configuration_parser.py +++ b/atf_core/src/atf_core/configuration_parser.py @@ -6,7 +6,7 @@ import json import rosbag -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_core.test import Test from atf_core.testblock import Testblock import atf_metrics diff --git a/atf_core/src/atf_core/error.py b/atf_core/src/atf_core/error.py index 0800f5d2..ec44d1f0 100644 --- a/atf_core/src/atf_core/error.py +++ b/atf_core/src/atf_core/error.py @@ -2,11 +2,5 @@ class ATFError(Exception): pass -class ATFConfigurationError(Exception): - pass - class ATFRecorderError(Exception): - pass - -class ATFAnalyserError(Exception): pass \ No newline at end of file diff --git a/atf_core/src/atf_core/test.py b/atf_core/src/atf_core/test.py index 3e2b023a..d6d8832e 100644 --- a/atf_core/src/atf_core/test.py +++ b/atf_core/src/atf_core/test.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from atf_msgs.msg import TestResult -from atf_core.error import ATFAnalyserError +from atf_metrics.error import ATFAnalyserError class Test: def __init__(self): diff --git a/atf_core/src/atf_core/testblock.py b/atf_core/src/atf_core/testblock.py index 53d28b42..e5f595a8 100644 --- a/atf_core/src/atf_core/testblock.py +++ b/atf_core/src/atf_core/testblock.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from atf_core.error import ATFAnalyserError +from atf_metrics.error import ATFAnalyserError from atf_msgs.msg import TestblockResult, TestblockStatus, Groundtruth class Testblock: diff --git a/atf_metrics/package.xml b/atf_metrics/package.xml index 0f5618d3..acb92b08 100644 --- a/atf_metrics/package.xml +++ b/atf_metrics/package.xml @@ -13,7 +13,6 @@ catkin - atf_msgs rospy tf diff --git a/atf_metrics/src/atf_metrics/calculate_interface.py b/atf_metrics/src/atf_metrics/calculate_interface.py index f378a9be..dc28c1cf 100644 --- a/atf_metrics/src/atf_metrics/calculate_interface.py +++ b/atf_metrics/src/atf_metrics/calculate_interface.py @@ -4,7 +4,7 @@ import re import rospy -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_publish_rate.py b/atf_metrics/src/atf_metrics/calculate_publish_rate.py index 40bbbeba..52cce277 100644 --- a/atf_metrics/src/atf_metrics/calculate_publish_rate.py +++ b/atf_metrics/src/atf_metrics/calculate_publish_rate.py @@ -2,7 +2,7 @@ import math import rospy -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py index 54a8a2e8..0593f744 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_acceleration_translation.py @@ -6,7 +6,7 @@ import tf import tf2_ros -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py b/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py index 18c252b7..f97c8d50 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_distance_rotation.py @@ -8,7 +8,7 @@ from tf import transformations -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py index 7d2de13a..22f4c5d3 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_distance_translation.py @@ -6,7 +6,7 @@ import tf import tf2_ros -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py index 13bc0737..2457557b 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_jerk_translation.py @@ -6,7 +6,7 @@ import tf import tf2_ros -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py b/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py index 67997852..ad54cd80 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_length_rotation.py @@ -8,7 +8,7 @@ from tf import transformations -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py index f7182175..4d1e32b0 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_length_translation.py @@ -6,7 +6,7 @@ import tf import tf2_ros -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py b/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py index 8151dd0c..d50384ac 100644 --- a/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py +++ b/atf_metrics/src/atf_metrics/calculate_tf_velocity_translation.py @@ -6,7 +6,7 @@ import tf import tf2_ros -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_time.py b/atf_metrics/src/atf_metrics/calculate_time.py index 19efb265..6567a0c3 100644 --- a/atf_metrics/src/atf_metrics/calculate_time.py +++ b/atf_metrics/src/atf_metrics/calculate_time.py @@ -2,7 +2,7 @@ import math import rospy -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, KeyValue, DataStamped, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/calculate_user_result.py b/atf_metrics/src/atf_metrics/calculate_user_result.py index 1f4ebcb3..7f37ad2d 100644 --- a/atf_metrics/src/atf_metrics/calculate_user_result.py +++ b/atf_metrics/src/atf_metrics/calculate_user_result.py @@ -2,7 +2,7 @@ import math import rospy -from atf_core.error import ATFConfigurationError +from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, Groundtruth, TestblockStatus from atf_metrics import metrics_helper diff --git a/atf_metrics/src/atf_metrics/error.py b/atf_metrics/src/atf_metrics/error.py new file mode 100644 index 00000000..82b1b29a --- /dev/null +++ b/atf_metrics/src/atf_metrics/error.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python +class ATFAnalyserError(Exception): + pass + +class ATFConfigurationError(Exception): + pass diff --git a/atf_metrics/src/atf_metrics/metrics_helper.py b/atf_metrics/src/atf_metrics/metrics_helper.py index ea790c27..0fe5a125 100644 --- a/atf_metrics/src/atf_metrics/metrics_helper.py +++ b/atf_metrics/src/atf_metrics/metrics_helper.py @@ -3,7 +3,7 @@ #import statistics # only available for python >3.4 import numpy -from atf_core.error import ATFAnalyserError +from atf_metrics.error import ATFAnalyserError from atf_msgs.msg import DataStamped, TestblockStatus, MetricResult def list_from_series(series): diff --git a/atf_recorder_plugins/package.xml b/atf_recorder_plugins/package.xml index 58d062a7..2fecac78 100644 --- a/atf_recorder_plugins/package.xml +++ b/atf_recorder_plugins/package.xml @@ -13,7 +13,6 @@ catkin - atf_msgs rospy From 01920512bfa738dc553f1a2c17c93f895489ee9e Mon Sep 17 00:00:00 2001 From: fmessmer Date: Fri, 6 Nov 2020 15:31:59 +0100 Subject: [PATCH 09/13] fix import --- atf_core/src/atf_core/atf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/atf_core/src/atf_core/atf.py b/atf_core/src/atf_core/atf.py index 8fabf75f..ac868bb7 100644 --- a/atf_core/src/atf_core/atf.py +++ b/atf_core/src/atf_core/atf.py @@ -3,10 +3,12 @@ import copy from atf_core.error import ATFError +from atf_core.configuration_parser import ATFConfigurationParser from atf_metrics.error import ATFConfigurationError from atf_msgs.msg import MetricResult, TestblockTrigger, DataStamped from smach_msgs.msg import SmachContainerStatus + ########### ### ATF ### ########### From 8cd2921b4d90c3fff552dcf3b2f1171c06bfc863 Mon Sep 17 00:00:00 2001 From: fmessmer Date: Fri, 6 Nov 2020 16:24:18 +0100 Subject: [PATCH 10/13] fix tests --- .travis.yml | 2 +- atf_test/atf/test_generation_config.yaml | 18 +++++++++--------- atf_test/atf/testblocksets/testblockset1.yaml | 16 ++++++++-------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0955e72c..e4cf71ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ env: - PYLINT_ARGS="--output-format=parseable --errors-only" - PYLINT2_CHECK=true - PYLINT3_CHECK=false - - PARALLEL_TESTS=true + - PARALLEL_TESTS=false - ROS_REPO=ros - VERBOSE_OUTPUT=false - VERBOSE_TESTS=true diff --git a/atf_test/atf/test_generation_config.yaml b/atf_test/atf/test_generation_config.yaml index 1d064fbe..7c1fe741 100644 --- a/atf_test/atf/test_generation_config.yaml +++ b/atf_test/atf/test_generation_config.yaml @@ -33,12 +33,12 @@ testsuites: # You have to define at least one testsuite - testblockset2 # repetitions: 1 # Number of repetitions per test (this is an optional parameter, default = 1) - - tests: - - test1 - robots: - - robot1 - envs: - - env1 - testblocksets: - - testblockset1 - repetitions: 2 + # - tests: + # - test1 + # robots: + # - robot1 + # envs: + # - env1 + # testblocksets: + # - testblockset1 + # repetitions: 2 diff --git a/atf_test/atf/testblocksets/testblockset1.yaml b/atf_test/atf/testblocksets/testblockset1.yaml index c495da4a..e757b870 100644 --- a/atf_test/atf/testblocksets/testblockset1.yaml +++ b/atf_test/atf/testblocksets/testblockset1.yaml @@ -61,14 +61,14 @@ testblock_small: root_frame: world measured_frame: reference1 groundtruth: - data: 2.0 - epsilon: 1.9999 + data: 3.0 + epsilon: 2.9999 - topics: [/tf, /tf_static] root_frame: world measured_frame: reference1_static groundtruth: - data: 2.0 - epsilon: 1.9999 + data: 3.0 + epsilon: 2.9999 tf_distance_translation: - topics: [/tf, /tf_static] root_frame: world @@ -198,14 +198,14 @@ testblock_large: root_frame: world measured_frame: reference1 groundtruth: - data: 2.0 - epsilon: 1.9999 + data: 3.0 + epsilon: 2.9999 - topics: [/tf, /tf_static] root_frame: world measured_frame: reference1_static groundtruth: - data: 2.0 - epsilon: 1.9999 + data: 3.0 + epsilon: 2.9999 tf_distance_translation: - topics: [/tf, /tf_static] root_frame: world From 4a9515f9dfd858afcf0c9bc4caa47b88e6c0ac9c Mon Sep 17 00:00:00 2001 From: fmessmer Date: Fri, 6 Nov 2020 16:24:38 +0100 Subject: [PATCH 11/13] fix pylint --- .travis.yml | 2 +- atf_core/scripts/generate_tests.py | 2 +- atf_core/src/atf_core/recorder.py | 5 +++-- atf_plotter/scripts/plot.py | 6 ------ atf_test_tools/src/atf_test_tools/publish_tf.py | 2 +- 5 files changed, 6 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index e4cf71ae..0a5f8c64 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ env: global: - CATKIN_LINT=pedantic - NOT_TEST_DOWNSTREAM=true - - PYLINT_ARGS="--output-format=parseable --errors-only" + - PYLINT_ARGS="--output-format=parseable --errors-only --ignored-modules=tf2_ros" - PYLINT2_CHECK=true - PYLINT3_CHECK=false - PARALLEL_TESTS=false diff --git a/atf_core/scripts/generate_tests.py b/atf_core/scripts/generate_tests.py index a436baf1..f3af9dcd 100755 --- a/atf_core/scripts/generate_tests.py +++ b/atf_core/scripts/generate_tests.py @@ -164,7 +164,7 @@ def generate_tests(self): xml_test({'test-name': "uploading_data", 'pkg': "atf_core", 'type': "test_dropbox_uploader.py", - 'time-limit': str(self.time_limit_uploading), + 'time-limit': str(self.atf_configuration_parser.generation_config["time_limit_uploading"]), 'args': "-f " + os.path.join(self.package_src_path, "atf/.dropbox_uploader_config") + " upload " + self.atf_configuration_parser.generation_config["bagfile_output"] + " " + os.path.join(self.package_name, "data")})) if test.generation_config["upload_result"]: diff --git a/atf_core/src/atf_core/recorder.py b/atf_core/src/atf_core/recorder.py index 703135ba..bdabbd76 100644 --- a/atf_core/src/atf_core/recorder.py +++ b/atf_core/src/atf_core/recorder.py @@ -83,11 +83,12 @@ def __init__(self, test): topic_type = rostopic._get_topic_type(action + "/goal")[0] # remove "Goal" string from action type - if topic_type == None or not "Goal" in topic_type: + if topic_type == None or not "Goal" in topic_type: ## pylint: disable=unsupported-membership-test msg = "Could not get type for action %s. type is %s"%(action, topic_type) rospy.logerr(msg) raise ATFRecorderError(msg) - topic_type = topic_type[0:len(topic_type)-4] # remove "Goal" from type + # remove "Goal" from type + topic_type = topic_type[0:len(topic_type)-4] ## pylint: disable=unsubscriptable-object client = SimpleActionClient(action, roslib.message.get_message_class(topic_type)) # wait for action server diff --git a/atf_plotter/scripts/plot.py b/atf_plotter/scripts/plot.py index 1c17a555..b68c9733 100755 --- a/atf_plotter/scripts/plot.py +++ b/atf_plotter/scripts/plot.py @@ -233,12 +233,6 @@ def plot_benchmark(self, style, sharey, hide_groundtruth, hide_min_max, filter_t filter_tests = argparse_result.test, filter_testblocks = argparse_result.testblock, filter_metrics = argparse_result.metric) - elif argparse_result.command == 'plot-series': - atf_plotter.plot_series( - filter_tests = argparse_result.test, - filter_testblocks = argparse_result.testblock, - filter_metrics = argparse_result.metric - ) elif argparse_result.command == 'info-structure': atf_plotter.print_structure() else: diff --git a/atf_test_tools/src/atf_test_tools/publish_tf.py b/atf_test_tools/src/atf_test_tools/publish_tf.py index 8da52c3c..b70f2092 100644 --- a/atf_test_tools/src/atf_test_tools/publish_tf.py +++ b/atf_test_tools/src/atf_test_tools/publish_tf.py @@ -103,7 +103,7 @@ def pub_quadrat(self, length=1, time=1, same_start_stop_orientation=True): alpha = math.pi / 2 r = np.round( np.array([ - [np.cos(alpha), -math.sin(alpha)], + [math.cos(alpha), -math.sin(alpha)], [math.sin(alpha), math.cos(alpha)], ]), 6 From 363148edc7f60dc8795cd9b69b87f644bbd559a3 Mon Sep 17 00:00:00 2001 From: fmessmer Date: Tue, 17 Nov 2020 19:17:01 +0100 Subject: [PATCH 12/13] use fmessmer/industrial_ci@master_pylint for github actions --- .github/workflows/industrial_ci_action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/industrial_ci_action.yml b/.github/workflows/industrial_ci_action.yml index 0c446fb7..7c8f52c2 100644 --- a/.github/workflows/industrial_ci_action.yml +++ b/.github/workflows/industrial_ci_action.yml @@ -13,5 +13,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - uses: 'ros-industrial/industrial_ci@master' + - uses: 'fmessmer/industrial_ci@master_pylint' env: ${{matrix.env}} From 46f8aa126a8bd427fdfff24e68489202f1d0b88b Mon Sep 17 00:00:00 2001 From: floweisshardt Date: Tue, 12 Jan 2021 16:25:44 +0100 Subject: [PATCH 13/13] reenable ts1 --- atf_test/atf/test_generation_config.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/atf_test/atf/test_generation_config.yaml b/atf_test/atf/test_generation_config.yaml index 7c1fe741..1d064fbe 100644 --- a/atf_test/atf/test_generation_config.yaml +++ b/atf_test/atf/test_generation_config.yaml @@ -33,12 +33,12 @@ testsuites: # You have to define at least one testsuite - testblockset2 # repetitions: 1 # Number of repetitions per test (this is an optional parameter, default = 1) - # - tests: - # - test1 - # robots: - # - robot1 - # envs: - # - env1 - # testblocksets: - # - testblockset1 - # repetitions: 2 + - tests: + - test1 + robots: + - robot1 + envs: + - env1 + testblocksets: + - testblockset1 + repetitions: 2