roscore是运行ROS主节点的命令。也可以在另一台位于同一个网络内的计算机上运行它。但是,除了支持多roscore的某些特殊情况,roscore在一个网络中只能运行一个。运行ROS时,将使用您在ROS_MASTER_URI变量中列出的URI地址和端口。如果用户没有设置,会使用当前本地IP作为URI地址并使用端口11311。
rosrun是ROS的基本运行命令。它用于在功能包中运行一个节点。节点使用的URI地址将存储在当前运行节点的计算机上的ROS_HOSTNAME环境变量作为URI地址,端口被设置为任意的固有值
如果rosrun是执行一个节点的命令,那么roslaunch是运行多个节点的概念。该命令允许运行多个确定的节点。其他功能还包括一些专为执行具有诸多选项的节点的ROS命令,比如包括更改功能包参数或节点名称、配置节点命名空间、设置ROS_ROOT和ROS_PACKAGE_PATH以及更改环境变量等。
用户可以保存ROS中发送和接收的消息的数据,这时用于保存的文件格式称为bag,是以*.bag作为扩展名。在ROS中,这个功能包可以用来存储信息并在需要时可以回放以前的情况。例如,当使用传感器执行机器人实验时,使用bag将传感器值以消息形式保存。有了这些保存的信息,即使不重复执行之前的实验,也能通过回放保存的bag文件来反复利用当时的传感器值。特别的,如果利用rosbag的记录和回放功能,在开发那些需要反复修改程序的算法的时候会非常有用。
roscd [功能包名称]
移动Ros目录,移动到你指定的功能包的目录
例如:roscd turtlesim
rosls [功能包名称]
查看指定ros功能包的文件列表
例如:rosls turtlesim
rosed [功能包名称] [文件名称]
用于快速更改一些相对简单的内容(不常用)
例如:rosed turtlesim package.xml
roscore [选项]
运行master(ROS名称服务) + rosout(日志记录) + parameter server(参数管理)
例如:roscore
rosrun [功能包名称] [节点名称]
运行ros节点
例如:rosrun turtlesim turtlesim_node
roslaunch [功能包名称] [launch文件名]
运行多个ros节点
例如:roslaunch openni_launch openni.launch
rosclean [选项]
检查及删除ros日志
$ rosclean check //查看日志使用情况
320K ROS node logs → 意味着ROS日志一共占320KB
$ rosclean purge //删除日志
在运行下列ros命令之前,先关闭所有节点。通过在不同的终端窗口中运行以下命令来运行turtlesim_node和turtle_teleop_key
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
rosnode list: 列出正在运行的节点
daniel@daniel-Lenovo-Legion-Y7000:~$ rosnode list
/rosout
/teleop_turtle
/turtlesim
rosnode ping [节点名称]:与指定节点进行连接测试
以下是测试turtlesim节点是否确实连接到当前使用的计算机。如果已连接,它将从节点收到XMLRPC响应,如下所示
daniel@daniel-Lenovo-Legion-Y7000:~$ rosnode ping /turtlesim
rosnode: node is [/turtlesim]
pinging /turtlesim with a timeout of 3.0s
xmlrpc reply from http://daniel-Lenovo-Legion-Y7000:45277/ time=0.248194ms
xmlrpc reply from http://daniel-Lenovo-Legion-Y7000:45277/ time=1.032114ms
xmlrpc reply from http://daniel-Lenovo-Legion-Y7000:45277/ time=0.998020ms
xmlrpc reply from http://daniel-Lenovo-Legion-Y7000:45277/ time=0.966072ms
xmlrpc reply from http://daniel-Lenovo-Legion-Y7000:45277/ time=0.988007ms
xmlrpc reply from http://daniel-Lenovo-Legion-Y7000:45277/ time=1.076937ms
^Cping average: 0.884891ms
如果在该节点运行出现问题或通信中断,则显示以下错误消息
ERROR: connection refused to [http://192.168.1.100:55996/]
rosnode info [节点名称]:检查指定节点的信息
使用rosnode info命令可以查看指定节点的信息。基本上,用户可以检查发布者、订阅者和服务等。此外,还可以检查关于节点运行URI和话题输入/输出的信息。
daniel@daniel-Lenovo-Legion-Y7000:~$ rosnode info /turtlesim
--------------------------------------------------------------------------------
Node [/turtlesim]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/color_sensor [turtlesim/Color]
* /turtle1/pose [turtlesim/Pose]
Subscriptions:
* /turtle1/cmd_vel [geometry_msgs/Twist]
Services:
* /clear
* /kill
* /reset
* /spawn
* /turtle1/set_pen
* /turtle1/teleport_absolute
* /turtle1/teleport_relative
* /turtlesim/get_loggers
* /turtlesim/set_logger_level
contacting node http://daniel-Lenovo-Legion-Y7000:45277/ ...
Pid: 9406
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
* topic: /turtle1/cmd_vel
* to: /teleop_turtle (http://daniel-Lenovo-Legion-Y7000:46153/)
* direction: inbound
* transport: TCPROS
rosnode kill [节点名称]:终止指定节点的运行
这是一个终止正在运行的节点的命令。您可以在运行节点的终端窗口中使用[Ctrl+c]直接终止节点,但也可以指定要结束的的节点,如下所示
$ rosnode kill /turtlesim
killing /turtlesim
killed
如果使用该命令终止了节点,则会在运行该节点的终端窗口上显示如下警告消息,并关闭该节点。
[WARN] [1499668430.215002371]: Shutdown request received.
[WARN] [1499668430.215031074]: Reason given for shutdown: [user request]
rosnode cleanup:删除无法验证连接信息的虚拟节点的注册信息
删除连接信息未被确认的虚拟节点的注册信息。当节点由于意外事件而异常终止时,该命令将从节点目录中删除连接中断的节点。这个命令很少使用,但是它非常有用,因为用户不需要重新运行roscore。
$ rosnode cleanup
rostopic list:列出活动话题
rostopic list命令显示当前正在发送和接收的所有话题的列表。
daniel@daniel-Lenovo-Legion-Y7000:~$ rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
通过将“-v”选项添加到rostopic list命令,可以分开发布话题和订阅话题,并将每个话题的消息类型一起显示。
daniel@daniel-Lenovo-Legion-Y7000:~$ rostopic list -v
Published topics:
* /turtle1/color_sensor [turtlesim/Color] 1 publisher
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
* /rosout [rosgraph_msgs/Log] 2 publishers
* /rosout_agg [rosgraph_msgs/Log] 1 publisher
* /turtle1/pose [turtlesim/Pose] 1 publisher
Subscribed topics:
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber
* /rosout [rosgraph_msgs/Log] 1 subscriber
rostopic echo [话题名称]:实时显示指定话题的消息内容
以下示例实时显示组成/turtle1/pose话题的x、y、theta、linear_velocity和angular_velocity的数据。
$ rostopic echo /turtle1/pose
x: 5.35244464874
y: 5.544444561
theta: 0.0
linear
_velocity: 0.0
angular_velocity: 0.0
~ 省略 ~
rostopic find [类型名称]:显示使用指定类型的消息的话题
daniel@daniel-Lenovo-Legion-Y7000:~$ rostopic find turtlesim/Pose
/turtle1/pose
rostopic type [话题名称]:显示指定话题的消息类型
daniel@daniel-Lenovo-Legion-Y7000:~$ rostopic type /turtle1/pose
turtlesim/Pose
rostopic bw [话题名称]:显示指定话题的消息数据带宽(bandwidth)
在以下示例中,用于/turtle1/pose话题的数据带宽平均为每秒1.25KB。
daniel@daniel-Lenovo-Legion-Y7000:~$ rostopic bw /turtle1/pose
subscribed to [/turtle1/pose]
average: 1.25KB/s
mean: 0.02KB min: 0.02KB max: 0.02KB window: 61
average: 1.26KB/s
mean: 0.02KB min: 0.02KB max: 0.02KB window: 100
rostopic hz [话题名称]:显示指定话题的消息数据发布周期
在以下示例中,用户可以检查/turtle1/pose数据的发布周期。从结果可以看出,该消息以大约62.5Hz(0.016秒= 16毫秒)的频率被发布。
daniel@daniel-Lenovo-Legion-Y7000:~$ rostopic hz /turtle1/pose
subscribed to [/turtle1/pose]
average rate: 62.462
min: 0.015s max: 0.016s std dev: 0.00038s window: 62
average rate: 62.482
min: 0.015s max: 0.016s std dev: 0.00038s window: 124
rostopic info [话题名称]:显示指定话题的信息
在以下示例中,用户可以看到/turtle1/pose话题使用turtlesim/Pose消息类型,发布到/turtlesim节点,并且没有实际订阅的话题。
daniel@daniel-Lenovo-Legion-Y7000:~$ rostopic info /turtle1/pose
Type: turtlesim/Pose
Publishers:
* /turtlesim (http://daniel-Lenovo-Legion-Y7000:39999/)
Subscribers: None
rostopic pub [话题名称] [消息类型] [参数]:使用指定的话题名称发布消息
以下是使用/turtle1/cmd_vel话题名称发布类型为geometry_msgs/Twist的消息的示例。
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’
publishing and latching message for 3.0 seconds
每个选项的描述如下。
■ -1只发布一次消息(实际上只运行一次,但会像以前的结果一样运行3秒)。
■ /turtle1/cmd_vel 指定的话题名称
■ geometry_msgs/Twist 要发布的消息类型名称
■ – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’ 在x轴坐标上以每秒2.0 m的速度移动,以z轴为中心,每秒旋转1.8rad
rosservice list:显示活动的服务信息
显示活动中的服务的信息。会显示在同一网络中使用的所有服务。
daniel@daniel-Lenovo-Legion-Y7000:~$ rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
rosservice info [服务名称]:显示指定服务的信息
以下是使用rosservice的info选项查看/turtle1/set_pen服务的节点名称、URI、类型和参数的示例。
daniel@daniel-Lenovo-Legion-Y7000:~$ rosservice info /turtle1/set_pen
Node: /turtlesim
URI: rosrpc://daniel-Lenovo-Legion-Y7000:59293
Type: turtlesim/SetPen
Args: r g b width off
rosservice type [服务名称]:显示服务类型
在以下示例中,可以看到/turtle1/set_pen服务是turtlesim/SetPen类型。
daniel@daniel-Lenovo-Legion-Y7000:~$ rosservice type /turtle1/set_pen
turtlesim/SetPen
rosservice find [服务类型]:查找指定服务类型的服务
以下示例搜索turtlesim/SetPen类型的服务。因此,可以看到搜索出/turtle1/set_pen。
daniel@daniel-Lenovo-Legion-Y7000:~$ rosservice find turtlesim/SetPen
/turtle1/set_pen
rosservice call [服务名称] [参数]:用输入的参数服务请求
以下示例是请求/turtle1/set_pen服务的命令。所使用的“255 0 0 5 0”是对应于用于/turtle1/set_pen服务的参数(r,g,b,width,off)的值。红色的r的最大值是255,因为g和b都是0,所以笔的颜色是红色的。width设置为5,off为0(假)。rosservice call是一个非常有用的命令,通常用于测试服务。
daniel@daniel-Lenovo-Legion-Y7000:~$ rosservice call /turtle1/set_pen "{r: 255, g: 0, b: 0, width: 5, 'off': 0}"
通过使用前面的命令,发送了服务请求,更改了turtlesim中使用的笔的属性,并且从turtle_teleop_key中下达了下移命令。作为结果,可以从下面图中看到原来是白色的笔色显示为红色。
在ROS中用bag格式保存各种消息,并在需要时将其回放,以便我们可以重现以前的情况。rosbag是一个实现生成、播放和压缩等功能的程序,它具有以下几种功能。