ROS官网初级教程学习总结(5-9)

Posted NodYoung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS官网初级教程学习总结(5-9)相关的知识,希望对你有一定的参考价值。

教程网址:http://wiki.ros.org/cn/ROS/Tutorials
本博客为5-9小节。

理解 ROS节点

图概念概述

  • Nodes:节点,一个节点即为一个可执行文件。节点可以发布或接收一个话题,也可以提供或使用某种服务。
  • Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
  • Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
  • Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
  • rosout: ROS中相当于stdout/stderr。
  • roscore: 主机+ rosout + 参数服务器。

客户端库

ROS客户端库允许使用不同编程语言编写的节点之间互相通信。
- rospy = python 客户端库
- roscpp = c++ 客户端库

roscore

使用rosnode

rosnode 显示当前运行的ROS节点信息。
rosnode list:列出活跃的节点。
rosnode info [结点]:返回一个特定节点的信息。

使用 rosrun

rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。
rosrun [package_name] [node_name]

理解ROS话题

使用 rqt_graph

rqt_graph能够创建一个显示当前系统运行情况的动态图形。
$ rosrun rqt_graph rqt_graph

rostopic介绍

rostopic命令工具能让你获取有关ROS话题的信息。
$ rostopic -h
rostopic echo [topic]:显示在某个话题上发布的数据。
rostopic list:列出所有当前订阅和发布的话题。$ rostopic list -h
$ rostopic list -v:在rostopic list中使用verbose选项。

ROS Messages

话题之间的通信是通过在节点之间发送ROS消息实现的。这意味着话题的类型是由发布在它上面的消息类型决定的。
rostopic type [topic]:查看发布在某个话题上的消息类型。
$ rosmsg show turtlesim/Velocity :使用rosmsg命令来查看消息的详细情况
rostopic pub [topic] [msg_type] [args]:把数据发布到当前某个正在广播的话题上。
rostopic hz [topic]:查看数据发布的频率。

使用 rqt_plot

rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形。
$ rosrun rqt_plot rqt_plot

理解ROS服务和参数

ROS Services

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

使用rosservice

rosservice list         输出可用服务的信息
rosservice call [service] [args]        调用带参数的服务
rosservice type  [service]        输出服务类型
rosservice find         依据类型寻找服务find services by service type
rosservice uri          输出服务的ROSRPC uri

使用rosparam

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。

rosparam set            设置参数
rosparam get            获取参数
rosparam load [file_name] [namespace]         从文件读取参数
rosparam dump [file_name]          向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

$ rosparam get /:显示参数服务器上的所有内容。

ROS 参数服务器

我们在实现一个机器人的时候,我们一定会遇到需要存储很多参数的情况,当这些参数不断增加的时候我们可能会需要将这些参数存储在文件中,在某些时刻还需要在多个程序间共享这些参数,ROS 为了满足这种需求提供了一个参数服务器,它是一个共享的服务器,所有的ROS节点都可以共享这些参数,任何一个节点都可以对参数服务器上的参数进行增删查改操作。参数服务器可以存储各种类型的数据,并且还可以设置访问的范围是否只有当前的节点可以访问或者全部节点都可以访问。

使用 rqt_console 和 roslaunch

使用rqt_console和rqt_logger_level

rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。
rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括Fatal、Error、Warn、Info和Debug)。
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level

使用roslaunch

roslaunch用来启动定义在launch文件中的多个节点。
$ roslaunch [package] [filename.launch]

Launch 文件解析

<launch>:以launch标签开头以表明这是一个launch文件。
<group ns="turtlesim1">:创建了不同分组并以’命名空间(namespace)’标签来区分。这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。
<node pkg="turtlesim" name="mimic" type="mimic">:启动节点。

使用rosed编辑ROS中的文件

使用 rosed

rosed 可以直接通过package名来获取到待编辑的文件而无需指定该文件的存储路径。rosed默认的编辑器是vim。
$ rosed [package_name] [filename]

以上是关于ROS官网初级教程学习总结(5-9)的主要内容,如果未能解决你的问题,请参考以下文章

ROS官网初级教程学习总结(1-4)

ROS官网初级教程学习总结(1-4)

ROS官网初级教程学习总结(10-16)

ROS官网初级教程学习总结(10-16)

ROS官网初级教程学习总结(17-20)

ROS官网初级教程学习总结(17-20)