ros1 基础学习10 -全局字典参数的定义,获取,改值

news2024/12/23 16:30:19

全局字典参数的定义,获取,改值

    • 一、参数模型
    • 二、 创建功能包
    • 三、参数命令行的使用(rosparam)
    • 四、使用程序来使用参数(C++)
      • 4.1创建代码
      • 4.2编译
      • 4.3 编译文件
    • 测试

在ROS Master中,存在一个参数服务器(Parameter
Server),它是一个全局字典,即一个全局变量的存储空间,用来保存各个节点的配置参数。各个节点都可以对参数进行全局访问。

一、参数模型

在这里插入图片描述

二、 创建功能包

建立一个新的功能包,命名为 learning_parameter。

cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs

新建成功如下:
在这里插入图片描述
就会生成learling_parameter 目录

在这里插入图片描述

三、参数命令行的使用(rosparam)

rosparam命令可以完成参数相关的大部分功能。
在ROS中,参数文件常以YAML文件的格式保存,形式如下:
在这里插入图片描述

查询当前所有参数列表

rosparam list

在这里插入图片描述
因为我启动了小乌龟的节点,所以我这有/turtlesim 开头的参数,这些是小乌龟的背景色参数

获取某个参数的值

rosparam get param_key

比如我要获取rosversion

rosparam get rosversion

在这里插入图片描述
设置某个参数的值

 rosparam set param_key param_value

保存参数到文件

rosparam dump file name

从文件加载参数。

rosparam load file

删除参数。

rosparam delete parameter

四、使用程序来使用参数(C++)

获取/设置 小乌龟背景的参数:

get函数获取参数
set函数设置参数

4.1创建代码

在/learning_parameter/src文件夹下创建parameter_config.cpp文件

文件内容如下:

/**
 * 该例程设置/读取海龟例程中的参数
 */
#include <string>
#include <ros/ros.h>
#include <std_srvs/Empty.h>

int main(int argc, char **argv)
{
	int red, green, blue;

    // ROS节点初始化
    ros::init(argc, argv, "parameter_config");

    // 创建节点句柄
    ros::NodeHandle node;

    // 读取背景颜色参数
	ros::param::get("/turtlesim/background_r", red);
	ros::param::get("/turtlesim/background_g", green);
	ros::param::get("/turtlesim/background_b", blue);

	ROS_INFO("Get Backgroud Color[%d, %d, %d]", red, green, blue);

	// 设置背景颜色参数
	ros::param::set("/turtlesim/background_r", 255);
	ros::param::set("/turtlesim/background_g", 255);
	ros::param::set("/turtlesim/background_b", 255);

	ROS_INFO("Set Backgroud Color[255, 255, 255]");

    // 读取背景颜色参数
	ros::param::get("/turtlesim/background_r", red);
	ros::param::get("/turtlesim/background_g", green);
	ros::param::get("/turtlesim/background_b", blue);

	ROS_INFO("Re-get Backgroud Color[%d, %d, %d]", red, green, blue);

	// 调用服务,刷新背景颜色
	ros::service::waitForService("/clear");
	ros::ServiceClient clear_background = node.serviceClient<std_srvs::Empty>("/clear");
	std_srvs::Empty srv;
	clear_background.call(srv);
	
	sleep(1);

    return 0;
}

4.2编译

配置CMakeLists.txt编译规则,规则:

  • 设置需要编译的代码和生成的可执行文件;
  • 设置链接库
    将下面代码拷贝到指定位置:
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})

在这里插入图片描述

4.3 编译文件

cd ~/catkin_ws
catkin_make

编译成功如下图:

在这里插入图片描述

测试

启动 ros 服务

roscore

再启动一个小乌龟节点

rosrun turtlesim turtlesim_node

启动参数设置服务

rosrun learning_parameter parameter_config

从运行的结果中已经可以看到把小乌龟的背景色改成白色了

在这里插入图片描述

我们也可以通过命令行来改变参数的值

