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

本文详细介绍了ROS中参数的使用,包括服务模型、rosparam的详细参数、海龟例程的操作以及如何编写和运行控制程序,如设置和读取背景颜色。还涵盖了创建功能包和运行Python脚本来控制ROS参数的过程。
摘要由CSDN通过智能技术生成

第 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”。
  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运从未公平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值