ros基础总结

ros基础总结

  • roscore
  • rosrun
  • roslaunch
  • rosbag
  • ros shell命令
  • ros执行命令
  • ros信息命令
    • 准备工作
    • rosnode:Ros节点
    • rostopic:Ros话题
    • rosservice :Ros服务
    • rosparam:Ros参数
    • rosmsg:Ros消息信息
    • rossrv:Ros服务信息
    • rosbag:Ros日志信息
  • ROS catkin命令
  • ROS功能包命令

roscore

roscore是运行ROS主节点的命令。也可以在另一台位于同一个网络内的计算机上运行它。但是,除了支持多roscore的某些特殊情况,roscore在一个网络中只能运行一个。运行ROS时,将使用您在ROS_MASTER_URI变量中列出的URI地址和端口。如果用户没有设置,会使用当前本地IP作为URI地址并使用端口11311。

rosrun

rosrun是ROS的基本运行命令。它用于在功能包中运行一个节点。节点使用的URI地址将存储在当前运行节点的计算机上的ROS_HOSTNAME环境变量作为URI地址,端口被设置为任意的固有值

roslaunch

如果rosrun是执行一个节点的命令,那么roslaunch是运行多个节点的概念。该命令允许运行多个确定的节点。其他功能还包括一些专为执行具有诸多选项的节点的ROS命令,比如包括更改功能包参数或节点名称、配置节点命名空间、设置ROS_ROOT和ROS_PACKAGE_PATH以及更改环境变量等。

rosbag

用户可以保存ROS中发送和接收的消息的数据,这时用于保存的文件格式称为bag,是以*.bag作为扩展名。在ROS中,这个功能包可以用来存储信息并在需要时可以回放以前的情况。例如,当使用传感器执行机器人实验时,使用bag将传感器值以消息形式保存。有了这些保存的信息,即使不重复执行之前的实验,也能通过回放保存的bag文件来反复利用当时的传感器值。特别的,如果利用rosbag的记录和回放功能,在开发那些需要反复修改程序的算法的时候会非常有用。

ros shell命令

roscd [功能包名称]
移动Ros目录,移动到你指定的功能包的目录
例如:roscd turtlesim

rosls [功能包名称]
查看指定ros功能包的文件列表
例如:rosls turtlesim

rosed [功能包名称] [文件名称]
用于快速更改一些相对简单的内容(不常用)
例如:rosed turtlesim package.xml

ros执行命令

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信息命令

准备工作

在运行下列ros命令之前,先关闭所有节点。通过在不同的终端窗口中运行以下命令来运行turtlesim_node和turtle_teleop_key

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

rosnode:Ros节点

ros基础总结_第1张图片

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:Ros话题

ros基础总结_第2张图片

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 :Ros服务

ros基础总结_第3张图片

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基础总结_第4张图片

rosparam:Ros参数

ros基础总结_第5张图片

rosmsg:Ros消息信息

ros基础总结_第6张图片

rossrv:Ros服务信息

ros基础总结_第7张图片

rosbag:Ros日志信息

在ROS中用bag格式保存各种消息,并在需要时将其回放,以便我们可以重现以前的情况。rosbag是一个实现生成、播放和压缩等功能的程序,它具有以下几种功能。
ros基础总结_第8张图片

ROS catkin命令

ros基础总结_第9张图片

ROS功能包命令

ros基础总结_第10张图片
后续需要还会进行补充

你可能感兴趣的:(ros)