【ROS】ROS常用命令
- 一、前言
- 二、常用命令
- 2.1 ROS shell 命令
- 2.2 ROS执行命令
- 2.2.1 `roscore` [选项]
- 2.2.2 rosrun:运行ROS节点
- 2.2.3 roslaunch:运行多个ROS节点
- 2.2.4 rosclean 检查及删除ROS日志
- 2.3 ROS信息命令
- 2.3.1 rostopic: ROS话题
- 2.3.2 rosservice:ROS服务
- 2.3.3 rosnode:ROS节点
- 2.3.4 rosparam:ROS参数
- 2.3.5 rosmsg: ROS消息信息
- 2.3.6 rossrv:ROS服务信息
- 2.3.7 rosbag:ROS日志信息
- 2.4 ROS catkin命令
- 2.5 ROS功能包命令
一、前言
ROS
可以通过在shell
环境中输入命令来进行文件系统的使用、源代码编辑、构建、调试和功能包管理等。为了正确使用ROS
,除了基本的Linux
命令之外,还需要熟悉ROS
专用命令。
二、常用命令
2.1 ROS shell 命令
ROS shell
命令又被称为rosbash
。这使我们可以在ROS
开发环境中使用Linux
中常用的bash shell
命令。我们主要使用前缀是ros
且带有多种后缀的命令,例如cd、pd、d、ls、ed、cp
和run
。相关命令如下:
roscd [功能包名称] #ros+cd(changes directory) 移动到指定的ROS功能包目录
rosls [功能包名称] #ros+ls(lists files) 显示ROS功能包的文件和目录
rosed [功能包名称] [文件名称] #ros+ed(editor) 编辑ROS功能包的文件
2.2 ROS执行命令
ROS
执行命令管理ROS
节点的运行。
roscore [选项] #ros+core master(ROS名称服务) + rosout(日志记录) + parameter server(参数管理)
rosrun [功能包名称] [节点名称] #ros+run 运行节点
roslaunch [功能包名称] [launch文件名] #ros+launch 运行多个节点或设置运行选项
rosclean [选项] #ros+clean 检查或删除ROS日志文件
2.2.1 roscore
[选项]
roscore [选项]
roscore
命令会运行主节点,主节点管理节点之间的消息通信中的连接信息。主节点是使用ROS
时必须首先被运行的必要元素。主节点接收多种信息的注册,如节点的名称、话题和服务名称、消息类型、URI
地址和端口号,并在收到节点的请求时将此信息通知给其他节点。此外,会运行rosout
,这个命令用于记录ROS
中使用的ROS
标准输出日志,例如DEBUG、INFO、WARN、ERROR
和FATAL
。它还运行一个管理参数的参数服务器。
2.2.2 rosrun:运行ROS节点
rosrun [功能包名称] [节点名称]
rosrun
是执行指定的功能包中的一个节点的命令。以下例子运行turtlesim
功能包的turtlesim_node
节点。
rosrun turtlesim turtlesim_node
2.2.3 roslaunch:运行多个ROS节点
roslaunch [功能包名称] [launch文件名]
roslaunch
是运行指定功能包中的一个或多个节点或设置执行选项的命令。如果rosrun
是执行一个节点的命令,那么roslaunch
可以运行多个节点。除此之外,它还是一种在运行节点时可以附带如下各种选项的ROS
命令: 修改参数或节点的名称,设置节点的命名空间,设置ROS_ROOT
及ROS_PACKAGE_PATH
,以及环境变量修改等选项的ROS
命令,等。
这里举例说明roslaunch
的使用:
roscd ros_topic_test/ #ros_topic_test为已经存在的节点,用来测试
mkdir launch
cd launch/
gedit union.launch
如下编辑union.launch
文件的内容。
<launch>
<group ns="ns1">
<node pkg="ros_tutorials_topic" type="topic_publisher" name="topic_publisher"/>
<node pkg="ros_tutorials_topic" type="topic_subscriber" name="topic_subscriber"/>
</group>
<group ns="ns2">
<node pkg="ros_tutorials_topic" type="topic_publisher" name="topic_publisher"/>
<node pkg="ros_tutorials_topic" type="topic_subscriber" name="topic_subscriber"/>
</group>
</launch>
在<launch>
标签中,描述了使用roslaunch
命令运行节点所需的标签。<node>
描述了roslaunch
运行的节点。选项包括pkg
、type
、name
。
-
pkg
功能包的名称 -
type
实际运行的节点的名称(节点名) -
name
与上述type
对应的节点被运行时,起的名称(运行名)。一般情况下使用与type
相同的名称,但可以根据需要,在运行时更改名称。 -
group
<group>
是对指定节点进行分组的标签。选项有ns
,这是命名空间(name space
),是组的名称,属于该组的节点和消息都包含在由ns
指定的名称中。
如果创建了roslaunch
文件,可以如下运行union.launch
。请注意,当用roslaunch
命令运行多个节点时,运行中的节点的输出(info、error
等)不会显示在终端屏幕上,这会使调试变得困难。如果此时添加了--screen
选项,终端上运行的所有节点的输出将显示在终端屏幕上。
roslaunch ros_tutorials_topic union.launch --screen
Launch
标签
在launch
文件中根据XML13
的编写方式可以实现多种功能。launch
中使用的标签如下所示。
-
<launch>
指roslaunch
语句的开始和结束。 -
<node>
这是对于节点运行的标签。您可以更改功能包、节点名称和执行名称。 -
<machine>
可以设置运行该节点的PC
的名称、address
、ros-root
和ros-package-path
。 -
<include>
您可以加载属于同一个功能包或不同的功能包的另一个launch
,并将其作为一个launch
文件来运行。 -
<remap>
可以更改节点名称、话题名称等等,在节点中用到的ROS
变量的名称。 -
<env>
设置环境变量,如路径和IP
(很少使用)。 -
<param>
设置参数名称、类型、值等 -
<rosparam>
可以像rosparam
命令一样,查看和修改load
、dump
和delete
等参数信息。 -
<group>
用于分组正在运行的节点。 -
<test>
用于测试节点。类似于<node>
,但是有可以用于测试的选项。 -
<arg>
可以在launch
文件中定义一个变量,以便在像下面这样运行时更改参数。
2.2.4 rosclean 检查及删除ROS日志
rosclean [选项]
该命令检查或删除ROS
日志文件。在运行roscore
时,对所有节点的记录都会写入日志文件,随着时间的推移,需要定期使用rosclean
命令删除这些记录。
rosclean check #查看
rosclean purge #清除
2.3 ROS信息命令
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.3.1 rostopic: ROS话题
-
rostopic list
显示活动的话题目录 -
rostopic echo [话题名称]
实时显示指定话题的消息内容 -
rostopic find [类型名称]
显示使用指定类型的消息的话题 -
rostopic type [话题名称]
显示指定话题的消息类型 -
rostopic bw [话题名称]
显示指定话题的消息带宽(bandwidth) -
rostopic hz [话题名称]
显示指定话题的消息数据发布周期 -
rostopic info [话题名称]
显示指定话题的信息 -
rostopic pub [话题名称] [消息类型] [参数]
用指定的话题名称发布消息
2.3.2 rosservice:ROS服务
-
rosservice list
显示活动的服务信息 -
rosservice info [服务名称]
显示指定服务的信息 -
rosservice type [服务名称]
显示服务类型 -
rosservice find [服务类型]
查找指定服务类型的服务 -
rosservice uri [服务名称]
显示ROSRPC URI服务 -
rosservice args [服务名称]
显示服务参数 -
rosservice call [服务名称] [参数]
用输入的参数请求服务
2.3.3 rosnode:ROS节点
-
rosnode list
查看活动的节点列表 -
rosnode ping [节点名称]
与指定的节点进行连接测试 -
rosnode info [节点名称]
查看指定节点的信息 -
rosnode machine [PC名称或IP]
查看该PC中运行的节点列表 -
rosnode kill [节点名称]
停止指定节点的运行 -
rosnode cleanup
删除失连节点的注册信息
2.3.4 rosparam:ROS参数
-
rosparam list
查看参数列表 -
rosparam get [参数名称]
获取参数值 -
rosparam set [参数名称]
设置参数值 -
rosparam dump [文件名称]
将参数保存到指定文件 -
rosparam load [文件名称]
获取保存在指定文件中的参数 -
rosparam delete [参数名称]
删除参数
2.3.5 rosmsg: ROS消息信息
-
rosmsg list
显示所有消息 -
rosmsg show [消息名称]
显示指定消息 -
rosmsg md5 [消息名称]
显示md5sum -
rosmsg package [功能包名称]
显示用于指定功能包的所有消息 -
rosmsg packages
显示使用消息的所有功能包
2.3.6 rossrv:ROS服务信息
-
rossrv list
显示所有服务 -
rossrv show [服务名称]
显示指定的服务信息 -
rossrv md5 [服务名称]
显示md5sum -
rossrv package [功能包名称]
显示指定的功能包中用到的所有服务 -
rossrv packages
显示使用服务的所有功能包
2.3.7 rosbag:ROS日志信息
在ROS
中用bag
格式保存各种消息,并在需要时将其回放,以便我们可以重现以前的情况。rosbag
是一个实现生成、播放和压缩等功能的程序,它具有以下几种功能。
-
rosbag record [选项] [话题名称]
将指定话题的消息记录到bag
文件 -
rosbag info [文件名称]
查看bag
文件的信息 -
rosbag play [文件名称]
回放指定的bag
文件 -
rosbag compress [文件名称]
压缩指定的bag
文件 -
rosbag decompress [文件名称]
解压指定的bag
文件 -
rosbag filter [输入文件] [输出文件] [选项]
生成一个删除了指定内容的新的bag
文件 -
rosbag reindex bag [文件名称]
刷新索引 -
rosbag check bag [文件名称]
检查指定的bag
文件是否能在当前系统中回放 -
rosbag fix [输入文件] [输出文件] [选项]
将由于版本不同而无法回放的bag
文件修改成可以回放的文件
使用rosbag
回放+rostopic
输出msg
信息到指定文件
rosbag record -a
rosbag info 2022-06-15-22-11-06.bag #举例
rostopic echo /ros_tutorial_msg | tee topic1.yaml
rosbag play 2022-06-15-22-11-06.bag
cat topic.yaml
stamp:
secs: 1655302267
nsecs: 489132
data: 808
---
2.4 ROS catkin命令
ROS的catkin命令用于使用catkin 构建系统来构建功能包。
-
catkin_create_pkg
自动生成功能包 -
catkin_make
基于catkin
构建系统的构建 -
catkin_eclipse
把用catkin
构建系统生成的功能包修改,使得可以在Eclipse
环境中使用 -
catkin_prepare_release
发布时用到的日志整理和版本标记 -
catkin_generate_changelog
发布时生成或更新CHANGELOG.rst
文件 -
catkin_init_workspace
初始化catkin
构建系统的工作目录 -
catkin_find
搜索catkin
2.5 ROS功能包命令
-
rospack
ros+pack(age) 显示与ROS功能包相关的信息 -
rosinstall
ros+install 安装ROS附加功能包 -
rosdep
ros+dep(endencies) 安装该功能包的依赖性文件 -
roslocate
ros+locate 与ROS功能包信息有关的命令 -
roscreate-pkg
ros+create-pkg 自动生成ROS功能包(用于旧的rosbuild系统) -
rosmake
ros+make 构建ROS功能包(用于旧的rosbuild系统)