ROS学习(六):ROS信息命令

    ROS信息命令用于识别话题、服务、节点和参数等信息。尤其是rostopic、 rosservice、rosnode和rosparam经常被使用,并且rosbag是ROS的主要特征之一,它 具有记录数据和回放功能。

 运行节点

      我们将使用下面的命令,利用ROS提供的turtlesim来了解相关的节点、话题和服 务。在使用ROS信息命令进行测试之前,需要做好以下准备工作。

运行roscore

    为确保顺利进行,关闭所有以前运行的终端。然后打开一个新的终端并运行以下命令。

$ roscore

    为了运行turtlesim功能包中的turtlesim_node节点,打开一个新的终端并运行以下命 令。这将从turtlesim功能包运行turtlesim_node。用户会在一个蓝色的屏幕上看到乌龟。

$ rosrun turtlesim turtlesim_node

运行turtlesim功能包中的turtle_teleop_key节点

    打开一个新的终端并运行以下命令。这将在turtlesim功能包中运行turtle_teleop_ key。一旦执行,可以在该终端窗口上,用键盘上的方向键控制乌龟。当按下方向键时,屏幕上的乌龟会移动,这是一个简单的仿真,但这是将驱动机器人所需的 移动速度(m/s)和旋转速度(rad/s)用消息传送的。

$ rosrun turtlesim turtle_teleop_key

 一.rosnode:ROS节点

    首先,我们需要了解节点(node),所以先看一些术语。

 1.rosnode list:列出正在运行中的所有节点

    这是列出连接到roscore的所有节点的命令。如果已经运行了roscore和之前准备 好的节点(turtlesim_node,turtle_teleop_key),则可以看到终端中列出了用于在 roscore进行日志记录的rosout,以及teleop_turtle和turtlesim节点。

2.rosnode ping [节点名称]:与指定的节点进行连接测试

 以下是测试turtlesim节点是否确实连接到当前使用的计算机。如果已连接,它将从 节点收到XMLRPC响应,如下所示。

如果在该节点运行出现问题或通信中断,则显示以下错误消息。

3.rosnode info [节点名称]:检查指定节点的信息

     使用rosnode info命令可以查看指定节点的信息。基本上,用户可以检查发布者、订 阅者和服务等。此外,还可以检查关于节点运行URI和话题输入/输出的信息。由于会显 示大量信息,因此省略了内容,所以请务必亲自运行。

4.rosnode机器[PC名称或IP]:查看此PC上运行的所有节点

可以看到指定设备(PC或终端)上运行的所有节点。

 

5.rosnode kill [节点名称]:终止指定节点的运行

    这是一个终止正在运行的节点的命令。您可以在运行节点的终端窗口中使用[Ctrl+c] 直接终止节点,但也可以指定要结束的的节点,如下所示。

    如果使用该命令终止了节点,则会在运行该节点的终端窗口上显示如下警告消息,并 关闭该节点。

6.rosnode cleanup:删除无法验证连接信息的虚拟节点的注册信息

    删除连接信息未被确认的虚拟节点的注册信息。当节点由于意外事件而异常终止时, 该命令将从节点目录中删除连接中断的节点。这个命令很少使用,但是它非常有用,因为 用户不需要重新运行roscore。

 二.rostopic: ROS话题

首先,让我们参考第4.1节“ROS术语”,因为我们需要了解话题。

 

   在运行ROS话题示例之前,请先关闭所有节点。通过在不同的终端窗口中分别运行以 下命令来运行turtlesim_node和turtle_teleop_key。

 1.rostopic list:列出活动话题

    rostopic list命令显示当前正在发送和接收的所有话题的列表。

通过将“-v”选项添加到rostopic list命令,可以分开发布话题和订阅话题,并将每 个话题的消息类型一起显示。

2.rostopic echo [话题名称]:实时显示指定话题的消息内容

    以下示例实时显示组成/turtle1/pose话题的x、y、theta、linear_velocity和 angular_velocity的数据。

3.rostopic find [类型名称]:显示使用指定类型的消息的话题

rostopic type [话题名称]:显示指定话题的消息类型

4.rostopic bw [话题名称]:显示指定话题的消息数据带宽(bandwidth)

在以下示例中,用于/turtle1/pose话题的数据带宽平均为每秒1.27 KB。

5.rostopic hz [话题名称]:显示指定话题的消息数据发布周期

在以下示例中,用户可以检查/turtle1/pose数据的发布周期。从结果可以看出,该消 息以大约62.5Hz(0.016秒= 16毫秒)的频率被发布。

6.rostopic info [话题名称]:显示指定话题的信息

在以下示例中,用户可以看到/turtle1/pose话题使用turtlesim/Pose消息类型,发布 到/turtlesim节点,并且没有实际订阅的话题。

7.rostopic pub [话题名称] [消息类型] [参数]:使用指定的话题名称发布消息

以下是使用/turtle1/cmd_vel话题名称发布类型为geometry_msgs/Twist的消息的 示例。

每个选项的描述如下。

■ -1只发布一次消息(实际上只运行一次,但会像以前的结果一样运行3秒)。

■ /turtle1/cmd_vel 指定的话题名称

■ geometry_msgs/Twist 要发布的消息类型名称

■ -- ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’ 在x轴坐标上以每秒2.0 m的速度移动,以z轴为中心,每秒旋转 1.8rad

 三.rosservice:ROS服务

在运行ROS服务相关例子之前先关闭所有节点。通过在不同的终端窗口中运行以下命 令来运行turtlesim_node和turtle_teleop_key。

1.rosservice list:显示活动的服务信息

显示活动中的服务的信息。会显示在同一网络中使用的所有服务。

