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”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/341273.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统Shell脚本 ----- 编程规范和变量详细解读(一)

一、程序编程风格 面向过程语言 开发的时候 需要 一步一步 执行 做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理 问题规模小&#…

imgaug库图像增强指南(35):【iaa.Fog】——轻松创建自然雾气场景

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

gin如何实现热更新

什么是热更新? 一种不需要用户关闭应用或重新启动设备就能进行的软件更新技术。它可以快速地在线修复或升级应用程序的错误或功能,从而减少用户的等待时间并提高用户体验。 如何优雅停止服务? Go 1.8版本之后, http.Server 内置…

Unity中URP下的SimpleLit的 BlinnPhong高光反射计算

文章目录 前言一、回顾Blinn-Phong光照模型1、Blinn-Phong模型: 二、URP下的SimpleLit的 BlinnPhong1、输入参数2、程序体计算 前言 在上篇文章中,我们分析了 URP下的SimpleLit的 Lambert漫反射计算。 Unity中URP下的SimpleLit的 Lambert漫反射计算 我…

Unity - 简单音频

“Test_04” AudioTest public class AudioTest : MonoBehaviour {// 声明音频// AudioClippublic AudioClip music;public AudioClip se;// 声明播放器组件private AudioSource player;void Start(){// 获取播放器组件player GetComponent<AudioSource>();// 赋值…

UI设计中的插画运用优势(下)

6. 插画赋予设计以美学价值&#xff0c;更容易被接受 即使所有人都在分析和争论产品的可用性和易用性&#xff0c;大家在对美的追求上&#xff0c;始终保持着一致的态度。一个设计是否具备可取性&#xff0c;是否能够通过甲方、客户和实际用户&#xff0c;是每个设计人都需要面…

初识人工智能,一文读懂机器学习之逻辑回归知识文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

2024美赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 模型…

性能优化-HVX 指令介绍

「发表于知乎专栏《移动端算法优化》」 本文主要介绍了 HVX 指令相关的知识&#xff0c;包括 HVX 寄存器相关内容&#xff0c;指令的背景依赖&#xff0c;部分常用 intrinsic HVX 指令。具体指令的详细内容及使用还需阅读 HVX 的指令文档&#xff0c;以及细致的实践操作。 &…

表达式计算

四则运算表达式可以用表达式树表达&#xff0c;如下图后序遍历 现给你一个字符串&#xff0c;代表一个后序遍历形式的四则运算表达式&#xff0c;请计算出表达式的结果&#xff1a;(只输出整数部分) 注&#xff1a;除法只保留整数部分&#xff1b;5/4 1 输入&#xff1a; 一个…

使用 YApi 管理 API 文档,测试, mock

随着互联网的发展&#xff0c;API变的至关重要。根据统计&#xff0c;目前市面上有上千万的开发者&#xff0c;互联网项目超过10亿&#xff0c;保守统计涉及的 API 数量大约有 100 亿。这么大基数的API&#xff0c;只要解决某些共有的痛点&#xff0c;将会是非常有意义的事情。…

SpringCloud中服务间通信(应用间通信)-亲测有效-源码下载-连载2

1、微服务概述 本案例主要解决微服务之间的相互调用问题 如果已经理解什么是微服务&#xff0c;可以直接跳到实战。 本案例采用springBoot3.1.7springCloud2022.0.4版本测试 本案例使用springboot2.7.x版本测试代码相同 1、微服务是分布式架构&#xff0c;那么为什么要需要…

中仕教育:选调生和考研可以一起准备吗?

研究生入学考试&#xff0c;是本科生们提升学历继续深造的主要途径。而选调生&#xff0c;是指通过考试选拔的优秀应届毕业生&#xff0c;经过锻炼后分配到各级工作。这两者作为大部分人选择的方向&#xff0c;发展前景都是比较好的。 考研和选调生可以一起准备吗? 是可以的…

业务逻辑漏洞—验证码绕过

验证码绕过第一关&#xff1a; 前端验证码绕过&#xff1a; 打开pikachu靶场&#xff1a; 输入错误的验证码时会出现弹窗&#xff08;alert&#xff09;此时我们猜测这可能存在着前端限制 如果验证码有前端限制&#xff08;只在前端有作用&#xff09;&#xff0c;不影响后…

opencv#29 图像噪声的产生

在上一节的图像卷积我们了解到图像卷积可以用于去除图像中的噪声&#xff0c;那么对于现实生活中每一张采集到的图像都会包含噪声&#xff0c;也就是我们通过相机无法得到不包含噪声的图像&#xff0c;如果我想衡量噪声去除能力的强弱&#xff0c;就必须在一张不含噪声的图像中…

架构篇09:架构设计原则案例

文章目录 淘宝案例手机QQ案例小结 我们先复习一下架构设计的三条核心原则&#xff1a;合适原则、简单原则和演化原则。 我们在架构设计实践中&#xff0c;应该时刻谨记这三条设计原则&#xff0c;指导我们设计出合适的架构&#xff0c;即使是代表中国互联网技术最顶尖水平的 BA…

51单片机1-6

目录 单片机介绍 点亮一个LED 流水灯参考代码 点亮流水LEDplus版本 独立按键 独立按键控制LED亮灭 静态数码管 静态数码管显示 动态数码管显示 模块化编程 调试工具 矩阵键盘 矩阵键盘显示数据 矩阵键盘密码锁 学习B站江协科技课程笔记。 安装keil&#xff0c;下…

docker容器下php框架laravel的使用问题与解决方案

DB_CONNECTIONmysqlDB_HOSTlocalhost DB_CONNECTIONmysqlDB_HOSTdocker33-mysql-1 容器中只有数据库结构 进入MySQL容器内&#xff0c;创建表结构&#xff0c;添加数据 代码层面需要转换成数组 $query->get([*])->toArray(); 分页数据框架会返回带有data的数据&#xf…

Spring Boot3整合Druid(监控功能)

目录 1.前置条件 2.导依赖 错误依赖&#xff1a; 正确依赖&#xff1a; 3.配置 1.前置条件 已经初始化好一个spring boot项目且版本为3X&#xff0c;项目可正常启动。 作者版本为3.2.2最新版 2.导依赖 错误依赖&#xff1a; 这个依赖对于spring boot 3的支持不够&#…

机器学习实验报告——APRIORI算法

目录 一、算法介绍 1.1算法背景 1.2算法引入 1.3算法假设 1.4算法基本概念介绍 1.4.1关联规则 1.4.2支持度 1.4.3置信度 1.4.4频繁项集 1.4.5项目 1.4.6提升度 二、算法原理 2.1算法思想 2.2Apriori算法产生频繁项集 2.3Apriori算法的基本步骤 2.4关联分析 三、算法实现 3.1 Ap…