理解ros服务和参数---ros学习第6篇

loongembedded loongembedded     2023-03-09     521

关键词:

文章目录

1.ROS服务

服务时节点之间通讯的另一种方式。服务允许节点发送一个请求(request)并获得一个响应(response)。

2.使用rosservice

rosservice可以很容易地通过服务附加到ROS客户端/服务器框架上。rosservice有许多可用于服务的命令,如下所示:

rosservice list 输出活跃服务的信息
rosservice call 用给定的参数调用服务
rosservice type 输出服务的类型
rosservice find 按服务的类型查找服务
rosservice uri 输出服务的ROSRPC uri

2.1 rosservice list

$ rosservice list

list命令显示turtlesim接待您提供9个服务:reset, clear, spawn, kill, turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, turtlesim/set_logger_level。同时还有两个与rosout节点相关的服务:/rosout/get_loggers和/rosout/set_logger_level。

我们使用rosservice type命令进一步查看clear(清除)服务

2.2 rosservice type

用法:

rosservice type [service]

查看clear服务的类型

kandi@ubuntu:~$ rosservice type /clear
std_srvs/Empty

服务的类型为Empty(空),这表明调用这个服务时不需要参数(即,它在发出请求时不发送数据,在接收响应时也不接收数据)。下面我们使用rosservice call命令调用此服务。

2.3 rosservice call

用法:

rosservice call [service] [args]

因为clear服务的类型是Empty,所以调用时无需带参数

$ rosservice call /clear

跟想象的一样,它清楚了turtlesim_node背景上的运动轨迹

我们看看服务具有参数的情况。查看spawn(产卵)服务的信息:

kandi@ubuntu:~$ rosservice type /spawn | rossrv show


这个服务让我们可以在给定的位置和角度生成一只新的乌龟。name字段是可选的,这里我们不设具体的名字,让turtlesim自动创造一个

kandi@ubuntu:~$ rosservice call /spawn 2 2 0.2 “”
name: “turtle2”
kandi@ubuntu:~$ rosservice call /spawn 10 10 0.2 “”
name: “turtle3”

3. 使用rosparam

rosparam能让我们在ROS参数服务器(Parameter Server)上存储和操作数据。参数服务器能够存储整形(integer)、浮点(float)、布尔(boolean)、字典(dictionaries)和列表(list)等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1是整形,1.0是浮点型,true是布尔型,[1,2,3]是整形组成的列表,[a:b,c:d]是字典。rosparam有很多命令可以用来操作参数,如下所示:

rosparam set 设置参数
rosparam get 获取参数
rosparam load 从文件中加载参数
rosparam dump 向文件中转储参数
rosparam delete 删除参数
rosparam list 列出参数名

3.1 rosparam list

kandi@ubuntu:~$ rosparam list
/rosdistro
/roslaunch/uris/host_ubuntu__46587
/rosversion
/run_id
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
kandi@ubuntu:~$

可以看出turtlesim节点在参数服务器上有3个参数用于设定背景颜色
让我们使用rosparam set来试着改变一个参数值。

3.2 rosparam set和rosparam get

用法:

rosparam set [param_name]
rosparam get [param_name]

现在我们修改背景颜色的蓝色和红色通道值:

kandi@ubuntu:~$ rosparam get /turtlesim/background_b
255
kandi@ubuntu:~$ rosparam get /turtlesim/background_r
69
kandi@ubuntu:~$ rosparam set /turtlesim/background_b 60
kandi@ubuntu:~$ rosparam get /turtlesim/background_b
60
kandi@ubuntu:~$ rosparam set /turtlesim/background_r 150
kandi@ubuntu:~$ rosservice call /clear

看到的turtlesim如下:

然后我们来查看参数服务器上其他参数的值,获取背景的绿色通知的值:

kandi@ubuntu:~$ rosparam get /turtlesim/background_g
86

业可以用rosparam get /来显示参数服务器上的多有内容:

你可能希望将其存储在一个文件中,以便下次可以重新加载它。这通过rosparam
很容易就可以实现

3.3 rosparam dump和rosparam load

用法:

rosparam dump [file_name] [namespace]
rosparam load [file_name] [namespace]

在这里,我们将所有的参数写入params.yaml文件:

$ rosparam dump params.yaml

甚至可以将yaml文件重载入新的命名空间,例如copy_turtle:

kandi@ubuntu:~$ rosparam load params.yaml copy_turtle
kandi@ubuntu:~$ rosparam get /copy_turtle/turtlesim/background_b
60

至此,我们已经了解ROS服务和参数的工作原理。

理解ros节点---ros学习第4篇

文章目录1.图概念速览2.节点3.客户端库4.roscore5.使用rosnode6.使用rosrun1.图概念速览计算图(ComputationGraph)是一个由ROS进程组成的点对点网络,它们能够共同处理数据。ROS的基本计算图概念有节点(Nodes)、主节点(Master)、参数服务器... 查看详情

理解ros节点---ros学习第4篇

文章目录1.图概念速览2.节点3.客户端库4.roscore5.使用rosnode6.使用rosrun1.图概念速览计算图(ComputationGraph)是一个由ROS进程组成的点对点网络,它们能够共同处理数据。ROS的基本计算图概念有节点(Nodes)、主节点(Master)、参数服务器... 查看详情

