1.概述
ROS信息命令用于识别话题、服务、节点和参数等信息。尤其是rostopic、rosservice、rosnode和rosparam经常被使用,并且rosbag是ROS的主要特征之一,它具有记录数据和回放功能,务必要掌握。
命令 | 重要度 | 命令释义 | 详细说明 |
rostopic | ★★★ | ros+topic | 确认ROS话题信息 |
rosservice | ★★★ | ros+service | 确认ROS服务信息 |
rosnode | ★★★ | ros+node | 确认ROS节点信息 |
rosparam | ★★★ | ros+param(parameter) | 确认和修改ROS参数信息 |
rosbag | ★★★ | ros+bag | 记录和回放ROS消息 |
rosmsg | ★★☆ | ros+msg | 显示ROS消息类型 |
rossrv | ★★☆ | ros+srv | 显示ROS服务类型 |
rosversion | ★☆☆ | ros+version | 显示ROS功能包的版本信息 |
roswtf | ☆☆☆ | ros+wtf | 检查ROS系统 |
2.运行节点
我们将使用下面的命令,利用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
3. rosnode:ROS节点
首先,我们需要了解节点(node),所以先复习术语。
命令 | 详细说明 |
rosnode list | 查看活动的节点列表 |
rosnode ping [节点名称] | 与指定的节点进行连接测试 |
rosnode info [节点名称] | 查看指定节点的信息 |
rosnode machine [PC名称或IP] | 查看该PC中运行的节点列表 |
rosnode kill [节点名称] | 停止指定节点的运行 |
rosnode cleanup | 删除失连节点的注册信息 |
rosnode list:列出正在运行中的所有节点
这是列出连接到roscore的所有节点的命令。如果已经运行了roscore和之前准备好的节点(turtlesim_node,turtle_teleop_key),则可以看到终端中列出了用于在roscore进行日志记录的rosout,以及teleop_turtle和turtlesim节点。
rosnode list
节点运行及实际节点的名称:在前面的例子中运行的节点是turtlesim_node和turtle_teleop_key。rosnode list列表中有teleop_turtle和turtlesim的原因是运行的节点名称与实际节点名称不同。例如,turtle_teleop_key节点在源文件中设置为“ros :: init (argc,argv,"teleop_turtle");”。笔者建议使可执行节点的名称等于实际的节点名称。
rosnode ping [节点名称]:与指定的节点进行连接测试
以下是测试turtlesim节点是否确实连接到当前使用的计算机。如果已连接,它将从节点收到XMLRPC响应,如下所示。
如果在该节点运行出现问题或通信中断,则显示以下错误消息。
ERROR: connection refused to [http://192.168.43.11:36399/]
rosnode info [节点名称]:检查指定节点的信息
使用rosnode info命令可以查看指定节点的信息。基本上,用户可以检查发布者、订阅者和服务等。此外,还可以检查关于节点运行URI和话题输入/输出的信息。
rosnode info /turtlesim
rosnode机器[PC名称或IP]:查看此PC上运行的所有节点
您可以看到指定设备(PC或终端)上运行的所有节点。
rosnode machine 192.168.43.11
rosnode kill [节点名称]:终止指定节点的运行
这是一个终止正在运行的节点的命令。您可以在运行节点的终端窗口中使用[Ctrl+c]直接终止节点,但也可以指定要结束的的节点,如下所示。
rosnode kill /turtlesim
再次查看节点,发现已经终止掉了
如果使用该命令终止了节点,则会在运行该节点的终端窗口上显示如下警告消息,并关闭该节点。
rosnode cleanup:删除无法验证连接信息的虚拟节点的注册信息
删除连接信息未被确认的虚拟节点的注册信息。当节点由于意外事件而异常终止时,该命令将从节点目录中删除连接中断的节点。这个命令很少使用,但是它非常有用,因为用户不需要重新运行roscore。
rosnode cleanup