rosparam set /turtlesim/background_b 100

关闭当前的小乌龟再重新打开,发现背景色已经变了

在这里插入图片描述

但重启roscore 后 当前设置的参数值会被恢复掉。如关了所有的服务,再重新开启会发现小乌龟的颜色又恢复了

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MPSO-WPA

MPSO-WPA算法 DCAP means ’ discretized Cauchy’s argument principle’ 辅助信息 作者未提供代码

使用github copilot

现在的大模型的应用太广了&#xff0c;作为程序员我们当然野可以借助大模型来帮我们敲代码。 下面是自己注册使用github copilot的过程。 一、注册github copilot 1. 需要拥有github账号 &#xff0c;登录github之后&#xff0c;点右侧自己的头像位置&#xff0c;下面会出现…

【Linux网络】手把手实操Linux系统网络服务DHCP

目录 一、什么是dhcp 二、详解dhcp的工作原理 三、dhcp的实操 第一步&#xff1a;3台机器的防火墙和安全机制都需要关闭&#xff01;&#xff01;&#xff01; 第二步&#xff1a;Linux下载dhcp软件&#xff0c;并查看配置文件位置 第三步&#xff1a;读配置文件&#xf…

(二十七)ATP应用测试平台——基于mybatisplus和aop切面实现数据权限隔离的案例实战

前言 在实际项目开发中&#xff0c;我们经常会用到俩种权限&#xff0c;一种是功能权限&#xff0c;一种是数据权限。功能权限主要是用来限制用户的操作&#xff0c;而数据权限是限制用户能查看到哪些数据。功能权限我们可以使用流行的框架shiro或者spring-security实现&#…

智慧在线拜佛上供品花供果祈福求愿公众号开发

智慧在线拜佛上供品花供果祈福求愿公众号开发 在线点灯祈福&#xff1a;用户可以在线选择点灯祈福的数量和供养的香灯类型&#xff0c;进行祈福祈愿。 上供品花&#xff1a;用户可以选择不同的鲜花供养&#xff0c;包括鲜花种类、数量和价值&#xff0c;以及写上心愿祝福语。 …

VEX —— Intrinsic attribute

目录 查看 使用 PackedGeometry Intrinsic attribute 内在属性是已经被计算的值&#xff08;从几何体派生出来的&#xff09;&#xff0c;可像属性一样访问&#xff1b; 查看 ginfo -I&#xff0c;打印所有内在属性&#xff1b;geometry spreadsheet&#xff0c;查看内在属性…

Windows 10 下使用Visual Studio 2017 编译CEF SDK

1.下载CEF SDK 由于需要跑在32位的机器&#xff0c;所以选择下载32位的SDKCEF Automated Builds 选择 Current Stable Build (Preferred) &#xff0c;这是当前稳定版本&#xff0c;CEF版本118 下载成功解压 2.下载编译工具 CMake 下载地址&#xff1a;CMake 配置CMake指向…

NodeJS 入门笔记

文档地址 课程地址 源码 提取码&#xff1a;963h hello wrold console.log(hello, world);node hello.jsnodejs 中不能使用 DOM(document) 和 BOM(window) 的 API&#xff1a; documentwindowhistorynavigatorlocation 但是下面的 API 是相通的&#xff1a; consoletimer…

AndroidStudio gitee令牌过期 解决方式 remote:Oauth: Access token is expired

记一次&#xff0c;gitee令牌过期 解决方式 Oauth: Access token is expired fatal: unable to access ‘https://gitee.com/xxxx.git/’: The requested URL returned error: 403 remote: [session-e14669a3] Oauth: Access token is expired fatal: unable to access https…

Swift编写爬取商品详情页面的爬虫程序

以下是一个使用Swift编写的基本爬虫程序&#xff0c;该程序使用Selenium库模拟浏览器行为来爬取商品详情页面的内容。 import Foundation import Selenium// 设置爬虫ip信息 let proxyHost "duoip" let proxyPort 8000 let proxy SeleniumProxy(httpProxy: "…

