ROS2入门21讲
文章平均质量分 88
从零入门ROS2,带你认识一个全新的机器人操作系统
小白学ROS机器人
久久不能平静
展开
-
ROS2入门21讲__第21讲__ROS2应用与进阶攻略
比如移动机器人基本都会具备的自主导航功能,ROS2提供了完整的自主导航系统框架和各种实现好的算法,即便我们不开发任何代码,也可以在自己的机器人上,使用这套系统,快速实现自主导航的基本功能。至于内功的修炼,就得学习机器人学相关的理论知识,比如《机器人学导论》,被称为机器人工程师人手必备的一本理论书籍,推荐大家仔细阅读。在ROS社区中,有一个著名的自动驾驶框架——Autoware,包含了自动驾驶中的感知、规划、控制等模块和实现,功能非常丰富,很多商业化的自动驾驶系统,也参考了这个框架。原创 2024-05-27 10:00:00 · 749 阅读 · 0 评论 -
ROS2入门21讲__第20讲__RQT:模块化可视化工具
ROS中的Rviz功能已经很强大了,不过有些场景下,我们可能更需要一些简单的模块化的可视化工具,比如只显示一个摄像头的图像,使用Rviz的话,难免会觉得操作有点麻烦。此时,我们就会用到ROS提供的另外一种模块化可视化工具——rqt。rqt介绍正如RQT的命名,它和Rviz一样,也是基于QT可视化工具开发而来,在使用前,我们需要通过这样一句指令进行安装,然后就可以通过rqt这个命令启动使用了。$ rqt日志显示图像显示发布话题数据/调用服务请求绘制数据曲线数据包管理节点可视化。原创 2024-05-27 10:00:00 · 576 阅读 · 0 评论 -
ROS2入门21讲__第19讲__Rviz:三维可视化显示平台
大家有没有畅想过一个问题,机器人眼中的世界是什么样的呢?如何能够看到机器人摄像头拍摄到的图像?这就涉及到可视化显示的范畴了,本讲我们介绍一位ROS中的重量级嘉宾——Rviz,一款三维可视化显示的神器。Rviz三维可视化平台机器人开发过程中,各种各样的功能,如果我们只是从数据层面去做分析,很难快速理解数据的效果,比如给你一堆0到255的数字,问这幅图像描述的内容是什么?你肯定一脸懵。但如果我们把这些数字通过颜色渲染出来,岂不就一目了然么?原创 2024-05-26 10:00:00 · 3143 阅读 · 0 评论 -
ROS2入门21讲__第18讲__Gazebo:三维物理仿真平台
ROS机器人开发,机器人当然是主角,如果我们手边没有实物机器人,怎么办呢?没问题,机器人三维物理仿真平台Gazebo,了解一下。Gazebo仿真平台介绍Gazebo是ROS系统中最为常用的三维物理仿真平台,支持动力学引擎,可以实现高质量的图形渲染,不仅可以模拟机器人及周边环境,还可以加入摩擦力、弹性系数等物理属性。原创 2024-05-26 10:00:00 · 1262 阅读 · 0 评论 -
ROS2入门21讲__第12讲__参数:机器人系统的全局字典
话题、服务、动作,不知道这三种通信机制大家是否已经了解清楚,本节我们再来介绍一种ROS系统中常用的数据传输方式——参数。类似C++编程中的全局变量,可以便于在多个程序中共享某些数据,参数是ROS机器人系统中的全局字典,可以运行多个节点中共享数据。通信模型比如在机器视觉识别的时候,有很多参数都会影响视觉识别的效果。在NodeA相机驱动节点中,就需要考虑很多问题,相机连接到哪个usb端口,使用的图像分辨率是多少,曝光度和编码格式分别是什么,这些都可以通过参数设置,我们可以通过配置文件或者程序进行设置。原创 2024-05-25 10:00:00 · 946 阅读 · 0 评论 -
ROS2入门21讲__第11讲__动作:完整行为的流程管理
机器人是一个复杂的智能系统,并不仅仅是键盘遥控运动、识别某个目标这么简单,我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。在这些应用功能的实现中,另外一种ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以很好理解这个概念的含义,这种通信机制的目的就是便于对机器人某一完整行为的流程进行管理。通信模型。原创 2024-05-25 10:00:00 · 962 阅读 · 0 评论 -
ROS2入门21讲__第10讲__通信接口:数据传递的标准结构
在ROS系统中,无论话题还是服务,或者我们后续将要学习的动作,都会用到一个重要的概念——通信接口。通信并不是一个人自言自语,而是两个甚至更多个人,你来我往的交流,交流的内容是什么呢?为了让大家都好理解,我们可以给传递的数据定义一个标准的结构,这就是通信接口。接口的定义接口的概念在各个领域随处可见,无论是硬件结构还是软件开发,都有广泛的应用。比如生活中最为常见的插头和插座,两者必须匹配才能使用,电脑和手机上的USB接口也是,什么Micro-USB、TypeC等等,都是关于接口的具体定义。原创 2024-05-24 10:00:00 · 1865 阅读 · 0 评论 -
ROS2入门21讲__第09讲__服务:节点间的你问我答
话题通信可以实现多个ROS节点之间数据的单向传输,使用这种异步通信机制,发布者无法准确知道订阅者是否收到消息,本讲我们将一起学习ROS另外一种常用的通信方法——服务,可以实现类似你问我答的同步通信效果。通信模型在之前的课程中,我们通过一个节点驱动相机,发布图像话题,另外一个节点订阅图像话题,并实现对其中红色物体的识别,此时我们可以按照图像识别的频率,周期得到物体的位置。这个位置信息可以继续发给机器人的上层应用使用,比如可以跟随目标运动,或者运动到目标位置附近。原创 2024-05-24 10:00:00 · 1550 阅读 · 0 评论 -
ROS2入门21讲__第08讲__话题:节点间传递数据的桥梁
节点实现了机器人各种各样的功能,但这些功能并不是独立的,之间会有千丝万缕的联系,其中最重要的一种联系方式就是话题,它是节点间传递数据的桥梁。通信模型以两个机器人节点为例。A节点的功能是驱动相机这个硬件设备,获取得到相机拍摄的图像信息,B节点的功能是视频监控,将相机拍摄到的图像实时显示给用户查看。大家可以想一下,这两个节点是不是必然存在某种关系?没错,节点A要将获取的图像数据传输给节点B,有了数据,节点B才能做这样可视化的渲染。此时从节点A到节点B传递图像数据的方式,在ROS中,我们就称之为话题。原创 2024-05-23 08:55:39 · 897 阅读 · 0 评论 -
ROS2入门21讲__第07讲__节点:机器人的工作细胞
机器人是各种功能的综合体,每一项功能就像机器人的一个工作细胞,众多细胞通过一些机制连接到一起,成为了一个机器人整体。在ROS中,我们给这些 “细胞”取了一个名字,那就是节点。通信模型完整的机器人系统可能并不是一个物理上的整体,比如这样一个的机器人:在机器人身体里搭载了一台计算机A,它可以通过机器人的眼睛——摄像头,获取外界环境的信息,也可以控制机器人的腿——轮子,让机器人移动到想要去的地方。原创 2024-05-23 08:29:13 · 1200 阅读 · 0 评论 -
ROS2入门21讲__第13讲__分布式通信:多计算平台的任务分配
智能机器人的功能繁多,全都放在一个计算机里,经常会遇到计算能力不够、处理出现卡顿等情况,如果可以将这些任务拆解,分配到多个计算机中运行岂不是可以减轻压力?这就是分布式系统,可以实现多计算平台上的任务分配。分布式通信什么叫分布式?之前我们也讲过,在ROS系统中,机器人功能是由各种节点组成的,这些节点可能位于不同的计算机中,这种结构可以将原本资源消耗较多的任务,分配到不同的平台上,减轻计算压力,这就是分布式通信框架的典型应用之一。比如这款机器人系统中,有两个计算平台。原创 2024-05-22 12:53:59 · 829 阅读 · 0 评论 -
ROS2入门21讲__第17讲__URDF:ROS机器人建模方法
在这个机器人模型中,蓝色部分是通过来描述的,在实际控制过程中,这样复杂的外观在计算碰撞检测时,要求的算力较高,为了简化计算,我们将碰撞检测用的模型简化为了绿色框的圆柱体,也就是里边描述的形状。比如这个机械臂,大家可以看下自己的手臂,我们的手臂是由大臂和小臂组成,他们独自是无法运动的,必须通过一个手肘关节连接之后,才能通过肌肉驱动,产生相对运动。,不仅可以清晰描述机器人自身的模型,还可以描述机器人的外部环境,比如这里的桌子,也可以算作一个模型。原创 2024-05-20 21:45:35 · 1522 阅读 · 0 评论 -
ROS2入门21讲__第16讲__TF:机器人坐标系管理神器
在两只海龟的仿真器中,我们可以定义三个坐标系,比如仿真器的全局参考系叫做world,turtle1和turtle2坐标系在两只海龟的中心点,这样,turtle1和world坐标系的相对位置,就可以表示海龟1的位置,海龟2也同理。坐标系是我们非常熟悉的一个概念,也是机器人学中的重要基础,在一个完整的机器人系统中,会存在很多坐标系,这些坐标系之间的位置关系该如何管理?两个部分,通过一个四乘四的矩阵进行描述,在空间中画出坐标系,那两者之间的变换关系,其实就是向量的数学描述。原创 2024-05-22 06:24:59 · 1053 阅读 · 0 评论 -
ROS2入门21讲__第15讲__Launch:多节点启动与配置脚本
到目前为止,每当我们运行一个ROS节点,都需要打开一个新的终端运行一个命令。机器人系统中节点很多,每次都这样启动好麻烦呀。有没有一种方式可以一次性启动所有节点呢?答案当然是肯定的,那就是,它是ROS系统中多节点启动与配置的一种脚本。这是一个完整的Launch文件,乍看上去,好像Python代码呀,没错,。Launch的核心目的是,我们在命令行中输入的各种参数,在Launch文件中,通过类似这样的很多代码模版,也可以进行配置,甚至还可以使用Python原有的编程功能,大大丰富了启动过程中的多样化配置。原创 2024-05-21 15:08:24 · 1100 阅读 · 0 评论 -
ROS2入门21讲__第14讲__DDS:机器人的神经网络
但它的先进之处在于,通信中包含了很多并行的通路,每个节点可以只关心自己感兴趣的消息,忽略不感兴趣的消息,有点像是一个旋转火锅,各种好吃的都在这个DataBus传送,我们只需要拿自己想吃的就行,其他的和我们没有关系。具体而言,他们肯定都符合基本标准,但还是会有性能上的差别,ROS2的原则就是尽量兼容,让用户根据使用场景选择,比如个人开发,我们选择一个开源版本的DDS就行,如果是工业应用,那可能得选择一个商业授权的版本了。,也就是一个统一的标准,不管我们用那个DDS,保证上层编程使用的函数接口都是一样的。原创 2024-05-22 06:53:54 · 1179 阅读 · 0 评论 -
ROS2入门21讲__第06讲__工作空间与功能包2
每个机器人可能有很多功能,比如移动控制、视觉感知、自主导航等,如果我们把这些功能的源码都放到一起当然也是可以的,但是当我们想把其中某些功能分享给别人时,就会发现代码都混合到了一起,很难拆分出来。功能包就是这个原理,我们把不同功能的代码划分到不同的功能包中,尽量降低他们之间的耦合关系,当需要在ROS社区中分享给别人的时候,只需要说明这个功能包该如何使用,别人很快就可以用起来了。package.xml文件的主要内容和C++版本功能包一样,包含功能包的版权描述,和各种依赖的声明。原创 2024-05-17 06:17:57 · 395 阅读 · 0 评论 -
ROS2入门21讲__第06讲__工作空间与功能包1
大家在之前的学习和开发中,应该有接触过某些集成开发环境,比如Visual Studio、Eclipse、Qt Creator等,当我们想要编写程序之前,都会在这些开发环境的工具栏中,点击一个“创建新工程”的选项,此时就产生一个文件夹,后续所有工作产生的文件,都会放置在这个文件夹中,这个文件夹以及里边的内容,就叫做是。总体来讲,这四个空间的文件夹,我们绝大部分操作都是在src中进行的,编译成功后,就会执行install里边的结果,build和log两个文件夹用的很少。原创 2024-05-16 19:21:46 · 449 阅读 · 0 评论 -
ROS2入门21讲__第05讲__ROS2开发环境配置
ROS机器人开发肯定离不开代码编写,我们课程中会给大家提供大量示例源码,这些代码如何查看、编写、编译呢?我们需要先做一些准备,完成开发环境的配置,给大家推荐两款重要的开发工具——vscode和git。Gitgit是一个版本管理软件,也是因Linux而生。原创 2024-05-15 10:00:00 · 911 阅读 · 0 评论 -
ROS2入门21讲__第04讲__ROS2命令行操作
在之前运行小海龟案例的时候,我们接触到了ROS2中一种重要的调试工具——命令行,大家如果第一次使用,可能会有点不太适应,本节将带领大家进一步使用ROS2中的更多命令,随着学习的深入,大家一定可以感受到命令行的魅力。Linux中的命令行类似于科幻电影中的片段,命令行操作异常炫酷,但是其上手并不容易。为什么这样一种操作看似并不便捷的方式会被一直保留至今呢?无论对于Linux还是ROS来讲,都是必不可少的,大家先来想象一种场景。原创 2024-05-14 09:37:43 · 892 阅读 · 1 评论 -
ROS2入门21讲__第03讲__ROS2安装方法
本节,我们一起安装ROS2,安装前先要了解一下ROS2底层最重要的一种操作系统——LinuxLinux系统简介时间回到1991年,一位热爱计算机的芬兰大学生林纳斯,在熟悉了操作系统原理和unix系统后,决定自己动手做一个,实践是检验真理的唯一标准,说干就干,他参考已有的一些通用标准,重新设计了一套操作系统内核,不仅可以实现多用户、多任务的管理,还可以兼容unix原有的应用程序。最重要的是,他把这套尚不成熟的操作系统分享到了互联网上,并用自己的名字命名了这套系统,也就是Linux。原创 2024-05-13 12:35:21 · 1744 阅读 · 0 评论 -
ROS2入门21讲__第02讲__ROS2对比ROS1
也就是指定一个标准的接口,比如如何发数据,如何收数据,数据的各种属性如何配置,都定义好了,如果厂家想要接入ROS社区,就得按照这个标准写一个适配的接口,把自家的DDS给移植过来,这样就把问题交给了最熟悉自家DDS的厂商。,类似于我们常听说的5G通信一样,DDS是一个国际标准,能够实现该标准的软件系统并不是唯一的,所以我们可以选择多个厂家提供的DDS系统,比如这里的OpenSplice、FastRTPS,还有更多厂家提供的,每一家的性能不同,适用的场景也不同。这当然不符合ROS提高软件复用率的目标。原创 2024-05-11 12:22:14 · 925 阅读 · 0 评论 -
ROS2入门21讲__第01讲__ROS/ROS2是什么
在上图中,我们可以看到PR2机器人已经可以完成叠毛巾、熨烫衣服、打台球、剪头发等一系列复杂的应用功能,以叠毛巾为例,这在当时是轰动机器人圈的重要研究,因为第一次有机器人可以完成柔性物体的处理,虽然效率很低,在100分钟之内只完成了5条毛巾的整理,但是在学术层面却推动机器人向前走了一大步。”的目标,促使社区快速发展和繁荣,时至今日,ROS已经广泛用于各种机器人的开发,无论是机械臂、移动机器人、水下机器人,还是人形机器人、复合机器人,统统都可以看到ROS的身影,ROS已经成为机器人领域的普遍标准。原创 2024-05-10 18:35:43 · 1041 阅读 · 0 评论