一、前言

  ROS可以通过在shell环境中输入命令来进行文件系统的使用、源代码编辑、构建、调试和功能包管理等。为了正确使用ROS,除了基本的Linux命令之外,还需要熟悉ROS专用命令。

二、常用命令

2.1 ROS shell 命令

  ROS shell命令又被称为rosbash。这使我们可以在ROS开发环境中使用Linux中常用的bash shell命令。我们主要使用前缀是ros且带有多种后缀的命令,例如cd、pd、d、ls、ed、cprun。相关命令如下:

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、ERRORFATAL。它还运行一个管理参数的参数服务器。

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_ROOTROS_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运行的节点。选项包括pkgtypename

  • 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的名称、addressros-rootros-package-path
  • <include> 您可以加载属于同一个功能包或不同的功能包的另一个launch,并将其作为一个launch文件来运行。
  • <remap> 可以更改节点名称、话题名称等等,在节点中用到的ROS变量的名称。
  • <env> 设置环境变量,如路径和IP(很少使用)。
  • <param> 设置参数名称、类型、值等
  • <rosparam> 可以像rosparam命令一样,查看和修改loaddumpdelete等参数信息。
  • <group> 用于分组正在运行的节点。
  • <test> 用于测试节点。类似于<node>,但是有可以用于测试的选项。
  • <arg> 可以在launch文件中定义一个变量,以便在像下面这样运行时更改参数。

2.2.4 rosclean 检查及删除ROS日志

rosclean [选项]

  该命令检查或删除ROS日志文件。在运行roscore时,对所有节点的记录都会写入日志文件,随着时间的推移,需要定期使用rosclean命令删除这些记录。

rosclean check #查看
rosclean purge #清除

2.3 ROS信息命令

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

  • 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系统)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