&emap;&emsp在ROS master当中有一个参数服务器,它是一个全局字典,用来保存各个节点之间的配置参数的。例如里面有Parameter server保存我们的名字、半径和高度,是各个节点都可以全局访问的。
&emap;&emsp比如说我在Node A点里面来访问robot name,然后就会获取得到一个“my_rot”的值,它只要给我们的ROS master去发送一个查询的请求,然后就会返回“my_rot”的结果。NodeB、Node C和Node D也是一样。
&emap;&emspParameter server参数服务器模型如下图所示:
这里我们先来了解下rosparam参数,详细参数如下图:
这里以海龟案例为例,先运行海龟例程,步骤如下:
再打开一个终端, rosparam的使用,步骤如下:
创建功能包,步骤如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 该脚本用于设置和读取turtlesim模拟器中的背景颜色参数
# 导入Python的sys模块
import sys
# 导入rospy,这是用于ROS节点编程的Python库
import rospy
# 导入std_srvs包中的Empty服务类型,这是ROS标准空服务,无需请求和响应数据
from std_srvs.srv import Empty
# 定义parameter_config函数,用于配置参数
def parameter_config():
# 初始化ROS节点,命名为'parameter_config',anonymous=True确保节点名在ROS系统中唯一
rospy.init_node('parameter_config', anonymous=True)
# 读取当前turtlesim节点的背景颜色参数(红、绿、蓝)
red = rospy.get_param('/turtlesim/background_r')
green = rospy.get_param('/turtlesim/background_g')
blue = rospy.get_param('/turtlesim/background_b')
# 将读取的背景颜色参数信息记录到ROS日志中
rospy.loginfo("Get Background Color[%d, %d, %d]", red, green, blue)
# 设置新的背景颜色参数,这里设置为全白(红、绿、蓝颜色值都是255)
rospy.set_param("/turtlesim/background_r", 255)
rospy.set_param("/turtlesim/background_g", 255)
rospy.set_param("/turtlesim/background_b", 255)
# 将新设置的背景颜色参数信息记录到ROS日志中
rospy.loginfo("Set Background Color[255, 255, 255]")
# 重新读取并记录新的背景颜色参数,以验证是否设置成功
red = rospy.get_param('/turtlesim/background_r')
green = rospy.get_param('/turtlesim/background_g')
blue = rospy.get_param('/turtlesim/background_b')
rospy.loginfo("Get Background Color[%d, %d, %d]", red, green, blue)
# 阻塞等待'/clear'服务变得可用
rospy.wait_for_service('/clear')
try:
# 创建一个服务客户端,连接到'/clear'服务
clear_background = rospy.ServiceProxy('/clear', Empty)
# 调用服务,这将清除turtlesim的背景
response = clear_background()
# 返回服务调用的响应
return response
except rospy.ServiceException:
# 如果服务调用失败,则什么也不做
pass
# 当脚本被当作主程序执行时,下述代码块将会被运行
if __name__ == "__main__":
# 调用parameter_config函数
parameter_config()
6) 输入指令“chmod +x parameter_config.py”回车,为保存的parameter_config.py赋予可执行权限