结合turtlesim模拟器学习ROS的节点、话题、服务和参数

1、图概念概述

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。

Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。

Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。

rosout: ROS中相当于stdout/stderr。

roscore: 主机+ rosout + 参数服务器

2、roscore 是在运行所有ROS程序前首先要运行的命令:

$ roscore
将在终端输出以下信息:
结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第1张图片

3、rosrun 允许你使用包名直接运行一个包内的节点,打开一个新的终端【快捷键为ctrl+alt+t】,输入命令:

$ rosrun turtlesim turtlesim_node //命令格式为:rosrun [package_name] [node_name]

或者:

$ rosrun turtlesim turtlesim_node __name:=test
将节点名称修改为test,然后可以使用以下命令查看当前所有节点:

$ rosnode list
结果如下:

在这里插入图片描述

需要了解节点的详细信息时,可以使用rosnode info 命令返回的是关于一个特定节点的信息。

4、打开一个新的终端,运行

$ rosrun turtlesim turtle_teleop_key

可以使用键盘上的方向键来控制turtle运动,如果不能控制,确保按键输入能够被捕获被turtle_teleop_key所在的终端窗口捕获。

5、rostopic list能够列出所有当前订阅和发布的话题。rostopic type 命令用来查看所发布话题的消息类型,话题的类型是由发布在它上面的消息类型决定的。rosmsg show命令用来查看消息的详细情况。

$ rostopic list
运行结果为
结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第2张图片

$ rostopic type /turtle1/cmd_vel
运行结果为

在这里插入图片描述

$ rosmsg show geometry_msgs/Twist
运行结果为

结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第3张图片

6、rostopic pub可以把数据发布到当前某个正在广播的话题上。

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’
以上命令会发送一条消息给turtlesim,控制turtle1以2.0大小的线速度和1.8大小的角速度开始移动。

结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第4张图片

由于turtle1需要一个稳定的频率为1Hz的命令流来保持移动状态,可以使用rostopic pub -r命令来发布一个稳定的命令流:

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’
这条命令以1Hz的频率发布速度命令到速度话题/turtle1/cmd_vel 上。

7、打开新的终端,运行

$ rosrun rqt_graph rqt_graph

可以看到下图所示的图形,表示了当前节点和话题的连接情况:

结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第5张图片

8、可以结合rostopic type和rosmsg show命令来获取关于某个话题的更深层次的信息:

$ rostopic type /turtle1/cmd_vel | rosmsg show

9、rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形,在一个新终端中运行rqt_plot命令:

$ rosrun rqt_plot rqt_plot
初次运行这个命令可能会出现报错。如果没有问题则会弹出一个新窗口,在窗口左上角的一个文本框里面可以添加需要绘制的话题,按下减号按钮会显示一组菜单让你隐藏图形中指定的话题。

结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第6张图片

10、服务(services)是节点之间通讯的另一种方式。rosservice可以很轻松的使用 ROS 客户端/服务器框架提供的服务。
结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第7张图片
rosservice list 命令显示turtlesim节点提供的所有服务。rosservice type命令可以更进一步查看服务的详细信息。rosservice call命令调用服务,命令格式为:rosservice call [service] [args],举例如下:

rosservice call spawn 2 2 0.2

使用命令结合rosservice type [service] | rossrv show可以查看带参数服务的详细信息。

11、rosparam命令能够存储并操作ROS 参数服务器上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典。

结合turtlesim模拟器学习ROS的节点、话题、服务和参数_第8张图片

你可能感兴趣的:(ROS,自动驾驶,python,linux)