ROS学习--第2篇:ROS小海龟历程初探

本文详细介绍ROS的基本操作,包括启动ROS核心、小海龟节点及键盘控制节点,使用rqt工具进行可视化,通过rosnode和rostopic命令管理节点与主题,以及如何利用rosservice调用服务,帮助初学者快速掌握ROS的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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有了一个初步的了解。

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值