2.rosservice info [服务名称]:显示指定服务的信息

以下是使用rosservice的info选项查看/turtle1/set_pen服务的节点名称、URI、类型 和参数的示例。

3.rosservice type [服务名称]:显示服务类型

    在以下示例中,可以看到/turtle1/set_pen服务是turtlesim/SetPen类型。

rosservice find [服务类型]:查找指定服务类型的服务

    以下示例搜索turtlesim/SetPen类型的服务。因此,可以看到搜索出/turtle1/ set_pen。

rosservice uri [服务名称]:显示ROSRPC

   uri服务 用户也可以使用rosservice的uri选项来检查/turtle1/set_pen服务的ROSRPC URI, 如下所示:

rosservice args [服务名称]:服务参数输出

我们来看看/turtle1/set_pen服务的每个参数,如下例所示,该命令显示在/turtle1/ set_pen服务中使用r、g、b、width和off参数。

 

rosservice call [服务名称] [参数]:用输入的参数服务请求

以下示例是请求/turtle1/set_pen服务的命令。所使用的“255 0 0 5 0”是对应于用 于/turtle1/set_pen服务的参数(r,g,b,width,off)的值。红色的r的最大值是255, 因为g和b都是0,所以笔的颜色是红色的。width设置为5,off为0(假)。rosservice call是一个非常有用的命令,通常用于测试服务。

通过使用前面的命令,发送了服务请求,更改了turtlesim中使用的笔的属性,并且 从turtle_teleop_key中下达了下移命令。作为结果,可以从下面图中看到原来是白色的 笔色显示为红色。

四.rosparam:ROS参数

在运行ROS参数相关示例之前先关闭所有节点。通过在不同的终端窗口中运行以下命 令来运行turtlesim_node和turtle_teleop_key。

1.rosparam list:查看参数列表

显示在同一网络中使用的参数列表。

2.rosparam get [参数名称]:获取参数值

如果要查看特定参数的值,可以将该参数名称指定为rosparam get命令的选项。

如果要检查所有参数的值,而不是某一特定的参数,可以使用“/”作为选项来显示所 有参数的值,如下所示。

3.rosparam dump [文件名]:将参数保存到指定的文件

    以下示例将当前参数值保存到parameters.yaml文件中。因为它保存了每次使用的参 数值,并且可以在下次执行时使用(“~/”表示用户的home目录),所以很方便。

4.rosparam set [参数名称]:设置参数值

这是设置参数值的命令。在以下示例中,将turtlesim节点的background_b参数 (与背景色相关的参数)设置为0。

RGB从255,86,69变为0,86,69,所以变成深绿色,如图5-4右图所示。但是,由于 turtlesim节点并不是每次读取参数,因此需要使用“rosparam set background_b 0” 命令修改参数之后,用“rosservice call clear”命令刷新屏幕。参数的反映结果决于节 点的运行方式。

5.rosparam load [文件名称]:将参数保存到指定的文件

    此命令与rosparam dump相反,是读取parameters.yaml文件并将其用作当前参数 值。如下例所示,运行“rosservice call clear”命令,参数值将会变为所加载的文件的 参数值,并且在执行dump命令时,图5-4中变为绿色的背景将变为蓝色背景。rosparam load是一个非常有用的命令,会经常使用,读者需要掌握。

6.rosparam delete [参数名称]:删除参数

该命令删除指定的参数。

五.rosmsg: ROS消息信息
 

在运行ROS消息信息示例之前,先关闭所有节点。通过在不同的终端窗口中运行以下 命令来运行turtlesim_node和turtle_teleop_key。

1.rosmsg list:显示所有消息

该命令显示当前ROS中安装的功能包的所有消息。根据当前ROS中包含的功能包,显 示结果可能会有所不同。

2.rosmsg show [消息名称]:显示指定的消息信息

显示指定的消息信息。以下是显示turtlesim/Pose消息信息的例子。float32是一个 浮点变量,可以确认它是一个包含5条信息(x、y、theta、linear_velocity和angular_ velocity)的消息。

3.rosmsg md5 [消息名称]:显示md5sum

以下是查看turtlesim/Pose消息的md5信息的示例。有时如果在消息通信期间遇到 MD5问题,则需要检查md5sum。这时会用到该命令,一般不常用。

4.rosmsg package [功能包名称]:显示用于指定功能包的所有消息

   可以看到特定功能包中使用的消息。

5.rosmsg packages:显示使用消息的所有功能包

六.rossrv:ROS服务信息

在运行ROS服务信息相关示例之前,先关闭所有节点。通过在不同的终端窗口中运行 以下命令来运行turtlesim_node和turtle_teleop_key。

1.rossrv list:显示所有服务

    该命令显示了ROS上当前安装的功能包的所有服务。根据目前包含在ROS中的功能 包,显示结果可能会有所不同。

2.rossrv show [服务名称]:显示指定服务的信息

    以下示例显示turtlesim/SetPen服务信息。可以确认uint8是包含r、g、b、width 和off等5种信息的服务。请注意,“---”在服务文件中用作请求和响应的分隔符。对于 turtlesim/SetPen,用户可以看到只有请求,没有任何响应。

3.rossrv md5 [服务名称]:显示md5sum

在以下示例中,使用该命令来查看turtlesim/SetPen服务的md5信息。有时如果在 服务请求和响应期间遇到MD5问题,则需要检查md5sum。这时会用到该命令,一般不 常用。

4.rossrv package [功能包名称]:显示用于指定功能包的所有服务

可以看到指定功能包中用到的服务。

5.rossrv packages:显示使用服务的所有功能包

猜你喜欢

转载自blog.csdn.net/kh815/article/details/88135591
今日推荐