ROS
可以通过在shell
环境中输入命令来进行文件系统的使用、源代码编辑、构建、调试和功能包管理等。为了正确使用ROS
,除了基本的Linux
命令之外,还需要熟悉ROS
专用命令。
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功能包的文件
ROS
执行命令管理ROS
节点的运行。
roscore [选项] #ros+core master(ROS名称服务) + rosout(日志记录) + parameter server(参数管理)
rosrun [功能包名称] [节点名称] #ros+run 运行节点
roslaunch [功能包名称] [launch文件名] #ros+launch 运行多个节点或设置运行选项
rosclean [选项] #ros+clean 检查或删除ROS日志文件
roscore
[选项]roscore [选项]
roscore
命令会运行主节点,主节点管理节点之间的消息通信中的连接信息。主节点是使用ROS
时必须首先被运行的必要元素。主节点接收多种信息的注册,如节点的名称、话题和服务名称、消息类型、URI
地址和端口号,并在收到节点的请求时将此信息通知给其他节点。此外,会运行rosout
,这个命令用于记录ROS
中使用的ROS
标准输出日志,例如DEBUG、INFO、WARN、ERROR
和FATAL
。它还运行一个管理参数的参数服务器。
rosrun [功能包名称] [节点名称]
rosrun
是执行指定的功能包中的一个节点的命令。以下例子运行turtlesim
功能包的turtlesim_node
节点。
rosrun turtlesim turtlesim_node
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>
在
标签中,描述了使用roslaunch
命令运行节点所需的标签。
描述了roslaunch
运行的节点。选项包括pkg
、type
、name
。
pkg
功能包的名称type
实际运行的节点的名称(节点名)name
与上述type
对应的节点被运行时,起的名称(运行名)。一般情况下使用与type
相同的名称,但可以根据需要,在运行时更改名称。group
是对指定节点进行分组的标签。选项有ns
,这是命名空间(name space
),是组的名称,属于该组的节点和消息都包含在由ns
指定的名称中。 如果创建了roslaunch
文件,可以如下运行union.launch
。请注意,当用roslaunch
命令运行多个节点时,运行中的节点的输出(info、error
等)不会显示在终端屏幕上,这会使调试变得困难。如果此时添加了--screen
选项,终端上运行的所有节点的输出将显示在终端屏幕上。
roslaunch ros_tutorials_topic union.launch --screen
Launch
标签
在launch
文件中根据XML13
的编写方式可以实现多种功能。launch
中使用的标签如下所示。
指roslaunch
语句的开始和结束。
这是对于节点运行的标签。您可以更改功能包、节点名称和执行名称。
可以设置运行该节点的PC
的名称、address
、ros-root
和ros-package-path
。
您可以加载属于同一个功能包或不同的功能包的另一个launch
,并将其作为一个launch
文件来运行。
可以更改节点名称、话题名称等等,在节点中用到的ROS
变量的名称。
设置环境变量,如路径和IP
(很少使用)。
设置参数名称、类型、值等
可以像rosparam
命令一样,查看和修改load
、dump
和delete
等参数信息。
用于分组正在运行的节点。
用于测试节点。类似于
,但是有可以用于测试的选项。
可以在launch
文件中定义一个变量,以便在像下面这样运行时更改参数。rosclean [选项]
该命令检查或删除ROS
日志文件。在运行roscore
时,对所有节点的记录都会写入日志文件,随着时间的推移,需要定期使用rosclean
命令删除这些记录。
rosclean check #查看
rosclean purge #清除
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
系统rostopic list
显示活动的话题目录rostopic echo [话题名称]
实时显示指定话题的消息内容rostopic find [类型名称]
显示使用指定类型的消息的话题rostopic type [话题名称]
显示指定话题的消息类型rostopic bw [话题名称]
显示指定话题的消息带宽(bandwidth)rostopic hz [话题名称]
显示指定话题的消息数据发布周期rostopic info [话题名称]
显示指定话题的信息rostopic pub [话题名称] [消息类型] [参数]
用指定的话题名称发布消息rosservice list
显示活动的服务信息rosservice info [服务名称]
显示指定服务的信息rosservice type [服务名称]
显示服务类型rosservice find [服务类型]
查找指定服务类型的服务rosservice uri [服务名称]
显示ROSRPC URI服务rosservice args [服务名称]
显示服务参数rosservice call [服务名称] [参数]
用输入的参数请求服务rosnode list
查看活动的节点列表rosnode ping [节点名称]
与指定的节点进行连接测试rosnode info [节点名称]
查看指定节点的信息rosnode machine [PC名称或IP]
查看该PC中运行的节点列表rosnode kill [节点名称]
停止指定节点的运行rosnode cleanup
删除失连节点的注册信息rosparam list
查看参数列表rosparam get [参数名称]
获取参数值rosparam set [参数名称]
设置参数值rosparam dump [文件名称]
将参数保存到指定文件rosparam load [文件名称]
获取保存在指定文件中的参数rosparam delete [参数名称]
删除参数rosmsg list
显示所有消息rosmsg show [消息名称]
显示指定消息rosmsg md5 [消息名称]
显示md5sumrosmsg package [功能包名称]
显示用于指定功能包的所有消息rosmsg packages
显示使用消息的所有功能包rossrv list
显示所有服务rossrv show [服务名称]
显示指定的服务信息rossrv md5 [服务名称]
显示md5sumrossrv package [功能包名称]
显示指定的功能包中用到的所有服务rossrv packages
显示使用服务的所有功能包 在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
---
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
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系统)