Skip to content

Instantly share code, notes, and snippets.

@justagist
Last active December 24, 2021 11:25
Show Gist options
  • Save justagist/489623487fdb180c152dfed4d44d5146 to your computer and use it in GitHub Desktop.
Save justagist/489623487fdb180c152dfed4d44d5146 to your computer and use it in GitHub Desktop.
Delete ros parameters from server containing strings provided as arguments
#!/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