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
rqt_plot
可以用来查看数据输出波形,在 topic 栏目中输入 / ,系统会自动弹出各种信息
我们选择小海的 /turtle1/pose/x, 点击+, /turtle1/pose/y,点击+,再用键盘控制小海龟移动,就可以看出移动数据曲线,如下图
5.使用ROS节点(rosnode <...>)
rosnode分别有以下几个用法:
rosnode list:获取正在运行的节点
rosnode info /turtlesim 输出此节点信息
rosnode ping /turtlesim
rosnode machine /turtlesim
rosnode kill /turtlesim 杀死/结束此节点
rosnode cleanup /turtlesim
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
rosnode list:获取正在运行的节点
如下图所示,和上面一样,一共3个节点:
/rosout:这个节点始终是有的,随着roscore的运行而运行
/teleop_turtle:键盘控制节点
/turtlesim:小海龟节点
rosnode info node1:查看节点“node1”的信息
如输入:
rosnode info /turtlesim
如下图所示,可以看到这个节点的订阅、话题、服务等各种信息。
6.使用主题与节点交互(rostopic)
常用rostopic有以下几个用法
rostopic list 查看主题清单
rostopic echo TOPIC 将主题发布的消息输出到屏幕
rostopic type TOPIC 输出主题类型
rostopic pub TOPIC 将数据发布到主题
(1)查看主题清单,终端输入:
rostopic list
可以看到正在运行的 /turtlesim所有的主题如下图:
(2)现在查看上面的两个节点,分别运行:
rosnode info /teleop_turtle
rosnode info /turtlesim
键盘节点的发布者:Publications 中有一个主题:/turtle1/cmd_vel [geometry_msgs/Twist]
小海龟节点的订阅者:Subscriptions 中有一个主题:/turtle1/cmd_vel [geometry_msgs/Twist]
这说明第一个节点发布了 /turtle1/cmd_vel [geometry_msgs/Twist] 这个主题,第二个节点订阅了 /turtle1/cmd_vel [geometry_msgs/Twist] 这个主题。
(3)现在我们用 echo 来查看节点通过话题发出的消息,终端输入:
rostopic echo /turtle1/cmd_vel
然后我们再用键盘控制小海龟移动,就可以看到如下输出,包含线速度linear和角速度anular:
(4)使用pub发布主题
为了发布话题,我们要知道我们需要发送什么类型的消息
终端输入:
rostopic type /turtle1/cmd_vel
会显示消息类型为:geometry_msgs/Twist
现在我们重新打开一个小乌龟节点,并且不开启键盘控制哪个节点,然后用pub直接发布主题,输入如下命令:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 5.0
y: 5.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"
这时可以看到小海龟就可以按照我们发布的消息来运动了,如下图
当然,如果想让小海龟不停的运动,可用如下命令:
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"
可看到小海龟一直在转圈
6.如何使用服务(rosservice)
(1)查看正在运行的 /turtlesim 节点服务清单,终端输入:
rosservice list
显示如下各种服务:
(2)查看服务
如要查看/ spawn 服务,终端输入:
rosservice info /spawn
Node: /turtlesim 指这个服务属于哪个节点的
URI: rosrpc://Linux:35059
Type: turtlesim/Spawn 服务类型
Args: x y theta name 服务参数
(3)调用服务
如要调用/ spawn 服务,终端输入:
rosservice call /spawn "x: 2.0
y: 2.0
theta: 0.0
name: 'haigui2'"
这就在 x=2, y=2, 角度=0 的地方,创建了一个名字是 haigui2 的小海龟如下图:
好了,有了上面的一些知识,相信我们对ROS有了一个初步的了解。