ROS 命令行工具
本文主要介绍 ROS 机器人操作系统的一些常用命令行工具,使用这些命令可以使机器人编程和调试变得更加简便。
为了顺利运行 ROS 命令,你需要其他安装好 ROS 软件(参考 ROS 安装),并设置环境变量:
source /opt/ros/noetic/setup.bash
roscore
roscore 命令是 ROS 中一个很重要的工具,当我们在终端中运行这个命令时,系统就会启动 ROS Master、参数服务器和日志节点。在这之后,我们就可以运行其他的 ROS 程序/节点了。
我们可以打开一个 Shell 终端运行 roscore 指令,然后在另一个 Shell 终端输入如下命令来运行 ROS 节点。运行 roscore 命令后,可以看到类似的信息:
$ roscore
... logging to /home/rudy/.ros/log/2928a9d8-de4b-11ec-9b2d-fb09e61e79d4/roslaunch-Latitude-3420-676704.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://Latitude-3420:41275/
ros_comm version 1.15.14
SUMMARY
========
PARAMETERS
* /rosdistro: noetic
* /rosversion: 1.15.14
NODES
auto-starting new master
process[master]: started with pid [676714]
ROS_MASTER_URI=http://Latitude-3420:11311/
setting /run_id to 2928a9d8-de4b-11ec-9b2d-fb09e61e79d4
process[rosout-1]: started with pid [676724]
started core service [/rosout]
可以看到关于启动的 ROS Master 信息和 ROS Master 地址。
rosnode
rosnode 命令可以帮助我们探索 ROS 节点各个方面的功能。比如,我们可以列出在系统中正在运行的 ROS 节点的数量。在终端中直接输入 rosnode 命令,便可以获得 该命令的所有帮助信息。
例如,启动 turtlesim 模拟器后,使用 rosnode list
命令可列出正在运行的节点列表:
$ rosnode list
/rosout
/teleop_turtle
/turtlesim
rostopic
rostopic 命令可以提供系统中与当前话题发送和订阅的相关情况。它可以列出话题名称、打印话题数据和向话题发布数据。
例如,启动 turtlesim 模拟器后,使用 rostopic list
命令可列出当前话题:
$ rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
假设当前存在一个名为 hello 的话题,那么可以使用如下命令打印/调取话题数据:
$ rostopic echo /hello
使用如下命令向 hello 话题发布数据:
$ rostopic pub /hello std_msgs/String "Hello"
此时,订阅节点会收到 Hello 消息:
$ rostopic echo /hello
WARNING: topic [/hello] does not appear to be published yet
data: "Hello"
---