Last active
December 24, 2021 11:25
-
-
Save justagist/489623487fdb180c152dfed4d44d5146 to your computer and use it in GitHub Desktop.
Delete ros parameters from server containing strings provided as arguments
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import rospy | |
from argparse import ArgumentParser | |
COMMON_PARAMS = ["franka", "panda", "controller", "control", "camera", "gazebo", "state", "arm", "robot", "dynamic_reconfigure", "interactive_marker", "sim_time"] | |
def delete_params_containing(string_list, verbose=False): | |
""" | |
Delete ros parameters from server containing strings listed in 'string_list'. | |
Args: | |
string_list (list): list of strings to check for in the parameter server | |
verbose (bool): set to True to print deleted parameters | |
""" | |
try: | |
params_list = rospy.get_param_names() | |
except: | |
print("Could not find any parameters in the parameter server!") | |
return | |
matching = [s for s in params_list if any(xs in s for xs in string_list)] | |
if len(matching) == 0: | |
print ("\n\t[INFO] No matching parameter(s) found in parameter server. Searched for %s\n"%str(string_list)) | |
return | |
for m in matching: | |
rospy.delete_param(m) | |
if verbose: | |
print ("\t-- Deleting %s"%m) | |
print("\t[INFO]: Removed %d params from server."%len(matching)) | |
if __name__ == "__main__": | |
parser = ArgumentParser(description="Delete ros parameters from server containing strings provided as arguments. Usage: 'clear_params -d <string1> <string2> ...'") | |
parser.add_argument('--delete', '-d', dest='del_list', nargs='+', default = [], help="Delete ros parameters from server containing strings provided as arguments.") | |
parser.add_argument('--verbose', '-v', action='store_true', default=False) | |
group = parser.add_mutually_exclusive_group() | |
group.add_argument('--all','-a', action='store_true', dest='remove_all', default=False, help="Delete all params in the parameter server.") | |
group.add_argument('--default','-f', action='store_true', dest='use_default', default=False, help="Delete common robot and gazebo stuff from parameter server: %s"%str(COMMON_PARAMS)) | |
value = parser.parse_args() | |
if value.use_default: | |
value.del_list += COMMON_PARAMS | |
elif value.remove_all: | |
ans = input("\n\t[WARN]: Using the -a argument will remove all parameters from the parameter server. Are you sure? [Y/n]") | |
if ans not in ["n","N"]: | |
value.del_list = [""] | |
if value.del_list != []: | |
delete_params_containing(value.del_list, verbose=value.verbose) | |
else: | |
print ("\n\t[INFO] No argument provided.\n") | |
parser.print_help() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment