ROS 参数服务器

简单介绍一下ROS中的参数服务器,废话不多说直接上程序:

#!/usr/bin/env python
# coding:utf-8
import rospy

def param_demo():
    rospy.init_node("param_demo")
    rate = rospy.Rate(1)
    while(not rospy.is_shutdown()):
        #get param
        parameter1 = rospy.get_param("~param1")  #在node下的私有变量
        parameter2 = rospy.get_param("/param2", default=222)  #全局变量
        print(type(parameter1))  #参数类型
        print(type(parameter2))  #参数类型
        rospy.loginfo('Get param1 = %s', parameter1)
        rospy.loginfo('Get param2 = %d', parameter2)

        #delete param 删除
        rospy.delete_param('/param2') 
        #set param 设置
        rospy.set_param('/param2',2)

        #check param  判断是否存在
        ifparam3 = rospy.has_param('/param3')
        if(ifparam3):
            rospy.loginfo('/param3 exists')
        else:
            rospy.loginfo('/param3 does not exist')

        #批量获取参数
        gain_param = rospy.get_param('gains')
        p, i, d = gain_param['P'], gain_param['I'], gain_param['D']
        rospy.loginfo("gains are %s, %s, %s", p, i, d)

        #get all param names
        params = rospy.get_param_names()
        rospy.loginfo('param list: %s', params)


        rate.sleep()

if __name__=="__main__":
    param_demo()

对应的launch文件:

<launch>
 <param name="/param2" value="111"/>
 <node name="param_demo" pkg="h_h" type="param_demo.py" output="screen" >
 <param name="param1" value="'1'"/>
 </node>

 <group ns="gains">
   <param name="P" value="1.0" />
   <param name="I" value="2.0" />
   <param name="D" value="3.0" />      
 </group>
</launch>

看程序中 的 ~param1,参数带~的是私有参数,对应的我们在launch中 在node下写参数,写param1的时候不带~

/param2要写在外面,不写在node下,名称与程序中相同。

gain_param 用于批量写入参数,在launch中叶要写一个group

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值