ROS学习——节点、主题、服务的了解与体验
一、ROS
1、启动ROS
roscore
2、启动小海龟节点
重新打开一个终端,输入
rosrun turtlesim turtlesim_node
rosrun:启动一个新节点;
turtlesim:功能包
turtlesim_node:功能包下的一个节点
3、启动键盘控制节点
重新打开一个终端,输入
rosrun turtlesim turtle_teleop_key
4、可视化工具rqt
(1) rqt_graph:可以看到当前正在运行的节点关系图
rqt_graph
(2)rqt_plot:可以用来查看数据输出波形,在 topic 栏目中输入 / ,系统会自动弹出各种信息我们选择小海的 /turtle1/pose/x, 点击+, /turtle1/pose/y,点击+
rqt_plot
二、节点
1、什么是节点
节点就相当于一个独立的模块,模块(节点)之间可以相互联系。
2、使用ROS节点(rosnode <…>)
-
rosnode分别有以下几个用法:
rosnode list:获取正在运行的节点
rosnode info /turtlesim 输出此节点信息
rosnode kill /turtlesim 杀死/结束此节点(可在其终端按Ctrl+C代替) -
(1)rosnode list:获取正在运行的节点
如下图所示,和上面一样,一共3个节点:
/rosout:这个节点始终是有的,随着roscore的运行而运行
/teleop_turtle:键盘控制节点
/turtlesim:小海龟节点 -
(2)rosnode info node1:查看节点“node1”的信息
如输入:扫描二维码关注公众号,回复: 12852966 查看本文章rosnode info /turtlesim
如下图所示,可以看到这个节点的订阅、话题、服务等各种信息。
三、主题
1、什么是主题
- 主题相当于中介,比如你要找工作去中介,你把你要找的工作的类型告诉中介,中介另一边的工厂也必须有你要的类型的工作岗位,你们才能通过中介进行交流
- 这里的人和工厂都是节点
- 节点间的消息类型必须一样才能进行交流
2、使用主题(rostopic)
-
常用rostopic有以下几个用法 (TOPIC代表要操作的主题)
rostopic list 查看主题清单
rostopic echo TOPIC 将主题发布的消息输出到屏幕
rostopic type TOPIC 输出主题类型
rostopic pub TOPIC 将数据发布到主题 -
(1)查看主题清单,终端输入:
rostopic list
可以看到正在运行的 /turtlesim所有的主题如下图:
-
(2)查看输出主题类型,终端输入:
rostopic type /turtle1/cmd_vel
会显示消息类型为:geometry_msgs/Twist
-
(3)使用pub发布主题,输入如下命令:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 "linear: x: 2.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 1.0"
#加上-r 1:使终端一直运行,小乌龟画圆圈
-
(4)现在我们用 echo 来查看节点通过话题发出的消息,终端输入:
rostopic echo /turtle1/cmd_vel
就可以看到如下输出,包含线速度linear和角速度anular:
四、服务
1、什么是服务
服务就相当于10086,当你打电话时,电话中就会播放10086的几个服务,然后你按1、2、3…来选择不同服务,然后你就可以体验你所选择的服务
2、如何使用服务(rosservice)
rosservice
-
(1)查看正在运行的 /turtlesim 节点服务清单,终端输入:
rosservice list
显示如下各种服务:
-
(2)查看服务
如要查看/ clear 服务,终端输入:
rosservice info /clear
-
(3)调用服务
如要调用/clear服务,终端输入:rosservice call /clear
可发现小乌龟的轨迹已经清除