理解ros话题---ros学习第4篇

文章目录1.通过键盘控制turtle2.ROS话题2.1使用rqt_graph1.通过键盘控制turtle(1)打开一个终端运行roscore(2)再打开一个新的终端来打开turtlesim_node节点kandi@ubuntu:~$rosrunturtlesimturtlesim_node弹出一个乌龟的界面(3)再打开一个新的终端,... 查看详情

理解ros话题---ros学习第5篇

文章目录1.通过键盘控制turtle2.ROS话题2.1使用rqt_graph2.2介绍rostopic2.3使用功能rostopicecho2.4使用rostopiclist3.ROS消息3.1使用rostopictype4.继续学习rostopic4.1使用rostopicpub4.2使用rostopichz5.使用rqt_plot1.通过键盘控制turtle(1)打开一个终端运行roscor... 查看详情

ros2日文新书-2021-07

...3-2ROS2的操作第4章ROS2编程4-1编程流程4-2主题定义4-3类型4-4服务4-5参数4-6推出第5章支持ROS2的系统5-1ROS2架构5-2DDS和RTPS5-3通信服务质量(QoS)第6章扩展ROS 查看详情

ros学习--第3篇:ros基础---创建工作空间和软件包

1.创建工作空间catkin_ws创建src文件,放置功能包源码:mkdir-p~/catkin_ws/src进入src文件夹:cd~/catkin_ws/src初始化文件夹:catkin_init_workspace这样就在src文件中创建了一个CMakeLists.txt的文件,目的是告诉系统,这个... 查看详情

ros2日文新书-2021-07

...3-2ROS2的操作第4章ROS2编程4-1编程流程4-2主题定义4-3类型4-4服务4-5参数4-6推出第5章支持ROS2的系统5-1ROS2架构5-2DDS和RTPS5-3通信服务质量(QoS)第6章扩展ROS2的工具6-1RQt6-2rosbag26-3RViz26-4Navigation26-5Cartogr... 查看详情

ros学习--第3篇:ros基础---创建工作空间

1.创建工作空间catkin_ws创建src文件,放置功能包源码:mkdir-p~/catkin_ws/src进入src文件夹:cd~/catkin_ws/src初始化文件夹:catkin_init_workspace这样就在src文件中创建了一个CMakeLists.txt的文件,目的是告诉系统,这个... 查看详情

ros学习笔记三(理解ros节点)

要求已经在Linux系统中安装一个学习用的ros软件包例子:sudoapt-getinstallros-indigo-ros-tutorialsROS图形概念概述nodes:节点,一个节点即为一个可执行文件,可以通过ROS和其他节点进行通信;messages:消息,当订阅或者发布一个topic时使... 查看详情

ros计算图级,理解ros节点、话题

参考技术A计算图级-------是ROS处理数据的一种点对点的网络形式。程序运行时,所有进程及它们所进行的数据处理,将会通过一种点对点的网络形式表现出来,即通过节点、节点管理器、话题、服务等来进行表现。ROS中的基本计算图... 查看详情

ros学习记录17slam仿真学习6完结——无人驾驶(代码片段)

零.前言这次使用Move_Base框架配置配置,就能实现自主导航了。仿真篇结束,后面找机会拿个实物来玩儿。在整理包,后面会传到github和gitee上一.安装与介绍1.1move_base安装sudoapt-getinstallros-noetic-move-base框架是这样,... 查看详情

[ros]chinesemooc||chapter-6.5param_demo参数服务器

    查看详情

借助chatgpt学习ros2机器人编程

...功能。参加在线课程或线下培训,进一步加深对ROS2的理解。尝试自己设计和编写ROS2程序,练习应用。通过参加社区活动,与其他开发者交流经验,解决遇到的问题。注意:要想在一个月内掌握ROS2,需要您... 查看详情

ros官网初级教程学习总结(5-9)(代码片段)

...址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为5-9小节。理解ROS节点图概念概述Nodes:节点,一个节点即为一个可执行文件。节点可以发布或接收一个话题,也可以提供或使用某种服务。Messages:消息,消息是一种ROS数据类型&#... 查看详情

ros官网中级教程学习总结(1-6)(代码片段)

教程网址:http://wiki.ros.org/cn/ROS/Tutorials。本博客为1-6小节。手动创建ROSpackage添加xml文件。当你的package里已经包含配置文件(package.xml),ROS能够找到它。执行:rospackfind[包名称]。应该注意到我们刚才所创建的package.xml依... 查看详情

ros2学习笔记21--编写action服务器和客户端(c++)(代码片段)

...要:这篇内容主要介绍如何使用C++来编写动作服务器和客户端环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.3.2编写动作服务器和客户端(C&... 查看详情

ros2学习笔记12--创建ros2包(代码片段)

概要:这篇主要介绍如何创建ros2包环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.2创建自己第一个ros2包(原文:https://docs.ros.org/en/foxy/Tutor... 查看详情

ros2学习笔记14--编写一个简单的服务器和客户端(c++)(代码片段)

概要:这篇主要介绍c++版本服务端和客户端的编写环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.5编写一个简单的服务器和客户端(C+... 查看详情