【MSF服务】3389远程连接命令扩展

攻击机IP地址&#xff08;kali&#xff09;&#xff1a;192.168.200.14 靶子机IP地址&#xff08;windows 10&#xff09;&#xff1a;192.168.200.81 前提&#xff1a;获取目标主机系统权限之后的操作 远程连接桌面 rdesktop -u username -p password iprdesktop报错 解决…

lesson4-C++内存管理

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 C/C内存分布 C语言中动态内存管理方式 C中动态内存管理 operator new与operator delete函数 new和delete的实现原理 定位new表达式(placement-new) 常见面试题 C/C内存分布 我们先来看一段代码&#xff1a; int…

【搭建IIS网站教程】

文章目录 一、搭建IIS网站二、http重定向三、虚拟目录四、用域名访问网站五、网站安全六、小知识总结 一、搭建IIS网站 1、Windows Server 2008中配置IIS 打开服务器管理器&#xff0c;角色&#xff0c;添加角色&#xff0c;然后点击下一步 选择安装web服务器iis 选择角色…

纯python代码快速实现简易带界面的数字华容道小游戏

数字华容道是一种经典的益智游戏&#xff0c;旨在通过移动数字方块的位置&#xff0c;将它们按照正确的顺序排列。游戏板由一个4x4的方格组成&#xff0c;其中包含了编号为1到15的数字方块&#xff0c;以及一个空白方块。 游戏开始时&#xff0c;数字方块被随机打乱并填充到方格…

Linux-用户与用户组,权限

1.用户组管理&#xff08;以下命令需root用户执行&#xff09; ①创建用户组 groupadd 用户组名 ②删除用户组 groupdel 用户组名 2.用户管理&#xff08;以下命令需root用户执行&#xff09; ①创建用户 useradd [-g -d] 用户名 >-g&#xff1a;指定用户的组&#xff0c;不…

香橙派5部署chatglm2-6b模型

香橙派5部署chatglm2-6b模型 环境信息&#xff1a; 部署服务器&#xff1a;orangepi 5 16G版本 系统版本&#xff1a;Ubuntu 22.04.3 LTS 参考文档&#xff1a; 利用GPU加速&#xff0c;在Orange Pi上跑LLMs &#xff1a; https://zhuanlan.zhihu.com/p/650110025 遥遥领…

Python语法基础(变量 注释 数据类型 输入与输出 运算符 缩进)

目录 变量变量命名规则变量的类型变量的创建变量的作用域 注释的方法数据类型对象和引用的概念Number(数字)数据转换 输入与输出输入函数输出函数输出函数的end参数输出格式多行语句 运算符算术运算符赋值运算符三目运算符运算符的优先级 缩进缩进格式注意事项层级嵌套 变量 标…

Web实验总

目录 网站需求&#xff1a; 思路&#xff1a; 实验步骤&#xff1a; 第一步&#xff1a;准备工作 第二步&#xff1a;新建一个存储网页的目录 第三步&#xff1a;修改本地hosts映射 第四步&#xff1a;修改配置文件&#xff0c;建立基于http服务的网站 1)创建用户song和…

计算机考研408到底有多难?25届开个好头很有必要

前言 大家好&#xff0c;我是陈橘又青&#xff0c;相信关注我的各位小伙伴们中&#xff0c;大多都是在计算机专业的大学生吧&#xff01; 每天都有许多人在后台私信我&#xff0c;问我要不要考研&#xff0c;我想说这个东西是因人而异的&#xff0c;像我本人就选择了就业&…

STL常用库函数复习

文章目录 pairvectorliststackqueuequeuepriority_queuequeue双端队列 set✨set集合✨multiset 多重集合了解&#xff1a;unordered_set 无序集合 map&#x1f31f;map几乎不用&#xff1a;multimap一般不用&#xff1a;undered_map pair utility示例 #include <iostream&…