理解 ROS 服务和参数

2017-06-12  本文已影响0人  李庆雪

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

使用 rosservice

rosservice 可以很轻松的使用 ROS 客户端/服务器框架提供的服务。rosservice 提供了很多可以在topic 上使用的命令,可以通过下列命令查看:
rosservice -h
rosservice list
输出可用服务的信息,如打开 turtlesim_node:
roscore
rosrun turtlesim turtlesim_node
rosservice list
可以查看到 turtlesim 节点提供的服务:重置(reset), 清除(clear), 再生(spawn), 终止(kill)
等。

2,使用 rosparam

rosparam 能够存储并操作 ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整、型、浮点、布尔、字符串、字典和列表等数据类型。rosparam 使用 YAML 标记语言的语法。

使用 rqt_console 和 roslaunch
  1. 使用 rqt_console 和 rqt_logger_level
    rqt_console 属于 ROS 日志框架(logging framework)的一部分,用来显示节点的输出信息。
    rqt_logger_level 允许我们修改节点运行时输出信息的日志等级(logger levels )(包括DEBUG、WARN、INFO 和 ERROR)。
    现在让我们来看一下 turtlesim 在 rqt_console 中的输出信息,同时在 rqt_logger_level 中修改日志等级。在启动 turtlesim 之前先在另外两个新终端中运行 rqt_console 和 rqt_logger_level:
roscore
rosrun rqt_console rqt_console
rosrun rqt_logger_level rqt_logger_level

会看到弹出的两个窗口 rqt_console , rqt_logger_level。


现在在一个新标签页中启动 turtlesim:
rosrun turtlesim turtlesim_node
因为默认日志等级是 INFO,所以你会看到 turtlesim 启动后输出的所有信息,刷新一下
rqt_logger_level 窗口并选择 Warn 将日志等级修改为 WARN。
现在我们让 turtle 动起来并观察 rqt_console 中的输出:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
日志等级说明
修改后的日志等级按以下优先顺序排列:
Fatal
Error
Warn
Info
Debug
Fatal 是最高优先级,Debug 是最低优先级。通过设置日志等级你可以获取该等级及其以上优先等级的所有日志消息。比如,这里将日志等级设为 Warn 时,会得到 Warn、Error 和 Fatal 这三个等级的所有日志消息。
现在让我们按 Ctrl-C 退出 turtlesim 节点,接下来我们将使用 roslaunch 来启动多个 turtlesim 节点和一个模仿节点以让一个 turtlesim 节点来模仿另一个 turtlesim 节点。
  1. 使用 roslaunch
    roslaunch 可以用来启动定义在 launch 文件中的多个节点。
    用法:
    roslaunch [package] [filename.launch]
    先切换到 hello_test 程序包目录下:
cd ~/test/devel
source setup.bash # 执行 devel 里的 setup.bash 脚本将这geworkspace 的信息配置到环境里面
roscd hello_test
然后创建一个 launch 文件夹:
mkdir launch
cd launch
  1. Launch 文件
    现在我们来创建一个名为 turtlemimic.launch 的 launch 文件并复制粘贴以下内容到该文件里面:
<launch> 
  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group> 
  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>
 
   <node pkg="turtlesim" name="mimic" type="mimic">
     <remap from="input" to="turtlesim1/turtle1"/>
     <remap from="output" to="turtlesim2/turtle1"/>
  </node> 
 </launch>
  1. 使用 roslaunch
    现在通过 roslaunch 命令来启动 launch 文件:
    roslaunch hello_test turtlemimic.launch
    现在将会有两个 turtlesims 被启动,然后我们在一个新标签页中使用 rostopic 命令发送速度设定消息:
    rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0,0.0, -1.8]'
    会看到两个 turtlesims 会同时开始移动,虽然发布命令只是给turtlesim1 发送了速度设定消息。

也可以通过 rqt_graph 来更好的理解在 launch 文件中所做的事情。运行rqt并在主窗口中选择rqt_graph
运行rqt_graph


到此,我们算是已经学会了rqt_console和roslaunch命令的使用.
上一篇 下一篇

猜你喜欢

热点阅读