ROS学习笔记文章目录
01. ROS学习笔记(一)—Linux安装VScode
02. ROS学习笔记(二)—使用 VScode 开发 ROS 的Python程序(简例)
03. ROS学习笔记(三)—好用的终端Terminator
04. ROS学习笔记(四)—使用 VScode 启动launch文件运行多个节点
05. ROS学习笔记(五)—话题发布
06. ROS学习笔记(六)—服务通信机制
1. 参数服务器是什么
参数服务器是ROS中用于存储和共享参数的中央存储库。它是一个全局的、分布式的键值存储系统,允许ROS节点在运行时动态地存储、读取和更新参数值。参数服务器可以在多个节点之间共享参数,并且可以通过修改参数的值来实现节点之间的通信。
参数服务器的应用场景非常广泛,以下是一些常见的例子:
2. 参数服务器的理论模型
参数服务器的理论模型如下:
上图参考了赵虚左老师的课程
在这个模型中,ROS Master充当管理者的角色,负责协调和管理整个ROS系统。Talker是参数设置者,负责将参数设置到参数服务器中。Listener是参数调用者,负责从参数服务器中获取参数。
具体流程如下:
通过这种模型,Talker可以根据需要设置参数的值,而Listener可以根据需要获取参数的值。参数服务器作为一个集中的存储系统,使得参数的设置和获取可以在不同的节点之间进行,实现了参数的共享和动态配置。
3.编写参数服务器(新增(修改)参数)的python案例
(1)任务要求:演示参数的新增与修改需求。即在参数服务器中设置机器人的属性,型号,半径
(2)编写程序实现
我们在上一个工作空间下面新建plumbing_param_server文件夹作为参数服务器这一项目的功能包,然后创建script文件夹,再新建一个demo01_pub_p.py的文件来编写发布方程序,记得打开python可执行权限,然后编辑配置文件CMakeLists.txt,怎么创建新的功能包等具体可见ROS学习笔记(二)
完整程序如下:
#! /usr/bin/env python
#coding:utf-8
import rospy
"""
演示参数的新增与修改
需求:在参数服务器中设置机器人的属性,型号,半径
"""
if __name__ == "__main__":
#2.初始化 ROS节点
rospy.init_node("param_set_p")
#3.新增参数
rospy.set_param("type_p" , "xiaoHuangChe")
rospy.set_param("radius_p" , 0.15)
rospy.loginfo("设置成功")
#修改参数
rospy.set_param("radius_p" , 0.4)
pass
crtl+B编译运行后,打开终端查看发布方结果,也就只是打印出来一个“设置成功”
(3)查看参数新增与修改的效果
① 通过终端查看参数新增与修改的效果,新增另外一个终端,输入如下命令,可以 列出所有参数。
rosparam list # 列出所有参数
② 通过下面的命令来获取参数
rosparam get name # 获取参数
在新的终端输入rosparsm的相关指令后,获取到发布方的设置的参数,可以看到其中radius_p的取值是我们最后修改的0.4,同样你可以用rosparam get type_p 来获取对应的值。
附rosparam参数的相关命令
rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数
rosparam set 设置参数
rosparam get 获取参数
rosparam load 从外部文件加载参数
rosparam dump 将参数写出到外部文件
rosparam delete 删除参数
rosparam list 列出所有参数