From 67fba536175e04e184a44a97397069a9c75c8db0 Mon Sep 17 00:00:00 2001 From: Anthony Baker Date: Thu, 11 May 2023 17:39:12 -0600 Subject: [PATCH 1/5] Parse xacro_args from .setup_assistant file --- .../moveit_configs_utils/moveit_configs_builder.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py index 9c3636fb34..0dbc7b5415 100644 --- a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py +++ b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py @@ -162,6 +162,7 @@ def __init__( self.__urdf_package = None self.__urdf_file_path = None + self.__urdf_xacro_args = None self.__srdf_file_path = None modified_urdf_path = Path("config") / (self.__robot_name + ".urdf.xacro") @@ -178,6 +179,9 @@ def __init__( get_package_share_directory(urdf_config["package"]) ) self.__urdf_file_path = Path(urdf_config["relative_path"]) + + if "xacro_args" in urdf_config: + self.__urdf_xacro_args = dict(arg.split(":=") for arg in urdf_config["xacro_args"].split(' ')) srdf_config = config.get("srdf", config.get("SRDF")) if srdf_config: @@ -217,6 +221,7 @@ def robot_description( robot_description_file_path = self.__urdf_package / self.__urdf_file_path else: robot_description_file_path = self._package_path / file_path + mappings = self.__urdf_xacro_args if (mappings is None) or all( (isinstance(key, str) and isinstance(value, str)) for key, value in mappings.items() @@ -253,7 +258,6 @@ def robot_description_semantic( :param mappings: mappings to be passed when loading the xacro file. :return: Instance of MoveItConfigsBuilder with robot_description_semantic loaded. """ - if (mappings is None) or all( (isinstance(key, str) and isinstance(value, str)) for key, value in mappings.items() From 4dee847d8c296349b16b8179a6b1966743b58d9d Mon Sep 17 00:00:00 2001 From: Anthony Baker Date: Thu, 11 May 2023 18:18:52 -0600 Subject: [PATCH 2/5] pre-commit --- .../moveit_configs_utils/moveit_configs_builder.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py index 0dbc7b5415..5576b67053 100644 --- a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py +++ b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py @@ -179,9 +179,11 @@ def __init__( get_package_share_directory(urdf_config["package"]) ) self.__urdf_file_path = Path(urdf_config["relative_path"]) - + if "xacro_args" in urdf_config: - self.__urdf_xacro_args = dict(arg.split(":=") for arg in urdf_config["xacro_args"].split(' ')) + self.__urdf_xacro_args = dict( + arg.split(":=") for arg in urdf_config["xacro_args"].split(" ") + ) srdf_config = config.get("srdf", config.get("SRDF")) if srdf_config: From ae4b48e8ab519da7820b3091fd79c97759388a13 Mon Sep 17 00:00:00 2001 From: Anthony Baker Date: Fri, 12 May 2023 08:43:55 -0600 Subject: [PATCH 3/5] prevent override of mapping --- .../moveit_configs_utils/moveit_configs_builder.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py index 5576b67053..e33b532a9c 100644 --- a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py +++ b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py @@ -231,7 +231,8 @@ def robot_description( try: self.__moveit_configs.robot_description = { self.__robot_description: load_xacro( - robot_description_file_path, mappings=mappings + robot_description_file_path, + mappings=mappings or self.__urdf_xacro_args, ) } except ParameterBuilderFileNotFoundError as e: From 9214df3f6c3cc3bda9c719969c0c8bd1163c71be Mon Sep 17 00:00:00 2001 From: Jafar Date: Fri, 12 May 2023 18:18:18 +0100 Subject: [PATCH 4/5] Update moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py --- .../moveit_configs_utils/moveit_configs_builder.py | 1 - 1 file changed, 1 deletion(-) diff --git a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py index e33b532a9c..6bc7f11b4c 100644 --- a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py +++ b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py @@ -223,7 +223,6 @@ def robot_description( robot_description_file_path = self.__urdf_package / self.__urdf_file_path else: robot_description_file_path = self._package_path / file_path - mappings = self.__urdf_xacro_args if (mappings is None) or all( (isinstance(key, str) and isinstance(value, str)) for key, value in mappings.items() From 8be6e23f05eee7a2abf62bfdc844b934042eed7b Mon Sep 17 00:00:00 2001 From: JafarAbdi Date: Fri, 12 May 2023 18:56:01 +0000 Subject: [PATCH 5/5] Fix bug when the xacro_args is an empty string --- .../moveit_configs_utils/moveit_configs_builder.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py index 6bc7f11b4c..41e154c25a 100644 --- a/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py +++ b/moveit_configs_utils/moveit_configs_utils/moveit_configs_builder.py @@ -180,9 +180,9 @@ def __init__( ) self.__urdf_file_path = Path(urdf_config["relative_path"]) - if "xacro_args" in urdf_config: + if (xacro_args := urdf_config.get("xacro_args")) is not None: self.__urdf_xacro_args = dict( - arg.split(":=") for arg in urdf_config["xacro_args"].split(" ") + arg.split(":=") for arg in xacro_args.split(" ") if arg ) srdf_config = config.get("srdf", config.get("SRDF")) @@ -260,6 +260,7 @@ def robot_description_semantic( :param mappings: mappings to be passed when loading the xacro file. :return: Instance of MoveItConfigsBuilder with robot_description_semantic loaded. """ + if (mappings is None) or all( (isinstance(key, str) and isinstance(value, str)) for key, value in mappings.items()