ROS机器人入门第七课:参数服务器
一、参数服务器介绍
参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据,关于参数服务器的典型应用场景如下:
导航实现时,会进行路径规划,比如: 全局路径规划,设计一个从出发点到目标点的大致路径。本地路径规划,会根据当前路况生成时时的行进路径
上述场景中,全局路径规划和本地路径规划时,就会使用到参数服务器:
- 路径规划时,需要参考小车的尺寸,我们可以将这些尺寸信息存储到参数服务器,全局路径规划节点与本地路径规划节点都可以从参数服务器中调用这些参数
参数服务器,一般适用于存在数据共享的一些应用场景。
概念
以共享的方式实现不同节点之间数据交互的通信模式。
作用
存储一些多节点共享的数据,类似于全局变量。
案例
实现参数增删改查操作。
参数可使用数据类型:
-
32-bit integers:32位整数类型,用于存储不需要小数部分的数值,如计数器、标识符等。 -
booleans:布尔类型,用于存储真(True)或假(False)值,适用于开关状态、条件判断等场景。 -
strings:字符串类型,用于存储文本数据,如路径名、配置选项的名称等。 -
doubles:双精度浮点数类型,用于存储需要精确到小数点后多位的数值,如传感器读数、位置坐标等。 -
iso8601 dates:符合ISO 8601标准的日期格式,用于存储日期和时间信息,如日志时间戳、事件发生的时间等。 -
lists:列表类型,用于存储一系列同种或不同种类型的数据项,适用于配置参数的多个值、一系列操作指令等。 -
base64-encoded binary data:Base64编码的二进制数据类型,用于存储二进制数据,如图像数据、文件内容等。采用Base64编码是因为参数服务器通常以文本形式存储和传输数据,而Base64编码能将二进制数据转换为文本表示。 -
字典:字典类型(也称为映射或哈希表),用于存储键值对,每个键对应一个值。适用于存储具有结构性的数据,如配置参数的集合、不同类型数据的聚合等。
注意:参数服务器不是为高性能而设计的,因此最好用于存储静态的非二进制的简单数据
二、参数操作
需求:实现参数服务器参数的增删改查操作。
1.参数服务器新增(修改)参数
#! /usr/bin/env python
# - coding: utf-8 -*-
"""
参数服务器操作之新增与修改(二者API一样)_Python实现:
本脚本展示了如何在ROS中使用Python设置和更新参数服务器的参数。
"""
# 导入rospy模块,这是ROS中与Python程序交互的主要模块。
import rospy
# 确定这个脚本是作为主程序运行,而不是作为模块导入到其他脚本中。
if __name__ == "__main__":
# 初始化一个ROS节点,节点名为"set_update_paramter_p"。
# 在ROS中,节点是通信的基本单元,每个节点都要有一个唯一的名称。
rospy.init_node("set_update_paramter_p")
# 下面一系列的set_param调用设置了参数服务器上的不同类型的参数。
# 参数服务器是ROS中用于存储和管理参数的系统,如配置参数。
# 设置一个名为"p_int"的整型参数,值为10。
rospy.set_param("p_int",10)
# 设置一个名为"p_double"的浮点型参数,值为3.14。
rospy.set_param("p_double",3.14)
# 设置一个名为"p_bool"的布尔型参数,值为True。
rospy.set_param("p_bool"

本文详细介绍了ROS机器人系统中的参数服务器,包括其功能、应用场景,以及如何使用Python进行参数的新增、修改、获取和删除操作,涉及多种数据类型和示例代码。
最低0.47元/天 解锁文章
8048

被折叠的 条评论
为什么被折叠?



