前言 OriginBot 是古月居出产的第一款开源智能小车套件。恰逢其时,我当时正好是古月居机器人开发的实习生,应古月老师的邀请参与到了早期OriginBot的项目组,负责视觉感知和规划控制相关的一些内容开发和相关文档撰写,这里非常感谢古月居的各位哥哥姐姐不断帮我填坑,也感谢他们对我的信任。仅以此文给大家分享一些我与OriginBot的一部分故事。 旭日X3派 如下图,我是在7月6日拿到
引言 今天开始记录ros2的学习过程,首先从最基本的使用python搭建ros系统开始。 创建功能包 1、使用ros系统进行开发,首先要定义功能包,功能包,顾名思义,就是一个功能模块的集合地,与此功能相关的所有文件都会放到这个功能包中,当我们使用python系统新建功能包的时候,可以运行如下指令 ros2 pkg create my_ros2 --build-type ament_pyth
Rviz:三维可视化显示平台 大家有没有畅想过一个问题,机器人眼中的世界是什么样的呢?如何能够看到机器人摄像头拍摄到的图像? 这就涉及到可视化显示的范畴了,本讲我们介绍一位ROS中的重量级嘉宾——Rviz,一款三维可视化显示的神器。 Rviz三维可视化平台 机器人开发过程中,各种各样的功能,如果我们只是从数据层面去做分析,很难快速理解数据的效果,比如给你一堆0到255的数字,问这幅图
RQT:模块化可视化工具 ROS中的Rviz功能已经很强大了,不过有些场景下,我们可能更需要一些简单的模块化的可视化工具,比如只显示一个摄像头的图像,使用Rviz的话,难免会觉得操作有点麻烦。 此时,我们就会用到ROS提供的另外一种模块化可视化工具——rqt。 rqt介绍 正如RQT的命名,它和Rviz一样,也是基于QT可视化工具开发而来,在使用前,我们需要通过这样一句指令进行安装,然后就
Gazebo:三维物理仿真平台 ROS机器人开发,机器人当然是主角,如果我们手边没有实物机器人,怎么办呢?没问题,机器人三维物理仿真平台Gazebo,了解一下。 Gazebo仿真平台 介绍 Gazebo是ROS系统中最为常用的三维物理仿真平台,支持动力学引擎,可以实现高质量的图形渲染,不仅可以模拟机器人及周边环境,还可以加入摩擦力、弹性系数等物理属性。 比如我们要开发一个火星车,那就
URDF:机器人建模方法 ROS是机器人操作系统,当然要给机器人使用啦,不过在使用之前,还得让ROS认识下我们使用的机器人,如何把一个机器人介绍给ROS呢? 为此,ROS专门提供了一种机器人建模方法——URDF,用来描述机器人外观、性能等各方面属性。 机器人的组成 建模描述机器人的过程中,我们自己需要先熟悉机器人的组成和参数,比如机器人一般是由硬件结构、驱动系统、传感器系统、控制系统四大部
TF:机器人坐标系管理神器 坐标系是我们非常熟悉的一个概念,也是机器人学中的重要基础,在一个完整的机器人系统中,会存在很多坐标系,这些坐标系之间的位置关系该如何管理? ROS给我们提供了一个坐标系的管理神器——TF。 机器人中的坐标系 机器人中都有哪些坐标系呢? 比如在机械臂形态的机器人中,机器人安装的位置叫做基坐标系Base Frame,机器人安装位置在外部环境下的参考系叫做世界坐
Launch:多节点启动与配置脚本 到目前为止,每当我们运行一个ROS节点,都需要打开一个新的终端运行一个命令。机器人系统中节点很多,每次都这样启动好麻烦呀。有没有一种方式可以一次性启动所有节点呢?答案当然是肯定的,那就是Launch启动文件,它是ROS系统中多节点启动与配置的一种脚本。 Launch文件 这是一个完整的Launch文件,乍看上去,好像Python代码呀,没错,ROS2中
DDS Hello,大家好,欢迎来到《ROS2入门21讲》,我是主讲人古月。 终于讲到ROS2中最为重大的变化——DDS,我们在前边课程中学习的话题、服务、动作,他们底层通信的具体实现过程,都是靠DDS来完成的,它相当于是ROS机器人系统中的神经网络。 通信模型 DDS的核心是通信,能够实现通信的模型和软件框架非常多,这里我们列出常用的四种模型。 第一种,点对点模型,许
分布式通信 智能机器人的功能繁多,全都放在一个计算机里,经常会遇到计算能力不够、处理出现卡顿等情况,如果可以将这些任务拆解,分配到多个计算机中运行岂不是可以减轻压力? 这就是分布式系统,可以实现多计算平台上的任务分配。 分布式通信 什么叫分布式? 之前我们也讲过,在ROS系统中,机器人功能是由各种节点组成的,这些节点可能位于不同的计算机中,这种结构可以将原本资源消耗较多的任务,分配
参数 话题、服务、动作,不知道这三种通信机制大家是否已经了解清楚,本节我们再来介绍一种ROS系统中常用的数据传输方式——参数。 类似C++编程中的全局变量,可以便于在多个程序中共享某些数据,参数是ROS机器人系统中的全局字典,可以运行多个节点中共享数据。 通信模型 比如在机器视觉识别的时候,有很多参数都会影响视觉识别的效果。 在NodeA相机驱动节点中,就需要考虑很多问题,相机连接到
动作 机器人是一个复杂的智能系统,并不仅仅是键盘遥控运动、识别某个目标这么简单,我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。 在这些应用功能的实现中,另外一种ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以很好理解这个概念的含义,这种通信机制的目的就是便于对机器人某一完整行为的流程进行管理。 通信模型 举个例子,比如我们想让机器人转个圈,这肯定不是一下就可以完
通信接口 在ROS系统中,无论话题还是服务,或者我们后续将要学习的动作,都会用到一个重要的概念——通信接口。 通信并不是一个人自言自语,而是两个甚至更多个人,你来我往的交流,交流的内容是什么呢?为了让大家都好理解,我们可以给传递的数据定义一个标准的结构,这就是通信接口。 接口的定义 接口的概念在各个领域随处可见,无论是硬件结构还是软件开发,都有广泛的应用。 比如生活中最为常见的插头和
服务 话题通信可以实现多个ROS节点之间数据的单向传输,使用这种异步通信机制,发布者无法准确知道订阅者是否收到消息,本讲我们将一起学习ROS另外一种常用的通信方法——服务,可以实现类似你问我答的同步通信效果。 通信模型 在之前的课程中,我们通过一个节点驱动相机,发布图像话题,另外一个节点订阅图像话题,并实现对其中红色物体的识别,此时我们可以按照图像识别的频率,周期得到物体的位置。 这个
话题 节点实现了机器人各种各样的功能,但这些功能并不是独立的,之间会有千丝万缕的联系,其中最重要的一种联系方式就是话题,它是节点间传递数据的桥梁。 通信模型 以两个机器人节点为例。A节点的功能是驱动相机这个硬件设备,获取得到相机拍摄的图像信息,B节点的功能是视频监控,将相机拍摄到的图像实时显示给用户查看。 大家可以想一下,这两个节点是不是必然存在某种关系?没错,节点A要将获取的图像数据
节点 机器人是各种功能的综合体,每一项功能就像机器人的一个工作细胞,众多细胞通过一些机制连接到一起,成为了一个机器人整体。 在ROS中,我们给这些 “细胞”取了一个名字,那就是节点。 通信模型 完整的机器人系统可能并不是一个物理上的整体,比如这样一个的机器人: 在机器人身体里搭载了一台计算机A,它可以通过机器人的眼睛——摄像头,获取外界环境的信息,也可以控制机器人的腿——轮子,让
功能包:开发过程的大本营 在下载的教程代码中,大家可以看到有很多不同名称的文件夹,这些在ROS2并不是普通的文件夹,而是叫做功能包。 每个机器人可能有很多功能,比如移动控制、视觉感知、自主导航等,如果我们把这些功能的源码都放到一起当然也是可以的,但是当我们想把其中某些功能分享给别人时,就会发现代码都混合到了一起,很难拆分出来。 举个例子,我们手上有很多红豆、绿豆、黄豆,假设都放在一个袋子
工作空间:开发过程的大本营 大家在之前的学习和开发中,应该有接触过某些集成开发环境,比如Visual Studio、Eclipse、Qt Creator等,当我们想要编写程序之前,都会在这些开发环境的工具栏中,点击一个“创建新工程”的选项,此时就产生一个文件夹,后续所有工作产生的文件,都会放置在这个文件夹中,这个文件夹以及里边的内容,就叫做是工程。 工作空间是什么 类似的,在ROS机器人开发
概念总览 从本节开始,我们将进入第二个篇章,以ROS2的核心概念为线索,详细讲解ROS2的应用开发方法。 本系列视频公开课:https://class.guyuehome.com/detail/p_628f4288e4b01c509ab5bc7a/6
ROS2开发环境配置 ROS机器人开发肯定离不开代码编写,我们课程中会给大家提供大量示例源码,这些代码如何查看、编写、编译呢?我们需要先做一些准备,完成开发环境的配置,给大家推荐两款重要的开发工具——vscode和git。 Git git是一个版本管理软件,也是因Linux而生。 Linux发展迅速,成千上万人都会贡献代码,这些代码有些是修复bug的,有些是贡献新硬件驱动的,有些是增加
ROS2入门全集,这里全都有
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信