首页 > 编程语言 >[ROS学习] 12.参数的使用与编程方法

[ROS学习] 12.参数的使用与编程方法

时间:2022-09-01 17:57:24浏览次数:71  
标签:12 rosparam 参数 background turtlesim ROS parameter 编程

笔记参考:【ROS学习笔记】12.参数的使用与编程方法
内容参考:基于B站ROS公开课:【古月居】古月·ROS入门21讲

更多详情: http://wiki.ros.org/Parameter%20Server

本节说明

至此我们学习了ROS中的两种核心通信机制:Topic(话题)模式 和 Service(服务)模式。
Topic中的Publisher、Subscriber,Service中的Client、Server,消息类型msg、srv以及它们的自定义数据类型。
这次讲讲参数的使用。

1 概念图

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

2 创建功能包

本节建立一个新的功能包,命名为 learning_parameter。在src下创建。

cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs

3 参数命令行的使用(rosparam)

rosparam命令可以完成参数相关的大部分功能。

在ROS中,参数文件常以YAML文件的格式保存,形式如下:

我们打开海龟仿真节点来试一下。

roscore
rosrun turtlesim turtlesim_node

显示参数及其列表

rosparam
rosparam list

观察一下这些参数,可以看到:
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
分别代表了小海龟的背景RGB颜色,目前是蓝色。
/rosdistro 为ros的版本代号
/roslaunch/uris/host_ck_vpc__35381
/rosversion 当前ros的版本
/run_id 进程的id号

显示某个参数值rosparam get ...

rosparam get /turtlesim/background_g

设定某个参数值rosparam set ...

rosparam set /turtlesim/background_g 200

 把/turtlesim/background_b的值改成200,再get一下可以看到已经改成了200.

但是,海龟的背景颜色还没变。我们需要发送一个clear的空内容service请求:

颜色就会变掉。

rosservice call /clear "{}"

保存参数到文件rosparam dump xxx.yaml

将参数导出,保存为param.yaml文件。
默认保存位置为当前工作目录下,我们可以打开看看:

从文件读取参数rosparam load xxx.yaml

我们可以直接在这个yaml文件里修改参数,然后导回去。
比如背景色改成 255,255,255(白色)

导回去:

rosparam load param.yaml

传service请求后,可以看到背景颜色变成了白色:

rosservice call /clear "{}"

删除参数rosparam delete ...

rosparam delete /turtlesim/background_b

就可以删掉指定的参数。
删掉后可以用rosparam set ...设回来。

4 使用程序来使用参数(C++)

这次我们使用程序来获取和设置参数。
如何获取/设置参数:

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

创建代码

注意这段代码需要修改一下以满足我们当前Noetic版本ROS的要求,背景色的三个参数名前面都要带 /turtlesim,因为Noetic中背景色的参数名称就是这样(这可以用 rosparam list 看到)。修改:

完成后将代码拷贝到src文件夹下。

编译

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

  • 设置需要编译的代码和生成的可执行文件;
  • 设置链接库
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})

然后编译:

cd ~/catkin_ws
catkin_make

运行

roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config

可以看到背景从蓝色变成了白色。

5 使用程序来使用参数(Python)

这次我们使用程序来获取和设置参数。
如何获取/设置参数:

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

创建代码 并 打开权限

运行

roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config

同样颜色设置成功!!!

 

标签:12,rosparam,参数,background,turtlesim,ROS,parameter,编程
From: https://www.cnblogs.com/gentlejan/p/16647373.html

相关文章

  • C#并行编程:简要
    通过编程发挥多核或多处理器优势的方式称为并行编程。它是多线程这个更宽泛概念的一个子集。多线程API和以下可以发挥多核处理器能力的各种结构:并行LINQ(PLINQ)Parallel......
  • 15.shell编程
    Linux的shell编程可以理解为Windows里面的powershell和cmd新建文件与执行在root文件夹新建shell文件后写入命令cd/rootvitest.sh#shell文件后缀为.sh添加执......
  • 并发编程Bug起源:可见性、有序性和原子性问题
    以前古老的DOS操作系统,是单进行的系统。系统每次只能做一件事情,完成了一个任务才能继续下一个任务。每次只能做一件事情,比如在听歌的时候不能打开网页。所有的任务操作都按......
  • 无服务器计算编程语言采用
    无服务器计算编程语言采用本文介绍了主要云供应商提供的不同编程语言和运行时。采用情况和趋势是什么。每个云供应商都提供哪些编程语言?Serverlessprogramminglangua......
  • 我在编程学校学到的是……
    我在编程学校学到的是……在我的第一篇博客中,我开玩笑说我不知道​​我在Python的Pandas库中做了什么,但我喜欢弄清楚事情。我参加了GeneralAssembly的数据科学沉浸......
  • GitHub——Error: Process completed with exit code 126.
    前言如题,github的actions在执行脚本的时候提示权限不足,既然权限不足,那就赋予权限呗,于是查了下git文档,还真有这个命令;gitupdate-index:gitupdate-index内容报......
  • Go 网络编程
    互联网协议前言现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网......
  • 基于padavan(openwrt) MIPS 的OpenSSL编译安装和编程基础
    设备还是之前那个e8820s 先把gccmakeperl装了opkginstallgccmakeperl这里有个问题,就是openssl1.1.0之后的版本要求perl5.10,opkg安装的是5.28,运行./Con......
  • 使用selenium自动化模块实现登录12306
    importtimefromselenium.webdriverimportChromefromselenium.webdriver.chrome.optionsimportOptionsfromselenium.webdriver.common.byimportByfromselenium.w......
  • 8/31 深入理解计算机系统 第十一章 网络编程
    第十一章网络编程11.1客户端-服务器编程模型包含一个服务器进程和多个客户端进程。服务器管理某种资源,并通过操作这种资源给客户端提供某种服务。基本操作是:事务一个......