ROS学习第三弹(Services/Parameters rqt_console/rqt_logger_level/roslaunch)
2017-10-30 16:48
483 查看
一.理解ROS中的Services和Parameters
本节的学习还是需要接着之前的乌龟运行程序,就是乌龟运行界面和乌龟控制界面都得开着。
1.1ROS Services
Services是另一种节点间通信方式,Services允许节点发布一个请求并接收一个响应。
1.2用rosservice命令
rosservice命令可以很容易的连接到client/service框架。rosservice有很多命令;
1.2.1 rosservice list
这个命令的返回结果是:
/clear
/kill
/my_turtle/get_loggers
/my_turtle/set_logger_level
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rqt_gui_py_node_11016/get_loggers
/rqt_gui_py_node_11016/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
列举了turtle提供的九种服务;
以下两项是关于小乌龟的控制程序的节点;
teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
1.2.2 rosservice type [service]
查看服务是什么类型:rosservice type clear
能看见service是空的,这意味着使用service call 时,不带参数
1.2.3 rosservice call [service] [args]
因为clear服务没有参数,所以我们直接输入如下命令:
rosservice call clear 这个命令会清除turrlesim_node的背景
如果服务是有参数的,如spawn服务:rosservice type spawn| rossrv show
这个服务可以产生一个新的turtle,然后用下列命令指定新的乌龟的坐标和角度
1.3 使用rosparam
rosparam允许你存储和操作ROS Parameter Server上的数据。Parameter可以存储integers/floats/boolean/
dictionaries/lists. rosparam用YAML标记语言做语法。在简单的情形,YAML很接近于自然形式,如
1 是 integers, 1.0 是 float,one 是 String,true 是 boolean。[1, 2, 3]是整型数组,{a:b,c:d}是字典。
rosparam命令列表:
rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names
1.3.1 rosparam list 列出参数名称
1.3.2 rosparam set 和 get命令
进行ros参数的设置和获取
如,将背景的红色分量设为150:rosparam set background_r 150
此时还需要调用清除服务更新状态:rosservice call clear
一点启示:topic与service通信的一些区别。topic 用于异步通信,建立topic和订阅及发布节点之间的联系,命令发布后响应,命令结束后动作停止。而service用于同步通信,即下达多个命令的设置,然后调用service call服务统一响应。
查看单个颜色分量:
rosparam get background_g
rosparam get background_r
ro
4000
sparam get background_b
获取所有参数:rosparam get /
1.3.3 rosparam dump 和rosparam load命令
格式:
rosparam dump [file_name]
rosparam load [file_name] [namespace]
把所有参数写入一个叫 params.yaml的文件
rosparam dump params.yaml
也可以把yaml装入一个namespaces:
rosparam load params.yaml copy
查看数据:rosparam get copy/background_b
二.使用rrqt_console和roslaunch
rqt_console和ros_logger_level用于debug调试,roslaunch用于一次打开多个节点。ROS fuerte及之前的版本不支持rqt。
2.1 安装rqt和turtle
sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-turtlesim
之前已经装过可以不装。
2.2 rqt_console 和rqt_logger_level的用法
rqt_console与ROS的日志框架相连,可以输出的节点信息。rqt_logger_level可以改变节点要输出的信息的级别(DEBUG/WARN/INFO/ERROR)
打开turtlesim后,在两个新的终端中打开rqt_console和rqt_logger_level;
代码:rosrun rqt_console rqt_console
rosrun rqt_logger_level rqt_logger_level
默认的输出等级是INFO,当turtlesim时,可以看见有发布的信息。
把输出等级改为Debug
可以看见有不同的调试结果在终端出现。
2.2.1 关于logger的输出等级
logger有五个输出等级,从高到低是只包含信息的多少,从最粗略到最详细:Fatal-Error-Warn-Info-Debug
可以通过设置改变输出等级
2.2.2 roslaunch的使用
roslaunch的使用需要一个launch文件,roslaunch通过launch文件中的描述打开节点,格式:
roslaunch [package] [filename.launch]
此时可以先关掉之前的turtlesim节点,然后准备launch文件:
cd ~/catkin_ws
source devel/setup.bash
roscd beginner_tutorials
mkdir launch
cd launch
创建一个launch文件,名为turtleminic,内容和解释如下:
<launch>
//用 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>
//在一个名为 sim 的 turtlesim 节点里打开了两个 namespace 标签:turtlesim1 和 turtlesim2。这能够允许我们在开启两个仿真器时避免命名冲突
<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>
//这里我们用 input 和 output 话题打开了一个跟随节点,input 和 output 重命名了 turtlesim1和 turtlesim2,这会导致 turtlesim2 跟随 turtlesim1 的动作。
</launch>
2.2.3 运行roslaunching
roslaunch beginner_tutorials turtleminic.launch
这样就同时打开了两个有依赖关系的乌龟界面;
打开一个新的终端,输入:rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '
[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
用让rqt_graph查看关系,在新终端中输入:rqt_graph
本节的学习还是需要接着之前的乌龟运行程序,就是乌龟运行界面和乌龟控制界面都得开着。
1.1ROS Services
Services是另一种节点间通信方式,Services允许节点发布一个请求并接收一个响应。
1.2用rosservice命令
rosservice命令可以很容易的连接到client/service框架。rosservice有很多命令;
1.2.1 rosservice list
这个命令的返回结果是:
/clear
/kill
/my_turtle/get_loggers
/my_turtle/set_logger_level
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rqt_gui_py_node_11016/get_loggers
/rqt_gui_py_node_11016/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
列举了turtle提供的九种服务;
以下两项是关于小乌龟的控制程序的节点;
teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
1.2.2 rosservice type [service]
查看服务是什么类型:rosservice type clear
能看见service是空的,这意味着使用service call 时,不带参数
1.2.3 rosservice call [service] [args]
因为clear服务没有参数,所以我们直接输入如下命令:
rosservice call clear 这个命令会清除turrlesim_node的背景
如果服务是有参数的,如spawn服务:rosservice type spawn| rossrv show
这个服务可以产生一个新的turtle,然后用下列命令指定新的乌龟的坐标和角度
1.3 使用rosparam
rosparam允许你存储和操作ROS Parameter Server上的数据。Parameter可以存储integers/floats/boolean/
dictionaries/lists. rosparam用YAML标记语言做语法。在简单的情形,YAML很接近于自然形式,如
1 是 integers, 1.0 是 float,one 是 String,true 是 boolean。[1, 2, 3]是整型数组,{a:b,c:d}是字典。
rosparam命令列表:
rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names
1.3.1 rosparam list 列出参数名称
1.3.2 rosparam set 和 get命令
进行ros参数的设置和获取
如,将背景的红色分量设为150:rosparam set background_r 150
此时还需要调用清除服务更新状态:rosservice call clear
一点启示:topic与service通信的一些区别。topic 用于异步通信,建立topic和订阅及发布节点之间的联系,命令发布后响应,命令结束后动作停止。而service用于同步通信,即下达多个命令的设置,然后调用service call服务统一响应。
查看单个颜色分量:
rosparam get background_g
rosparam get background_r
ro
4000
sparam get background_b
获取所有参数:rosparam get /
1.3.3 rosparam dump 和rosparam load命令
格式:
rosparam dump [file_name]
rosparam load [file_name] [namespace]
把所有参数写入一个叫 params.yaml的文件
rosparam dump params.yaml
也可以把yaml装入一个namespaces:
rosparam load params.yaml copy
查看数据:rosparam get copy/background_b
二.使用rrqt_console和roslaunch
rqt_console和ros_logger_level用于debug调试,roslaunch用于一次打开多个节点。ROS fuerte及之前的版本不支持rqt。
2.1 安装rqt和turtle
sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-turtlesim
之前已经装过可以不装。
2.2 rqt_console 和rqt_logger_level的用法
rqt_console与ROS的日志框架相连,可以输出的节点信息。rqt_logger_level可以改变节点要输出的信息的级别(DEBUG/WARN/INFO/ERROR)
打开turtlesim后,在两个新的终端中打开rqt_console和rqt_logger_level;
代码:rosrun rqt_console rqt_console
rosrun rqt_logger_level rqt_logger_level
默认的输出等级是INFO,当turtlesim时,可以看见有发布的信息。
把输出等级改为Debug
可以看见有不同的调试结果在终端出现。
2.2.1 关于logger的输出等级
logger有五个输出等级,从高到低是只包含信息的多少,从最粗略到最详细:Fatal-Error-Warn-Info-Debug
可以通过设置改变输出等级
2.2.2 roslaunch的使用
roslaunch的使用需要一个launch文件,roslaunch通过launch文件中的描述打开节点,格式:
roslaunch [package] [filename.launch]
此时可以先关掉之前的turtlesim节点,然后准备launch文件:
cd ~/catkin_ws
source devel/setup.bash
roscd beginner_tutorials
mkdir launch
cd launch
创建一个launch文件,名为turtleminic,内容和解释如下:
<launch>
//用 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>
//在一个名为 sim 的 turtlesim 节点里打开了两个 namespace 标签:turtlesim1 和 turtlesim2。这能够允许我们在开启两个仿真器时避免命名冲突
<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>
//这里我们用 input 和 output 话题打开了一个跟随节点,input 和 output 重命名了 turtlesim1和 turtlesim2,这会导致 turtlesim2 跟随 turtlesim1 的动作。
</launch>
2.2.3 运行roslaunching
roslaunch beginner_tutorials turtleminic.launch
这样就同时打开了两个有依赖关系的乌龟界面;
打开一个新的终端,输入:rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '
[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
用让rqt_graph查看关系,在新终端中输入:rqt_graph
相关文章推荐
- ros用rqt_graph显示节点关系、rqt_plot显示数据流、rqt_console显示节点的输出、rqt_logger_level
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 8 学习ROS的rqt_console和roslaunch命令
- ROS的学习(十)rqt_console和roslaunch
- ROS学习手记 - 6 使用ROS中的工具:rqt_console & roslaunch & rosed
- ROS入门_1.11 使用 rqt_console 和 roslaunch
- 机器人操作系统ROS Indigo 入门学习(9)——理解ROS rqt_console和 roslaunch
- ROS学习(九)—— rqt_console 和 roslaunch
- ROS教程(八):使用 rqt_console 和 roslaunch
- 使用 rqt_console 和 roslaunch(八)
- 使用 rqt_console 和 roslaunch---8
- 学习ROS wiki 上rqt教程随手记录(一)
- ROS学习笔记1-Beginner level
- ros笔记:(5)使用 rqt_console 和 roslaunch
- ROS学习--如何结合launch文件使用参数服务器
- ros.launch 文件学习
- 机器人操作系统ROS Indigo 入门学习(9)——理解ROS rqt_console和 roslaunch
- ROS学习(三) 使用参数以及相应的 .launch 文件编写
- [跟我学ROS]8.rqt_console和roslaunch的用法
- ROS学习--如何结合launch文件使用参数服务器
- ROS进二阶学习笔记(3) - programmatic way to start/stop a roslaunch