【ROS理论与实践】第2讲:认识ROS

本文介绍了ROS(Robot Operating System)的基本概念、核心组件和通信机制,并通过小海龟仿真实例详细讲解了ROS环境的搭建、节点操作、话题通信和服务调用。主要内容包括roscore、rosrun、rqt_graph、rosnode、rostopic和rosservice的使用,以及rqt_plot工具的可视化功能。通过实践,读者将能更好地理解和应用ROS进行机器人程序开发。

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

在这里插入图片描述

在这里插入图片描述

一、ROS的定义与组成

在这里插入图片描述

ROS是一种开源的源操作系统,是一种机器人框架,提供了一系列的通信机制。

源操作系统:提供类似操作系统中的服务,如提供硬件抽象、提供底层控制与驱动、提供一系列通信机制。

在这里插入图片描述

在这里插入图片描述

整个图称为计算图(compute-graph),其中的椭圆称为节点,外围的矩形框称为命名空间。节点和节点之间是松耦合的,不同的节点可以分布在不同的平台上!

在这里插入图片描述

Rviz:三维可视化工具;Gazebo:三维物理仿真平台

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、ROS核心概念和通信机制

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、第一个ROS例程——小海龟仿真分析

在这里插入图片描述

在这里插入图片描述

常用指令后面如果不记得可以跟什么参数,可以直接只输入命令,会有帮助信息!

在这里插入图片描述

roscore 用来启动 ros 核心 ros master,相当于公司的老板。rosrun 是ros中运行一个节点最基础的命令,后面跟两个参数:节点所在功能包的名字、节点可执行文件的名字。

在这里插入图片描述

要想运行上述的计算图,不能关闭已经运行的小海龟程序,重新打开一个新的终端,输入rqt_graph,默认运行结果如下图所示:

在这里插入图片描述
要想运行和PPT中一样的模样,需要设置面板一些参数,如下图:

在这里插入图片描述
先勾选Debug选项,效果如下图:
在这里插入图片描述
两个椭圆表示系统中有两个节点,分别对应小海龟运行时的第二和第三条命令!cmd_vel:是小海龟的速度控制指令。/turtle1/cmd_vel表示话题名!

从上面可以看到,勾选了Debug之后会有更多的节点出来,其中就包括rosoutrosout它是ros master 启动之后默认启动的一个节点。它会去读取并保存ROS环境中所有节点的日志信息,并通过同名的/rosout话题发布,这样上位机就可以监控所有节点的日志,实现日志筛选,所以rosout这个节点无需过多关注,主要关注其他节点及整体框架。当然还有一个rqt_gui_py_node_89362节点也多出来了,它表示的是rqt_graph这个计算图,这个节点也无需过多关注!

通过rqt_graph命令可以很快的梳理清楚ROS环境中所有节点的数据通信方向和系统架构,可以从上帝视角看到系统的全貌,方便用户去理解系统!

在这里插入图片描述

rosnode 后面记不清可以跟什么参数,可以直接回车,会显示出来可以跟的参数,如下图所示:
在这里插入图片描述
rosnode list 可以查看到ROS中所有的节点,如下图:
在这里插入图片描述
如果想知道某个节点具体是干什么事,订阅和发布哪些数据,提供哪些服务等信息,可以使用命令rosnode info + /节点名
在这里插入图片描述

rostopic指令是跟话题相关的指令。
我们刚刚通过rosnode看到了turtlesim节点的一些信息,其中可以看到它一直在发布一个turtle1/pose的位置话题信息,我们可以通过rostopic来查看位置信息具体是什么样的,具体命令为:rostopic echo /turtle1/pose(运动海龟数据也会实时变化,退出ctrl+c
在这里插入图片描述
rostopic不仅可以收数据,还可以发送数据,命令:rostopic pub /turtle1/cmd_vel,注意命令还没有输全,接着是数据结构,但是具体的数据结构我们不需要一个个手动输入,直接Tab,会自动补全话题数据结构geometry_msgs/Twist。此时还未输入完毕,需要输入的线速度角速度,还是使用Tab自动补全,会出现如下图所示:
在这里插入图片描述
通过方向键的左右键来修改具体的值,这里只涉及到线速度的x方向,角速度的z方向。这里设置海龟向前移动0.5m,设置完毕后即可回车运行,命令如下图所示:
在这里插入图片描述
可以发现海龟运行了一次就停止了。如何不断运行呢,加入频率参数-r 数值,命令如下图:
在这里插入图片描述
上图是以每秒执行10次的频率的运行。
上面做的相当于是直线运动,如何做圆周运动呢?命令如下图:
在这里插入图片描述
在这里插入图片描述

rosservice是跟服务相关的。
如果想再来一个海龟,可以发送请求服务spawn,命令:rosservice call /spawn然后Tab,输入具体的数据内容。具体数据内容:包括新产生海龟的x和y位置、角度theta和新产生海龟的name。这里取名name为turtle2,然后回车,命令执行如下:
在这里插入图片描述
在这里插入图片描述
注意我们回车之后,会在终端回显一个name,这个是服务器端返回的数据(response),表示我们的请求(request)是成功的!
产生成功之后,我们可以看一下当前所有的话题列表!
在这里插入图片描述
可以发现有了海龟2的话题,我们同样可以像操作海龟1一样进行订阅和发布话题!如我们让海龟2移动起来,操作命令如下:
在这里插入图片描述
在这里插入图片描述

rqt_plot:绘图工具,可以把ROS中话题的数据变成曲线绘制出来(可以发现可视化工具都是以rqt开头的!)
默认打开后,如下图所示:
在这里插入图片描述
我们删除左上角已有的/,重新输入/,会出现所有话题的下拉列表,我们选择/turtle2/pose,然后回车,效果如下图:
在这里插入图片描述
上图运动太快,不利于观察,我们修改x轴的单位,如下图:
在这里插入图片描述
在这里插入图片描述

rqt_plot可以大大方便我们后面的开发调试!

在这里插入图片描述

在这里插入图片描述

本讲作业毫无难度,这里不再赘述!

在这里插入图片描述
在这里插入图片描述

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值