ROS第 11 课 参数的使用与编程方法

文章目录

  • 第 11 课 参数的使用与编程方法
    • 1.服务模型
    • 2.rosparam参数
      • 2.1 rosparam详细参数
      • 2.2 运行海龟例程
      • 2.3 rosparam的使用
    • 3.编程方法
      • 3.1 编写控制程序
    • 4.运行程序

第 11 课 参数的使用与编程方法

1.服务模型

&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参数服务器模型如下图所示:
在这里插入图片描述

2.rosparam参数

2.1 rosparam详细参数

这里我们先来了解下rosparam参数,详细参数如下图:
在这里插入图片描述

2.2 运行海龟例程

这里以海龟案例为例,先运行海龟例程,步骤如下:

  1. 输入指令“roscore”,回车。
    在这里插入图片描述
    若已开启,则会出现以下提示:
    在这里插入图片描述
  2. 输入指令“rosrun turtlesim turtlesim_node”,回车,打开小海龟的仿真器。
    在这里插入图片描述

2.3 rosparam的使用

再打开一个终端, rosparam的使用,步骤如下:

  1. 输入指令“rosparam”,回车。
    在这里插入图片描述
  2. 输入指令“rosparam list”,回车,查询海龟参数个数。
    在这里插入图片描述
  3. 输入指令“rosparam get /turtlesim/background_b”,回车,获取“background_b”数值,其他数值获取方法类似。
    在这里插入图片描述
  4. 输入指令“rosparam set /turtlesim/background_b 100”,回车,设置“background_b”数值,其他数值设置方法类似。
    在这里插入图片描述
  5. 输入指令“rosparam get /turtlesim/background_b”,回车,看到数值改为100了。
    在这里插入图片描述
  6. 输入指令“rosservice call clear “{}””,回车,发送请求,更改颜色。
    在这里插入图片描述
    在这里插入图片描述
  7. 输入指令“rosparam dump param.yaml”,回车,保存到文件。
    在这里插入图片描述
  8. 文件打开在默认路径,我们保存在主文件路径,直接打开。
    在这里插入图片描述
  9. 输入指令“vi param.yaml”,回车。按下“i”修改“param.yaml”。
    在这里插入图片描述
    在这里插入图片描述
  10. 可以将颜色都改为0,也就是黑色,修改完成,按下“Esc”,输入“:wq”保存并退出。
    在这里插入图片描述
  11. 输入指令“rosparam load param.yaml”,回车,加载文件。
    在这里插入图片描述
  12. 输入指令“rosparam get /turtlesim/background_b”,回车,检查加载效果。
    在这里插入图片描述
  13. 输入指令“rosservice call clear “{}””,回车,发送请求,更改颜色,背景颜色为黑色。
    在这里插入图片描述
    在这里插入图片描述
  14. 输入指令“rosparam delete /turtlesim/background_g”,回车,删除g的颜色。
    在这里插入图片描述
  15. 输入指令“rosparam list”,回车,查看效果。
    在这里插入图片描述
  16. 输入指令“rosservice call clear “{}””,回车,重新刷新背景颜色,查看效果。
    在这里插入图片描述
    在这里插入图片描述

3.编程方法

创建功能包,步骤如下:

  1. 输入指令“cd catkin_ws/src/”,回车,进入工作空间。
    在这里插入图片描述
    输入指令“catkin_create_pkg parameter_hiwonder rospy std_msgs”,回车,创建功能包。
    在这里插入图片描述

3.1 编写控制程序

  1. 打开Linux命令行终端。
  2. 输入进入功能包所在目录的指令“roscd parameter_hiwonder”,并按下回车。
    在这里插入图片描述
  3. 输入指令“mkdir scripts”,并按下回车,新建用于存放Python脚本的文件夹“scripts”。
    在这里插入图片描述
  4. 输入指令“cd scripts/”,并按下回车,进入用于存放Python脚本的文件夹“scripts”。
    在这里插入图片描述
  5. 输入指令“vi parameter_config.py”编辑程序,复制下面程序。如需修改,再按下“i”即可修改。修改完成,按下“Esc”,输入“:wq”保存并退出。
    在这里插入图片描述
#!/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赋予可执行权限
在这里插入图片描述

4.运行程序

  1. 输入指令“roscore”,并按下回车,启动节点管理器。
    在这里插入图片描述
    若已开启,则会出现以下提示:
    在这里插入图片描述
  2. 输入指令“rosrun turtlesim turtlesim_node”,回车,打开小海龟的仿真器。
    在这里插入图片描述
  3. 输入指令“rosrun parameter_hiwonder parameter_config.py”,并按下回车,运行程序,它将海龟的背景颜色改为白色,显示如下图:
    在这里插入图片描述
    在这里插入图片描述
  4. 如需停止程序,可按下快捷键“Ctrl+C”。