ROS2教程之机器人概述
1 概述
1.1 机器人项目的生命周期
机器人项目的生命周期可以划分为八个阶段:
(一)系统架构
这一阶段包括确定机器人的整体结构和设计,包括选择其主要硬件和软件组件,以及布局其通信系统和数据流。
(二)组件选择
根据性能、功耗、成本和兼容性等要求,选择传感器、执行器、控制器和计算硬件等关键组件。
(三)三维建模
使用 Fusion 360、Solidworks 等三维 CAD 软件对机器人的物理设计进行建模。这有助于可视化机器人的结构、优化设计并为制造做好准备。
(四)制造硬件
这一阶段涉及机器人硬件组件的实际组装,包括机械构建和电子电路集成。
(五)感知、规划和控制
开发能让机器人感知环境、规划行动和控制动作的软件。这包括实施校准、定位、物体检测、路径规划和运动控制的算法。
(六)模拟
在进行物理测试之前,先在 Gazebo 仿真环境中模拟机器人。机器人的三维模型被转换成 URDF 文件,用于仿真软件。这样就可以在受控的虚拟环境中测试机器人的性能,从而预测机器人在真实世界中的表现。
(七)测试
单元测试对机器人的单个组件或模块进行测试,以确保每个功能都能按预期单独运行。
进行集成测试,以确保集成组件按预期共同运行。这一阶段检查模块之间的数据流和交互错误。
系统测试包括硬件和软件测试。对整个系统进行测试,以验证其是否满足所有指定要求,包括性能、安全性和可靠性测试。
(八)容器化和部署
使用 Docker 等工具将软件组件打包到容器中,以确保不同开发、测试和生产环境的一致性。然后将机器人部署到其运行的目标环境中。
这种结构化方法确保了从初始设计到部署的整个开发过程,从而可以高效地处理复杂的机器人项目,同时确保高性能和高可靠性标准。
1.2 机器人自动化的核心组成部分
机器人自动化有四个重要组成部分,它们是:
(1)硬件和传感器
(2)机器人感知
(3)运动规划
(4)机器人控制
1.2.1 硬件
机器人设计的技术层面是多方面的,涵盖了一系列针对特定任务和环境量身定制的硬件组件。下面将详细介绍处理单元、特定应用硬件组件和致动器/电机的架构设计:
CPU、GPU 和 DSP 的架构设计: 机器人系统通常需要复杂的计算架构,其中包括 CPU、GPU 和 DSP(Digital Signal Processors,DSP数字信号处理器)。CPU 处理通用进程任务,并协调其他硬件组件的运行。GPU 对于快速处理密集型并行任务至关重要,特别是在机器人技术的图像和视频分析中。DSP 用于实时处理音频、视频和控制传感器数据,优化需要高速数字计算的任务。集成度高的架构可确保这些组件协调工作,在计算能力、能效和实时处理能力之间取得平衡,从而提供所需的性能。
特定应用组件的硬件: 为无人驾驶飞行器(Unmanned Aerial Vehicles ,UAV)和自主飞行器( Autonomous Vehicles ,AV)等特定应用而设计的机器人采用了专用硬件。例如,无人飞行器采用轻质、高强度材料和 GPS 模块、高度计(altimeters)和陀螺仪(gyroscopes)等组件,以实现导航和稳定性。无人驾驶飞行器采用了一整套传感器,如激光雷达、雷达和摄像头,再加上先进的计算硬件,可支持自主导航系统,实时处理大量数据,做出瞬间决策(make split second decisions)。
执行器/电机: 致动器和电机是机器人的肌肉,可将电能转化为机械运动。精密伺服电机通常用于精确控制角度或线性位置、速度和加速度。液压或气动执行器适用于需要更大力量的机器人,但代价是控制复杂和安装笨重。致动器和电机的选择在很大程度上取决于机器人预期任务所需的力道、速度、精度和功率效率。
1.2.2 传感器
作为人类,我们拥有多种感官组件,可以帮助我们感知视觉、听觉、嗅觉、味觉和触觉等不同方面。除五种基本感官外,我们还能感受温度变化,并在不同地形中保持平衡。 另一种感觉叫做本体感觉,由本体感受器和位于肌肉、肌腱和关节内的机械感觉神经元介导。
那么,现在的问题是–机器人如何才能像人类一样感知现实世界?通过立体视觉感知是一种方法,但其他感官输入呢?
这就需要传感器,它们是具有内置机械、电气或化学特性的设备,能够感知现实世界环境的不同方面。根据感知机制的类型,传感器可分为以下几类:
1)接近传感器: 这些传感器可检测机器人附近是否存在物体。它们通常使用红外线、超声波或激光技术来测量与物体的距离。它可进一步分为两个子部分:
(1)电感式接近传感器 - 电感式接近传感器是一种用于检测金属物体存在与否的设备,无需物理接触。它们的工作原理是电磁感应,当金属物体靠近时会产生一个振荡磁场。
(2)电容式接近传感器 - 这种传感器设计用于检测金属和非金属物体,包括液体和颗粒状材料,其原理是当感应区域内有物体存在时,电容会发生变化。
2)视觉传感器: 包括摄像头和计算机视觉系统,可让机器人解读视觉信息。它们可用于识别物体、导航和绘制环境地图。
3)力传感器: 这些传感器可测量不同方向上施加的力和扭矩。它们通常用于机械臂,以调整运动强度,确保与物体和人类互动时的安全。
4)惯性测量单元(Inertial Measurement Uint,IMU): 惯性测量单元(IMU)是机器人技术中需要精确运动和定位任务的基本设备,例如自动驾驶汽车、无人机和仿人机器人。
5)3D LiDAR(光探测和测距): 它利用激光脉冲准确捕捉环境和物体的三维特征。它每秒发射数千至数百万个激光,测量每个脉冲撞击物体后返回所需的时间。通过这些飞行时间(ToF)测量,激光雷达系统可以精确计算距离,绘制出周围环境的详细三维地图。
6)全球定位系统 (Global Positioning System,GPS): 全球定位系统(GPS)是一种基于卫星的导航系统,由至少 24 颗环绕地球运行的卫星组成,在地球上或地球附近任何与四颗或更多 GPS 卫星有畅通视线的地方,提供各种天气条件下的时间和位置信息。
1.2.3 机器人感知
“Build robot partners that augment the human workforce, ultimately enabling humans to be more human” – Agility Robotics
“打造机器人合作伙伴,增强人类劳动力,最终让人类变得更加人性化"–Agility Robotics 公司
要实现这一目标,机器人必须能够在人类为人类设计和构建的真实世界环境中有效运行,而不是依赖于高度受控或专业的环境。
以下是机器人感知的两个关键部分,我们将在本文以及今后的文章中探讨这两个部分:
机器人导航/定位: 在每个时间步估计机器人在地图上的姿势(x、y、z、滚动、俯仰、偏航)。滚动、俯仰和偏航分别代表固定 X、Y 和 Z 轴的旋转。
深度学习: 通过执行物体检测、跟踪、分割、分类等操作,理解来自安装在机器人上的摄像头的语义信息。
1.2.3.1 什么是机器人定位?
机器人定位是机器人技术的一个基本方面,涉及机器人在给定环境中确定自身位置和方向的过程。在陌生环境中运行的机器人需要了解/感知周围环境,并在地图上准确确定其当前位置,以便有效地导航到目标位置。
应对这些挑战需要一个强大的感知模块。定位是确定车辆相对于全球框架位置的关键,但这不能仅依赖于 GPS。由于全球定位系统无法提供厘米级的精度,因此需要将激光雷达或摄像头作为主传感器,IMU、编码器、雷达、热像仪和全球定位系统作为辅助传感器。如果车辆配备了激光雷达,通常会使用LiDAR SLAM(Simultaneous Localization and Mapping,同步定位和绘图)。对于配有立体摄像头的车辆,则采用Visual-SLAM。
1.2.3.1.1 机器人定位中的重要术语:
以下是文献中常用的几个定位术语:
姿势(Pose):姿势指机器人在地图中的实际位置(平移和旋转)。
测距(Odometry):运动轨迹:运动轨迹测量是指通过使用传感器(如电机编码器)来监测执行器的输出,从而估计机器人相对于其先前位置的运动轨迹。
定位(Localization):定位与地图构建以及在给定地图上确定自己的位置有着更为复杂的联系。
建图(Mapping):建图是通过纯传感器数据(摄像头、激光雷达)对周围环境进行三维重建的过程。
漂移(Drift): SLAM 或定位中的漂移一般是指随着时间的推移,机器人估计位置和方向的误差逐渐累积,从而导致估计位置发生偏移。这是 SLAM/定位中的一个大问题。
闭环(Loop Closure): SLAM(同步定位与绘图)中的闭环指的是在正在构建的地图中识别出之前访问过的地方,从而关闭一个环路的过程。如果省略闭环,SLAM 基本上就变成了里程测量。这可用于缓解多重注册的问题。
1.2.3.1.2 SLAM 过去的发展
同步定位与建图(Simultaneous Localization and Mapping,SLAM)问题的解决方案被认为是机器人学界在过去十年中取得的显著成就之一。作为一个理论问题,SLAM 以各种形式被提出和解决。从室内机器人到室外、水下和机载系统,SLAM 已在多个领域得到应用。在理论和概念层面上,SLAM 现在可被视为一个已解决的问题。虽然可以认为 SLAM 在概念上已经解决,但在实现更通用的 SLAM 解决方案方面仍存在重大挑战,特别是在构建和利用可处理各种真实世界环境的感知丰富的地图方面。
SLAM 的概念是在 1986 年的一次机器人学会议上首次提出的,当时机器人学和人工智能中的概率应用刚刚起步。Smith、Cheeseman 和 Durrant-Whyte 等研究人员的早期工作为 SLAM 奠定了基础,他们开发的统计方法有助于理解机器人如何在测量结果不确定的情况下确定自己的位置并绘制环境地图。他们和其他人还展示了声纳和摄像头等传感器如何帮助机器人导航。
尽管取得了早期进展,但 SLAM 研究遇到了重大障碍。起初,人们认为机器人绘制的地图中的测绘误差会不断增加,导致研究人员寻求临时的解决办法。然而,1995 年的一项重大发现表明,这些误差是可以控制和减少的。研究人员发现,了解环境中不同地标之间的关系是提高机器人估计自身位置准确性的关键。这一突破在一篇调查论文中作了详细阐述,该论文还创造了 “SLAM ”一词,它推动了这些系统的进步,使其更加高效,并能更好地将新数据与现有地图整合在一起。
图中显示了牛津大学机器人研究小组的安德鲁-约翰-戴维森首次使用立体摄像机实时实现视觉 SLAM。该视频拍摄于牛津大学的汤姆大楼。
1.2.3.1.3 SLAM 的最新发展
SLAM 的最新发展可划分为LiDAR SLAM、Visual SLAM and Deep Visual SLAM、Sensor Fusion SLAM三个方向。
1)LiDAR SLAM
激光雷达 SLAM:SLAM(同步定位与建图)可使用不同的传感器来执行,其中相机和激光雷达最为有效。这些传感器通常与其他传感器单独使用,以提高精确度。激光雷达 SLAM 有多种类型,包括二维、三维和基于深度学习的方法。这些类别中的著名论文包括
- Cartographer for 2D SLAM,
- LOAM (Lidar Odometry and Mapping) and FLOAM (Fast LOAM) for 3D SLAM,
- SuMa++ for deep learning-based SLAM.
困难: 激光雷达 SLAM 面临的挑战包括设备成本高、在长走廊、多尘或动态区域等退化环境中的性能问题,以及频率低和计算需求增加。
2)Visual SLAM and Deep Visual SLAM
视觉 SLAM 和深度视觉 SLAM:使用摄像头的视觉 SLAM 可分为单声道(mono)/立体声(stereo) SLAM、RGB-D SLAM、密集型(Dense)、半密集型(Semi Dense)、稀疏型 (Sparse)SLAM 和基于深度学习的 SLAM。
-
深度学习方法: Cube SLAM、Kimera 和 PoseNet 最近推动了视觉 SLAM 的发展,取得了与传统方法相当或更优的效果。
-
在视觉 SLAM 方面,ORB-SLAM 和 ORB-SLAM2 是广泛使用的方法。
-
在半密集和密集视觉 SLAM 中,SVO 和 DSO 分别是重要的方法。
-
Kintinuous 是 RGB-D SLAM 中的杰出方法。
-
三维重建中最先进的高斯拼接法(Gaussian Splatting )启发了 CVPR 2024 上的高斯拼接 SLAM 论文。
困难: 视觉 SLAM 面临的挑战包括特征识别错误、尺度漂移、动态物体干扰、视图受限和计算要求高等,而深度视觉 SLAM 则要应对低纹理、高动态范围、运动模糊、动态变化和延迟等问题。
3)Sensor Fusion SLAM
传感器融合 SLAM:为提高 SLAM 的精度和可靠性,还开发了融合技术,将不同类型的传感器结合在一起。这方面的例子包括视觉惯性 SLAM、激光雷达惯性 SLAM,以及更复杂的设置,如激光雷达视觉惯性 SLAM 和热惯性 SLAM。值得注意的基于融合的 SLAM 方法包括
- 用于激光-视觉 SLAM(Laser-Visual SLAM) 的 VLOAM
- 用于激光-IMU SLAM(Laser-IMU SLAM) 的 LIO-mapping
- 热惯性 SLAM (thermal-IMU SLAM)的 KTIO
- 视觉惯性 SLAM(Visual-Inertial SLAM ) 的 VINS-MONO
- 用于视觉惯性 SLAM (Visual-Inertial SLAM)的 OpenVins
这些方法整合了来自多个传感器的数据,以创建更强大、更准确的绘图和定位系统。
困难: 多传感器融合 SLAM 面临的主要挑战包括缺乏适应性、易受风险和限制因素的影响、可靠的数据关联和可靠的同步。
1.2.3.2 机器人视觉的深度学习
除了定位之外,物体检测、道路规范要素识别、可衍生区域检测和占用率预测等挑战通常也可以通过深度学习来解决。然而,深度学习在泛化方面存在困难,而且从开发到部署的过渡过程也极具挑战性。大型模型的预测速度可能很慢,而且本身具有不确定性。为了提高模型的泛化能力并减少感知失败,我们采用了主动学习的方法,根据运行中遇到的独特场景来训练模型。
然而,验证深度学习失败和选择小而多样的数据集进行有效训练仍然是个问题。剪枝和蒸馏等技术可用于缩短推理时间,但由于深度学习模型不可靠、采用速度慢,因此往往仍未得到充分利用。
深度学习在机器人视觉领域有着广泛的应用,包括分割可衍生区域、检测潜在障碍物、识别交通标志和道路标志等。但是,深度学习解决方案也带来了许多研究挑战,这些挑战可分为三个概念上正交的轴:学习
体现、推理。
1.2.3.2.1 学习
在机器人视觉领域,与受控实验室环境相比,在动态、开放环境中部署深度机器学习面临着独特的挑战。在这些条件下取得成功的关键在于增量学习和主动学习,它们能让机器学习模型随着时间的推移不断吸收新信息和技能,而不会遗忘之前获得的知识。
1.2.3.2.2 体现
体现涉及对时间和空间方面的理解和利用,是机器人视觉区别于计算机视觉的关键所在。它提出了独特的挑战,以增强感知能力,实现主动视觉,并利用环境操作来改进整体视觉处理。
1.2.3.2.3 推理
受生物机制的启发,机器人视觉系统在推理方面面临三个基本挑战:场景语义和几何推理、场景中物体的推理以及场景和物体属性的联合推理。
1.2.3.2.4 特斯拉自动驾驶系统中的深度学习组件
这是最早的视频之一,展示了特斯拉自动驾驶汽车在道路上的观察情况。视频中描述的检测和分割任务主要是利用深度学习技术完成的。以下是 “这是特斯拉自动驾驶汽车在路上看到的景象 ”的详细介绍。
-
可驾驶区域划分: 特斯拉视觉可检测道路上的可驾驶区域和不同的车道线。检测到车道线有助于汽车保持在自己的车道上,不会偏离轨道。
-
道路规范要素检测: 通过仔细观察,该模型还能检测到路标等监管要素,如十字路口的停车标志、交通信号灯和白色道路标线(检测到的是橙色)。这有助于自动驾驶仪预测前方路况。
-
车辆检测和距离估计: 一个关键的功能是检测来车、估计其距离并预测其未来轨迹。特斯拉的感知堆栈似乎在这方面表现出色。请注意,当自我车辆接近前车时,它与前车之间的距离是如何不断缩短的。
-
特斯拉 SLAM:下面的视频乍一看可能很难理解,但如果你仔细观察右下角,就会看到可视化的 SLAM 输出。这个组件对任何自动驾驶系统都至关重要,因为它有助于确定车辆的当前位置和预定目的地。
-
路况识别和规划输出: 图像上显示的文字提供了有关路况的信息,例如路面是否潮湿、是否正在施工、前方是否有雾,或者路面上是否有保险杠等障碍物。
1.2.4 运动规划
给定一个初始状态 x s t a r t x_{start} xstart 和一个期望的最终状态 x g o a l x_{goal} xgoal,找出一个时间 T T T 和一组控制,使得运动满足 x-of-T 等于 x g o a l x_{goal} xgoal,并且在所有 t ∈ \in ∈ 到 [0, T] 时都没有碰撞。
x s t a r t x_{start} xstart = 起始位置, x g o a l x_{goal} xgoal = 目标位置, T T T = 到达目标的总时间, t t t = 当前时间
运动规划问题有多种形式,例如规划带有时间限制的完整轨迹,或者仅仅设计一条无碰撞的几何路径。当运动规划专门用于生成轨迹时,它被称为路径规划。这包括在搜索空间中导航,以创建从起点到所需目的地的路线,从而有效解决动态环境中运动和计时的复杂性。这一过程对于确保机器人在操作环境中高效、安全地执行任务至关重要。
1.2.4.1 运动规划中的重要术语
运动规划中有几个关键术语需要了解:
工作空间(Workspace): 这是机器人运行的物理环境。
配置(Configuration): 指机器人在工作区内的具体位置和方向。
配置空间(Configuration Space): 该空间描述了机器人在工作区内所有可能的有效运动。配置空间与机器人的自由度相对应。
轨迹(Trajectory): 该术语描述机器人在任何给定时间内的位置,包括其运动速度以及有效遵循指定路径所需的加速或减速模式。
障碍空间(Obstacle Space): 该空间包括工作区内机器人无法移动的区域,通常是由于物理障碍的存在。
自由空间(Free Space): 这是所有不会与障碍物发生碰撞、允许机器人自由移动的配置的集合。
目标空间(Target Space): 自由空间的一个子集,是机器人要到达的目标区域。它定义了机器人试图到达的工作区内的目标点。
1.2.4.2 运动规划背后的数学
想象一下,你有一张环境地图作为你的工作空间,在这张地图上,你既知道你当前的位置,也知道你想要到达的目的地。你的任务是找到通往目标的最短路径。但有一个问题,你必须避免与沿途的任何障碍物相撞。
鉴于上述情况,你将如何用数学方法表示问题并着手解决?
上述问题可以简单地看成是一个优化问题,我们有一个函数(成本函数),我们希望根据一组约束条件将其最小化或最大化。为了更好地理解这个概念,让我们来看看几个问题的表示:
ξ ∗ = argmin ξ cost ( ξ ) s . t . c ( ξ ) ≥ 0 d ( ξ ) = 0 \begin{aligned}&\boldsymbol{\xi}^{*}=\underset{\xi}{\operatorname*{argmin}}\operatorname{cost}(\boldsymbol{\xi})\\&s.t.\quad c(\boldsymbol{\xi})\geq0\quad d(\boldsymbol{\xi})=0\end{aligned} ξ∗=ξargmincost(ξ)s.t.c(ξ)≥0d(ξ)=0
这里
-
ξ \xi ξ表示当前规划的轨迹或路径。
-
Cost是定义在这条路径( ξ \xi ξ)上的成本函数。
-
我们的目标是找到一个最优规划,{ ξ ∗ \xi^* ξ∗ },在一组约束条件(用 c 和 d 表示)的限制下,使该成本函数最小化。
可以认为,这些约束条件代表了最优规划必须满足的各种物理、操作或其他要求。
有了这些知识,让我们应用它来解决所提到的寻找最短路径的问题,即起点和终点之间的距离最小。我们可以使用欧氏距离作为代价函数,将当前位置和目标位置作为输入。此外,为了执行避开障碍物的约束,我们可以在机器人与障碍物发生碰撞时引入惩罚。让我们用数学方法写出这一点:
Cost Function = ( x goal − x curr ) 2 + ( y goal − y curr ) 2 + Constraints \text{Cost Function}=\sqrt{(x_{\text{goal}}-x_{\text{curr}})^2+(y_{\text{goal}}-y_{\text{curr}})^2}+\text{Constraints} Cost Function=(xgoal−xcurr)2+(ygoal−ycurr)2+Constraints
C o n s t r a i n t s {Constraints} Constraints = 人工势场(APF)[APF 是障碍物碰撞罚则]
我们将根据 APF 约束条件最小化成本函数。
1.2.4.3 路径规划器的类型
路径规划模块可确保机器人在动态环境中安全导航。它的主要目标是引导机器人从起始位置到达目的地,并在不与任何障碍物发生碰撞的情况下遵守车辆运动限制。通常,路径规划分为全局规划、局部规划两部分。
什么是全局规划器?
全局规划器使用静态全局地图以及指定的机器人起点和终点位置,创建一条从起点到终点的无碰撞路径。不过,生成的全局路径并不包含移动物体,而是保持不变。
什么是局部规划器?
局部路径规划器通过调整每个分段(小部分)来增强全局路径,以考虑到动态移动的物体。这种分层路径规划方法带来了许多实际好处。根据地图、机器人的起始位置和目标位置,可以估算出全局路径。然而,由于一些动态因素的影响,这种方法还不够充分,例如:
-
移动的障碍物
-
静态元素的替换
-
道路规范要素变化
-
不平坦的路面等
1.2.4.4 规划算法的分类
在路径规划中引入了不同的算法,例如
(一)基于图搜索的规划算法:
基于图搜索的算法可分为深度优先搜索、广度优先搜索和最佳优先搜索。
深度优先搜索算法是从起点到终点尽可能深、尽可能快地建立搜索树,直到找到合适的路径。
另一方面,广度优先搜索则是尽可能广泛和快速地建立搜索树,以实现目标。
最佳优先搜索算法会给搜索树中的每个节点和边分配一个数值或成本,并使用这些数值来指导搜索,决定是否要扩展搜索树以及下一步扩展哪个分支。
例如 Dijkstra 算法、A*、DFS、BSF 和双向搜索等
(二)基于采样的规划算法
基于采样的路径规划器随机连接状态空间内的点,形成一个图来识别无障碍路径。这些算法无需探索整个配置空间,因此效率很高。用户可以调整生成小分支的迭代次数,从而影响路径的优化。然而,这些算法在狭小空间内的导航中面临挑战,随机取样难以建立连接性。以下是各种基于采样的路径规划器。
例如 快速探索随机树(RRT)、概率路线图法(PRM)、RRT 星(RRT**)、批量信息树星(BIT**)等。\
(三)智能仿生规划算法
全局路径规划技术的另一个重要类别是基于仿生的智能方法,这是一种模仿昆虫进化行为的智能算法。这些基于仿生的方法从自然现象和自然界各种物种表现出的集体智慧中汲取灵感。它们采用基于群体的方法,通过模仿自然选择、群体智能或觅食行为的过程,对一组候选解决方案进行迭代改进。
例如 遗传算法 (GA)、蚁群优化算法 (ACO)、人工蜂群算法 (ABC) 和粒子群优化算法 (PSO)。
另一种方法是基于 ML 的路径规划,ML 模型利用机器学习算法为机器人或自动驾驶车辆在复杂环境中导航生成最佳路径。基于 ML 的方法包括基于监督学习的模型,如 SVM、LSTM、CNN、MCTS 等。CNN 等监督学习算法只能通过一步预测来实现静态避障,因此无法应对时序避障。RL 算法(如最优值 RL)适合时间序列任务。这些算法的典型例子包括 Q learning, nature DQN, double DQN dueling DQN。后来又引入了另一种方法,即政策梯度 RL。有各种不同的算法,如 DDPG、PPO、TROP 等。
1.2.5 机器人控制
机器人技术中的控制是指对系统进行编程和设置,帮助机器人自己行动,或在我们的帮助下行动。它通常使用闭环控制等反馈系统,对于确保机器人平稳移动和正确工作至关重要。这意味着机器人会根据传感器的反馈不断调整自己的行动。PID(Proportional, Integral, Derivative,比例、积分、微分)控制等技术是让机器人精确稳定地完成任务的秘诀。
什么是 PID?
这种控制策略是一种广泛而有效的控制策略,用于机器人技术和各种工程应用中,以维持所需的输出或过程条件。控制器的目标是通过调整控制输入,最大限度地减小预期设定点与实际过程变量之间的误差。
比例 (Proportional,P):该组件产生与当前误差值成比例的输出。比例响应可通过改变比例增益进行调整。增益越大,控制系统的响应速度越快,但如果设置过高,也会导致系统不稳定,出现过大的超调。
积分 (Integral,I): 积分项与过去误差的累积有关。如果过程变量偏离设定点一段时间,积分项就会增加,从而有助于消除纯比例控制器产生的残余稳态误差。不过,过多的积分作用会导致不稳定和振荡行为。
导数 (Derivative,D):PID 控制器的导数部分处理误差的变化率,根据当前的变化率预测未来的误差。这有助于抑制系统的响应,减少过冲和稳定时间。不过,导数控制对误差测量中的噪声很敏感,因此必须仔细调整,以避免对瞬时误差做出过度响应。
1.3 机器人工具
作为开发人员,必须掌握硬件和软件。我们不会深入探讨硬件所需的技术技能。不过,了解resistors电阻器、capacitors电容器(Arduino、Raspberry Pi 和 ESP32 等)、wires电线、Diodes二极管、LEDs发光二极管、power supply电源(battery电池)、Microcontrollers微控制器、different kinds of motors各种电机、Relays继电器、Switches开关、breadboard面包板、multimeter万用表、soldering tool焊接工具、sensors传感器、AC-DC converters AC-DC转换器等主要电气元件/工具还是必不可少的。掌握额定功率的概念至关重要。
机器人操作系统(Robot Operating System, ROS): 机器人操作系统是一种中间件软件,可实现软件与硬件之间的通信。它由一个名为 Open Robotics 的开源组织开发,ROS 的开发至今已持续了近十年。他们拥有一系列机器人软件和库,这些软件和库正在积极开发中,并广泛应用于工业界和学术界。
Linux: 必须有在基于 Linux 的操作系统(如 Ubuntu、Arch、Manjaro 等)上工作的经验。
编程语言(Pragramming language): 掌握 C++ 和 Python 这两种语言非常重要,因为您将经常通过这两种语言使用 ROS。最近,许多公司和开源组织都专注于构建基于 Rust 的工具,ROS 也有一个 Rust 版本。
计算机视觉和深度学习工具(Computer Vision and Deep Learning tools): OpenCV、Boost、Eigen、 Open3D、PCL 和 Libtorch/Pytorch 是基础工具。Boost 和 Eigen 是多线程数据处理库,Opencv 是计算机视觉库,PCL 处理点云,Libtorch(c++)/pytorch 用于推理深度学习模型。OpenVino 和 TensorRT 可用于模型量化。
感知工具(Perception Tools): SLAM 机器人社区广泛使用 GMapping, ORB-SLAM2, slam_toolbox, 等工具。在激光雷达定位和绘图 LOAM中, FLOAM 被广泛使用。机器人校准 ROS 软件包提供了校准安装在机器人上的各种传感器的内在和外在参数以及机器人手臂运动学的工具。
运动规划工具(Motion Planning Tool): ROS2 有自己的规划库,名为 Navigation2.。此外,还有用于机械臂操纵的 MoveIt 2 。OMPL (开放运动规划库)通常通过 MoveIt 2 等集成工具与 ROS2 结合使用,以完成复杂的运动规划任务。行为树(Behavior Trees ,BTs)是一种强大而灵活的工具,可用于机器人、人工智能和游戏开发,以控制动作的执行和决策过程。
控制工具(Control Tools):ros2_control 是一个用途广泛的框架,用于在 ROS2 中控制硬件。
建模软件(Modelling Software): 工业中使用不同的机器人三维建模软件,如 Solidworks, AutoCAD, Unity 等。
仿真软件(Simulation Software): Gazebo 是最流行的机器人仿真软件之一,在学术界和工业界得到广泛应用。Carla和 SUMO 在自动驾驶汽车方面非常流行。强化学习模拟器有 Pybullet, MuJoCo, Isaac Sim等。
可视化工具(Visualization Tools): 人们广泛使用 Rviz2, Foxglove, Rerun, PlotJuggler等来可视化传感器数据或来自机器人的指令。
人工智能 + 机器人(AI + Robotics): 人工智能与机器人技术的结合取得了重大进展,形成了一个独特的研究领域,即 “机器人学习”(Robot Learning)。 TDMPC, ALOHA 和 Mobile ALOHA是该领域的重要研究成果之一,它们主要关注高精度操作任务。最近,Hugging Face开源了一个名为LeRobot的库,实现了这些功能,目前正在积极开发中。
测试和部署软件(Testing and Deployment Software): Pytest和 CppUTest广泛用于单元测试。在将开发代码推送到 GitHub 后,使用 GitHub Actions 进行测试。Docker 在机器人部署中发挥着重要作用。很多人似乎都在使用 Ansible 自动执行与部署相关的任务。Grafana、Prometheus 用于监控 CPU 使用率、内存消耗、网络等资源。
1.4 机器人研究进展
大型语言模型(Large language models ,LLM)是近年来出现的重要研究领域之一,它解决了许多邻近问题,让我们离人工智能更近了一些。GPT-3、GPT-4、Llama、Mistral 等模型已在海量文本语料库和图像、视频上进行了训练,使模型对世界有了深度和广度的认识。这一发展引发了机器人技术的新思维。
易学的东西难学,难学的东西易学。例如,机器人学习解一元二次方程要比开门容易得多。这也是机器人学习的动机之一。
让我们来了解一下开发工作是如何逐步推进的。
通过谷歌机器人团队发表的名为《SayCan》的论文,第一轮迭代工作从使用 LLMs 进行机器与人的语言协作开始。我们的想法是利用 LLM 的推理能力,给定一个高级任务来规划子任务。谷歌机器人团队成功发表了一篇名为 SayCan 的论文。通过这项工作,有几件事变得清晰起来、
LLMs的有力支持: 推理: 大型模型非常擅长推理,这对机器人技术至关重要。
语义知识: 大模型是机器人在世界上行动所必需的常识性知识库。它们能将场景的局部和全局背景完美地结合在一起。
但是,与优势相比,挑战也不少,例如
-
嵌入式基础: 机器人能做什么?环境的状态如何?
-
交互式决策: 机器人天生具有丰富的交互性。
-
数据数量少、质量低: 机器人技术中的专家数据很难获得。
-
视觉与传感: 机器人的传感模式与许多基础模型并不一致。
-
安全关键:机器人技术中的安全至关重要,通常包括硬约束。
后来,PaLM-E 出现了,它是一种多模态嵌入式语言模型,可接收交错了视觉、连续状态估计和文本输入编码的多模态句子,并生成多种嵌入式任务,包括机器人顺序操纵规划、视觉问题解答和字幕。在这一点上,我们不仅依靠语言模型,还将大型视觉模型整合到环路中。
后来又推出了 LM-Nav,它混合了视觉导航模型(VNM)、视觉语言模型(VLM)和大规模语言模型(LLM)三种不同的基础模型,用于机器人导航。
当时,迪特尔-福克斯(Dieter fox)的一项重要工作是利用元分割基础模型 SAM 在无约束、杂乱的环境中进行物体拾取操作。
视觉和文本可以提供语义和推理能力,但没有基本的物理信息。
这意味着,如果指令是拿起一个瓶子,模型就需要知道执行器应该移动多少,应该把物体抓得多紧等。
为了在模型中嵌入这些信息,已经开始了大量的数据收集工作,模型也在陆续发布。这种包含动作信息的视觉语言模型被称为 VLA(Visual-language-action model,视觉语言动作模型)模型。
1.5 小结
随着我们不断挑战机器人技术的极限,持续学习和适应的重要性也变得不言而喻。在科技界持续不断的研究、投资和合作的推动下,该领域必将迎来长足的发展和创新。
请加入我们的行列,我们将继续探索这一令人着迷的领域,发掘将塑造机器人和自动化未来的新技术和新方法。让我们一起迎接未来的挑战和机遇,迈向机器人与人类无缝协作、提高能力和改善生活的未来。