1、图概念概述
Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
rosout: ROS中相当于stdout/stderr。
roscore: 主机+ rosout + 参数服务器
2、roscore 是在运行所有ROS程序前首先要运行的命令:
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 type /turtle1/cmd_vel
运行结果为
$ rosmsg show geometry_msgs/Twist
运行结果为
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大小的角速度开始移动。
由于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
可以看到下图所示的图形,表示了当前节点和话题的连接情况:
8、可以结合rostopic type和rosmsg show命令来获取关于某个话题的更深层次的信息:
$ rostopic type /turtle1/cmd_vel | rosmsg show
9、rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形,在一个新终端中运行rqt_plot命令:
$ rosrun rqt_plot rqt_plot
初次运行这个命令可能会出现报错。如果没有问题则会弹出一个新窗口,在窗口左上角的一个文本框里面可以添加需要绘制的话题,按下减号按钮会显示一组菜单让你隐藏图形中指定的话题。
10、服务(services)是节点之间通讯的另一种方式。rosservice可以很轻松的使用 ROS 客户端/服务器框架提供的服务。
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}是字典。