ros中可以使用的参数类型有整数、浮点数、字符串、bool、列表、字典为参数;
参数为字典时有额外的意义,可以当做命名空间使用:
/gains/P = 1.0
/gains/I = 2.0
/gains/D = 3.0
#在rospy输出/gains
{'P':1.0, 'I':2.0, 'D':'3.0}
操作参数
1.参数的获取,使用rospy.get_param(param_name):
#获取全局参数
rospy.get_param(’/global_param_name’)#获取目前命名空间的参数
rospy.get_param(‘param_name’)#获取私有命名空间参数
rospy.get_param(’~private_param_name’)#获取参数,如果没有,使用默认值
rospy.get_param(‘foo’,‘default_value’)
2.参数设置,使用rospy.set_param(param_name,param_value):
rospy.set_param(‘some_numbers’,[1., 2., 3., 4.])
rospy.set_param(‘truth’,True)
rospy.set_param(’~private_bar’,1+2)
3.删除参数,使用rospy.delete_param(‘param_name’):
rospy.delete_param(‘to_delete’)
4.判断参数是否存在
if rospy.has_param(‘to_delete’):
rospy.delete_param(‘to_delete’)
解释参数名
- 在ROS中,相同的名称可以映射成为不同的命名,你的节点也可以放到命名空间中
- rospy一般能够自动解释这些名称,但用做调试,需要了解所有名称之间的关联
- 获取实际的名称,rospy.resolve_name(name):
value = rospy.get_param(’~foo’)
rospy.loginfo(‘Parameter %s has value %s’,rospy.resolve_name(’~foo’),value
搜索参数
- 如果不知道命名空间,可以搜索参数
- 搜索从私有命名空间开始,向上到全局命名空间
- 使用rospy.search_param(param_name)
full_param_name = rospy.search_param(param_name)
param_value = rospy.get_param(full_param_name)
- 获取到参数名后,也可以进行参数操作