ROS与Python中如何使用参数

在这里我将简单介绍参数的获取,参数的设置,参数的修改和参数的查询

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','delete_value')

2.设置参数

rospy.set_param(para_name,param_value);

rospy.set_param('truth','true');

rospy.set_param('some_numbers','1.0,2.0,3.0');

rospy.set_param('~private_bar',1+2);

3.删除参数

rospy.delete_param(‘param_name’)

rospy.delete_param(‘to_delete’)

4.参数的查询

rospy.has_param(‘param_name’)

if rospy.has_param(‘to_delete’):

rospy.delete_param(‘to_delete’)

5.解释参数名

参数的名称可以映射成不同的名

节点可以放到不同的命名空间

下面是获取参数的实际名称和映射的名称

value=rospy.get_param(‘~foo‘)

rospy.loginfo("parameter %s has value %s ",rospy.resolve_name('~foo'),value)

6.搜索参数

如果你不知道某个参数,你可以从私有空间到向上到全局空间进行搜索,

rospy.search_param(‘param_name‘)

full_param_name=rospy.search_param('foo')

param_value=rospy.get_param(full_param_name)

获取参数名后就可以进行其他操作

7.通过launch设置参数

roscd begnner_tutorials /bringup

touch param_talker.launch

roscd beginner_tutorials param_talker.launch

<launch>

<param name="global_example"  value="global value"/>

<group ns="foo">

<param name="utterance"   value="hello word"/>

<param name="to_delete"   value="delete me"/>

<group ns="gains">

<param name="P"   value="1.0"/>

<param name="I"   value="2.0"/>

<param name="D"   value="3.0"/>

</group>

<node pkg="rospy_tutorials" name="param_talker"  type="param_talker.py"  output="screen">

<param name="topic_name"   value="chatter"/>

</node>

</group>

</launch>

制作节点

roscd beginner_tutorials/scripts

touch param_talker.py

chmod +x param_talker.py

roscd beginner_tutorials param_talker.py

python节点代码

#!/usr/nim/env python

import rospy

from std_msgs.msg import String

def param_talker():

rospy.init_node("param_talker")

global_example=rospy.get_param("/global_example")

rospy.loginfo(" %s is %s ",rospy.resolve_name('/global_example'),global_example)

utterances=rospy.get_param('utterances')

rospy.loginfo(" %s is %s ",rospy.resolve_name('utterances'),utterance)

topic_name=rospy.get_param('~topic_name')

rospy.loginfo(" %s is %s ",rospy.resolve_name('~topic_name'),topic_name)

default_param=rospy.get_param('default_param' ,'default_name')

rospy.loginfo(" %s is %s ",rospy.resolve_name('default_param'),default_param)

gains=rospy.get_param('gains')

p,i,d=gains['P'],gains['I'],gains['D']

rospy.loginfo(" gains are %s, %s,%s ",p,i,d)

pub=rospy.publish(topic_name,String,queue_size=10 )

while not rospy.is_shutdown(0:

pub.publish(utterances)

rospy.loginfo(utterances)

rospy.sleep(1)

if __name__==__main__:

try:

param_talker()

except rospy.ROSinterruptException:pass


  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值