帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
ROS-参数服务器(python)方向的基本实现流程及代码演示
发布时间:2024-03-06 22:08:10   分类:帮助文档
ROS-参数服务器(python)方向的基本实现流程及代码演示

声明
首先是创造工作空间等等这里就不再赘述,下文使用的工作空间叫 ilove02_01_ws;功能包名字叫做:ilovezero2。
参数服务器的一套简单流程就是围绕:增删改查;这四个字组成的。
其中由增改这两个字组成一个主体文件,后面就叫它为 set文件。实行查与删功能的文件后面我就分别叫它们get文件和del文件
SET文件:增改
实现增改功能的语句是:rospy.set_param(),我们通过这个语句对它相关属性进行赋值操作,以下是set文件代码演示:
#! /usr/bin/env python
# coding=utf-8
import rospy
"""
演示参数的新增与修改;
需求:在参数服务器中实现机器人的属性,型号,半径
实现:
rospy.set_param()
"""
if __name__=="__main__":
# 初始化ros节点
rospy.init_node("param_set_p")
# 新曾参数
rospy.set_param("type_p","xiaohuangche")
rospy.set_param("radius",0.15)
# 修改参数
rospy.set_param("radius",0.2)
pass
这行串代码是实现的功能是建立两个参数 一个是typ_p ,它对应的型号是xiaohuangche
另一个是描述这个小车或机器人的半径是0.15然后通过该代码改为了0.2。
GET文件:查
查的对象是我原来已经赋值好的set文件,可以通过查的方式经行set文件中相关属性的查询操作,下面get文件会带来5种方法来查找set文件的相关属性。
get文件的代码演示如下:
1.get_param(x,y) x是前文的相关的键,y是自己定义的默认值,如果前面已经定义好了默认值会被前面所定义好的值所代替。y是一个可写可不写的值。
get_param就相当于是运行之后得到前面定义好的键的值 。
2.get_param_cached 这个语句是和1.功能是一样的,但是区别就是1. 的值是从内存中提取出来的,而2.是从本地中直接拿出来的,因此2.的效率比1.快。
3.get_param_names 它的作用是获得所有的键,这也就包括的系统本身的键和自身所定义的键。
4.has_param 这个语句就是判断是否有某一个键(要结合if语句)
5.search_param 这是用来寻找是否有某一个键的,并输出键名。
下面代码是将各类方法对set文件的radius进行的操作:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
"""
演示相关参数的查询
"""
if __name__=="__main__":
# 初始化ros节点
rospy.init_node("get_param_p")
# 1.get_param
radius1 = rospy.get_param("radius",0.5)
radius2 = rospy.get_param("radius_x",0.5)
rospy.loginfo("radius1 = %.2f",radius1)
rospy.loginfo("radius2 = %.2f",radius2)
# 2.get_param_cached 与1.的区别就是2.的效率更高
radius3 = rospy.get_param("radius",0.5)
radius4 = rospy.get_param("radius_x",0.5)
rospy.loginfo("radius3 = %.2f",radius1)
rospy.loginfo("radius4 = %.2f",radius2)
# 3.get_param_names 获取所有的建
names = rospy.get_param_names()
for name in names:
rospy.loginfo("name = %s",name)
# 4.has_param 表示某一个建是否存在
flag1 = rospy.has_param("radius")
if flag1:
rospy.loginfo("radius 存在")
else:
rospy.loginfo("radius 不存在")
flag2 = rospy.has_param("radius_x")
if flag2:
rospy.loginfo("radius_x 存在")
else:
rospy.loginfo("radius_x 不存在")
# 5.search_param 查找某一个建,并输出建名
key = rospy.search_param("radius")
rospy.loginfo("key = %s",key)
DEL文件:删
语句:delete_param,这个语句是用来删除指定的键的,值得注意的是第一次删除时,代码正常运行,如果连续删除的话,那就会出现报错的情况,因为你的键已经删掉了。所以我使用了try——except这给捕获错误的语句做了一个优化,提示无此键了。
以下时del文件的代码演示:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
"""
delet_param
"""
if __name__=="__main__":
rospy.init_node("del_param_p")

try:
# 删除参数
rospy.delete_param("radius")
except Exception as e:
rospy.loginfo("被删除的参数不存在")

---------------------------------------------------------------------------------------------------------------------------
下面我来运行这三个文件:
首先是set文件它的结果是

其次我再运行get文件:

我们可以从上面这个照片看到键radius,接下来我们运行del文件将会删除这个键
运行del文件并使用list查看:

此时我们会发现radius这个键就没了。
下面我们再次运行一遍del文件:

你就会发现它会出现我们上述优化之后的日志结果。
-------------------------------------------------------------------------------------------
下面经行总结:




香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价