当前位置:   article > 正文

四旋翼飞行器避障系统基础_无人机避障使用slam相比于人工势场法的优点(1)

四旋翼飞行器避障系统基础_无人机避障使用slam相比于人工势场法的优点(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6pC8pMaG-1654962524714)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112108150.png)]

上式(2-5)中中,dx表示x轴方向上像素的物理尺寸,dy表示y轴方向上像素的物理尺寸。uo,Vo为主点的像素坐标将上式写作齐次形式可以得式C(2-7)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SeC4Lj9i-1654962524714)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112108154.png)]

相机坐标系下的点坐标和像素坐标系下的点的坐标变化关系称为相机内部参数。这个参数需要通过标定得到。考虑小孔成像模型,忽略畸变,通过相似三角形并进行一定的简化之后可以得到这样的齐次变换式,如式(2-8)所示,变换的示意图如图2-5所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrTWiDwG-1654962524714)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112109099.png)]

上式中,f为镜头的焦距,(Xc,Yc,Zc)为相机坐标系下的一个三维点。

世界坐标系用于表示空间点的物理位置。可以通过一个旋转平移矩阵来表示世界坐标系和相机坐标系之间的位姿关系。这个旋转平移矩阵也称作相机外部参数。这个变换如图2-6所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1rvzwRya-1654962524714)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112110346.png)]

在得到旋转和平移矩阵之后即可将世界坐标系下的点坐标转换到像素坐标系中。转换式如式(2-9)所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YrHoxh44-1654962524715)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112111018.png)]

上式(2-9)中,K为相机内参矩阵,P为包含了内部参数和外部参数的投影矩阵。R为33的三维旋转矩阵,T为31的平移矩阵。

5.传感器的选择方案

为了给智能小车环境信息采集系统选择具体的测距传感器,对测距传感器提出下列要求:

(1)满足功能:即能够测距,且输入、输出接口符合Arduino要求。

(2)满足性能:即满足环境信息采集系统的性能指标要求。

(3)经济性:在功能和性能都满足的前提下,测距传感器的价格越低越好。

下面列举的是测距传感器的主要性能指标

(1)测量精度:由于布置在车头位置的测距传感器,容易受到智能小车运动的影响,所以要求精度为1.由于车体侧面发生碰撞的可能性比较小,所以布置在车体两侧的测距传感器精度要求为10mm即可。

(2)测量范围:两种传感器的最小测量值要求在0.5倍的安全距离(安全距离见3.2节)以内,即为0~150mm。

(3)工作温度,耐腐蚀性以及光亮度:传感器须满足智能小车工作环境的中温度,腐蚀度以及光亮度的要求。其中温度范围要求为0~50°,耐腐蚀性要求为适用于中性环境即可,亮度要求为适应环境光,智能小车运动中没有强光直射车头。

五、姿态传感器种类

飞行器若想平稳飞行,必须依靠姿态检测模块对其进行实时的姿态检测,将检测到的数据实时反馈给主控芯片,由主控芯片对其进行分析并实时调整飞行器各个旋翼的转速以使飞行器按正确的姿态平稳飞行。

常见的姿态检测器件有加速度计、陀螺仪、磁力计、超声波传感器、气压传感器以及GPS等;在当前的姿态检测研究当中,囊括了以上传感器的所有数据较是较为复杂的融合表示方法,这种方法可以获得飞行器较准确的飞行姿态;可是针对飞行器飞行系统的应用,这种复杂的基于多传感器数据融合算法会受到嵌入式平台运算能力的限制,所以我们需要选择一种轻量而且廉价的惯性测量单元(IMUU8))用来输出飞行器的姿态信息;本设计中采用只使用角速度和加速度两种传感器来做为姿态测量器件,其相关的知识和原理详见如下介绍。

1.加速度计

加速度计是一种用来测量加速力的传感器,加速力是在物体在加速过程中作用在物体上的力,例如地球引力,也就是重力;我们可以通过测量由重力引起的加速度,从而计算出设备相对于水平面的倾斜角度。

在三维立体空间中,利用重力和传感器的关系,可以分析得到如图3.5所示的三个姿态角p(pitch)、p(roll)、日(yaw):X轴相对于地面的角度是p、是Y轴相对于地面的角度是φ、Z轴相对于重力的夹角是0。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qOLCNU5E-1654962524715)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112125168.png)]

因此可以推导出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mImscP2p-1654962524715)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112125749.png)]

其中:

ax是重力在X轴方向产生的加速度

ay是重力在Y轴方向产生的加速度

az是重力在Z轴方向产生的加速度

2.陀螺仪

陀螺仪(角速度的传感器)是一种以角动量的守恒为工作原理的传感器,它是一个用于维持方向以及测量角度的设备,通常的陀螺仪分为Gimbal陀螺仪及MEMS陀螺仪两种类型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OpycytRh-1654962524715)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112126499.png)]

(1)Gimbal2型陀螺仪

如图3.4(A)所示的是传统的Gimba陀螺仪,其中在外面的三个环称作平衡环,而中间的是一个转子,它是在不停旋转的所以由于惯性的作用不会受到外界的影响,然而外面的三个环却会因为设备姿态的改变而跟着改变,这样就可以以此来检测所测物体的当前状态,陀螺仪里面的X、Y、Z三个轴就是外面的这三个环所在的轴;但是Gimbal陀螺仪有一个万向节锁24,即指当三个万向节中的两个轴发生重合的时候,会失去一个自由度的情况。为了消除这一个缺陷,一般的应用中就需要使用更多更昂贵的机械部件来进行协助补偿。

(b)MEMS陀螺仪

MEMS陀螺仪相比于体积较大的Gimbal陀螺仪有着更大的优势;如图3.4-B中的旋转盘,在直线0A上的两个点B和C,当磁盘顺时针旋转时,B位置的点会移动到C的位置,虽然这两个点的角度率是相同的,但是在C点的速度是比B点快,这说明存在一个作用力引起了这个速度的改变,而这个力被称为科里奥利力;MEMS陀螺仪的工作原理就是通过利用科里奥利力来对物体的角速度进行测量的。

(3)传感器选择

目前MEMS陀螺仪与加速度传感器由于其体积和价格上的优势,被广泛应用于电子设备中进行姿态检测,故本设计采用MEMS陀螺仪与加速度传感器,在选择传感器类型时需要综合考虑到器件的量程、灵敏度及供电电压,表3.1和表3.2列出了目前市场上主流的3轴MMS陀螺仪和加速度传感器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DS53m066-1654962524716)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112129481.png)]

通过上表参数,考虑到重量等各方面因素,本设计选取了加速度和角速度一体的MUP-6050芯片作为飞行器的姿态控制传感器。


本文采用的PU6500集成了三轴MEMS数字陀螺仪、数字加速度计,可以测量多旋翼无人飞行器运动状态下的三轴角速率®,0,0:、三轴加速度Q,a,a。陀螺仪测量的角速度数据动态响应速度快,长期使用时,存在较大的积分误差,因此,陀螺仪无法单独使用。加速度计是一种长期稳定的惯性器件。

解算姿态时,通过融合珈速度计与陀螺仪的数据,能够得到稳定的姿态角信息;计算速度和位置信息时,通过加速度计积分获得相应的速度与位置。

3.磁力计

三轴磁力计通过磁敏器件,获取地磁场在机体坐标系下的三维磁场矢量投影。通过磁力计对航向角解算时,无需进行积分运算,因此它是一种长期稳定的器件。

4.气压计

所采用的M$5611气压高度计可以获得高度信息。气压计通过测量大气压的值能够计算当前海拔高度。其中,气压与高度的关系如下所示:

image-20220611214923136

式中,R代表大气温度下限值、g代表重力加速度,P,为当前高度测得的大气静压,T6P,h,代表当前大气压的大气温度下限值、大气压力和重力势高度,B为温度垂直变化率。通过上述公式,能够计算得到当前高度。

5.GPS

GPS能够测量三轴速度、经度、维度以及海拔高度。在开阔的户外环境中,GPS能够达到2.5米的位置定位精度(采用差分GPS甚至可达到厘米级的定位精度),速度测量精度能够达到约0.1m/s。然而,GPS的海拔高度以及竖直方向速度测量精度较低,且附近有遮挡物时,由于信号折射等原因,GPS的位置定位精度会大幅下降,但速度测量精度影响较小。

综上所述,陀螺仪测量得到的三轴角速度数据通过积分能够得到短时精度较高的姿态角。然而,随着时间的推移,由于陀螺仪传感器存在零偏、随机游走以及温漂等误差存在,导致了其长期姿态角解算精度较低。因此,本文将加速度计、磁力计传感器测量得到的数据与陀螺仪测量得到的数据进行融合,进行姿态解算,从而得到长期稳定的姿态角信息。另外,GP$虽然能够测量速度、位置信息,但其测量精度与工作环境相关,存在延时大,输出频率低,信号不稳定的问题。此外,气压计虽然能够检测海拔高度,但由于大气易受干扰,短时间内无法反映真实的海拔高度。综上所述,四旋翼飞行器所配置的每一个传感器都存在一定的局限性,单一的传感器测量数据都无法满足无人机的导航精度要求,因此,需要进行优势互补,以得到长期解算稳定,短期解算精度高的目的。

六、传感器数据融合

多传感器信息融合(Multi-sensor Information Fusion,MSIF),就是利用计算机技术将来自多传感器或多源的信息和数据,在一定的准则下加以自动分析和综合,以完成所需要的决策和估计而进行的信息处理过程。

1.多传感器融合几个概念

硬件同步、硬同步:使用同一种硬件同时发布触发采集命令,实现各传感器采集、测量的时间同步。做到同一时刻采集相同的信息。

软件同步:时间同步、空间同步。

时间同步、时间戳同步、软同步:通过统一的主机给各个传感器提供基准时间,各传感器根据已经校准后的各自时间为各自独立采集的数据加上时间戳信息,可以做到所有传感器时间戳同步,但由于各个传感器各自采集周期相互独立,无法保证同一时刻采集相同的信息。

空间同步: 将不同传感器坐标系的测量值转换到同一个坐标系中,其中激光传感器在高速移动的情况下需要考虑当前速度下的帧内位移校准。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jt5ZYN3K-1654962524716)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112305811.png)]

2.基本原理

多传感器融合基本原理就像人脑综合处理信息的过程一样,将各种传感器进行多层次、多空间的信息互补和优化组合处理,最终产生对观测环境的一致性解释。在这个过程中要充分利用多源数据进行合理支配与使用,而信息融合的最终目标则是基于各传感器获得的分离观测信息,通过对信息多级别、多方面组合导出更多有用信息。这不仅是利用了多个传感器相互协同操作的优势,而且也综合处理了其它信息源的数据来提高整个传感器系统的智能化。

具体来讲,多传感器数据融合原理如下:

(1)多个不同类型传感器(有源或无源)收集观测目标的数据;

(2)对传感器的输出数据(离散或连续的时间函数数据、输出矢量、成像数据或一个直接的属性说明)进行特征提取的变换,提取代表观测数据的特征矢量Yi;

(3)对特征矢量Yi进行模式识别处理(如聚类算法、自适应神经网络或其他能将特征矢量Yi变换成目标属性判决的统计模式识别法等),完成各传感器关于目标的说明;

(4)将各传感器关于目标的说明数据按同一目标进行分组,即关联;

(5)利用融合算法将目标的各传感器数据进行合成,得到该目标的一致性解释与描述。

3.多传感器的前融合与后融合技术
3.1后融合算法:

每个传感器各自独立处理生成的目标数据。
每个传感器都有自己独立的感知,比如激光雷达有激光雷达的感知,摄像头有摄像头的感知,毫米波雷达也会做出自己的感知。
当所有传感器完成目标数据生成后,再由主处理器进行数据融合。

img

3.2前融合算法:

只有一个感知的算法。对融合后的多维综合数据进行感知。
在原始层把数据都融合在一起,融合好的数据就好比是一个Super传感器,而且这个传感器不仅有能力可以看到红外线,还有能力可以看到摄像头或者RGB,也有能力看到LiDAR的三维信息,就好比是一双超级眼睛。在这双超级眼睛上面,开发自己的感知算法,最后会输出一个结果层的物体。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D97VlAWg-1654962524717)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112305779.png)]

4.融合算法

对于多传感器系统而言,信息具有多样性和复杂性,因此对信息融合算法的基本要求是具有鲁棒性和并行处理能力。其他要求还有算法的运算速度和精度;与前续预处理系统和后续信息识别系统的接口性能;与不同技术和方法的协调能力;对信息样本的要求等。一般情况下,基于非线性的数学方法,如果具有容错性、自适应性、联想记忆和并行处理能力,则都可以用来作为融合方法。

多传感器数据融合的常用方法基本上可分为两大类:随机类和人工智能类。

4.1随机类

(1)加权平均法

信号级融合方法最简单直观的方法是加权平均法,将一组传感器提供的冗余信息进行加权平均,结果作为融合值。该方法是一种直接对数据源进行操作的方法。

(2)卡尔曼滤波法

主要用于融合低层次实时动态多传感器冗余数据。该方法用测量模型的统计特性递推,决定统计意义下的最优融合和数据估计。如果系统具有线性动力学模型,且系统与传感器的误差符合高斯白噪声模型,则卡尔曼滤波将为融合数据提供唯一统计意义下的最优估计。

卡尔曼滤波的递推特性使系统处理无需大量的数据存储和计算。但是采用单一的卡尔曼滤波器对多传感器组合系统进行数据统计时,存在很多严重问题,例如:① 在组合信息大量冗余情况下,计算量将以滤波器维数的三次方剧增,实时性难以满足。② 传感器子系统的增加使故障概率增加,在某一系统出现故障而没有来得及被检测出时,故障会污染整个系统,使可靠性降低。

(3)多贝叶斯估计法

将每一个传感器作为一个贝叶斯估计,把各单独物体的关联概率分布合成一个联合的后验概率分布函数,通过使联合分布函数的似然函数为最小,提供多传感器信息的最终融合值,融合信息与环境的一个先验模型以提供整个环境的一个特征描述。

(4)D-S证据推理法

该方法是贝叶斯推理的扩充,包含3个基本要点:基本概率赋值函数、信任函数和似然函数。

D-S方法的推理结构是自上而下的,分为三级:第一级为目标合成,其作用是把来自独立传感器的观测结果合成为一个总的输出结果(ID);第二级为推断,其作用是获得传感器的观测结果并进行推断,将传感器观测结果扩展成目标报告。这种推理的基础是:一定的传感器报告以某种可信度在逻辑上会产生可信的某些目标报告;第三级为更新,各传感器一般都存在随机误差,因此在时间上充分独立地来自同一传感器的一组连续报告比任何单一报告更加可靠。所以在推理和多传感器合成之前,要先组合(更新)传感器的观测数据。

(5)产生式规则

采用符号表示目标特征和相应传感器信息之间的联系,与每一个规则相联系的置信因子表示它的不确定性程度。当在同一个逻辑推理过程中,2个或多个规则形成一个联合规则时,可以产生融合。应用产生式规则进行融合的主要问题是每个规则置信因子的定义与系统中其他规则的置信因子相关,如果系统中引入新的传感器,需要加入相应的附加规则。

4.2.AI类

(1)模糊逻辑推理

模糊逻辑是多值逻辑,通过指定一个0到1之间的实数表示真实度(相当于隐含算子的前提),允许将多个传感器信息融合过程中的不确定性直接表示在推理过程中。如果采用某种系统化的方法对融合过程中的不确定性进行推理建模,则可以产生一致性模糊推理。

与概率统计方法相比,逻辑推理存在许多优点,它在一定程度上克服了概率论所面临的问题,对信息的表示和处理更加接近人类的思维方式,一般比较适合于在高层次上的应用(如决策)。但是逻辑推理本身还不够成熟和系统化。此外由于逻辑推理对信息的描述存在很多的主观因素,所以信息的表示和处理缺乏客观性。

模糊集合理论对于数据融合的实际价值在于它外延到模糊逻辑,模糊逻辑是一种多值逻辑,隶属度可视为一个数据真值的不精确表示。在MSF过程中,存在的不确定性可以直接用模糊逻辑表示,然后使用多值逻辑推理,根据模糊集合理论的各种演算对各种命题进行合并,进而实现数据融合。

(2)人工神经网络法

神经网络具有很强的容错性以及自学习、自组织及自适应能力,能够模拟复杂的非线性映射。神经网络的这些特性和强大的非线性处理能力,恰好满足多传感器数据融合技术处理的要求。在多传感器系统中,各信息源所提供的环境信息都具有一定程度的不确定性,对这些不确定信息的融合过程实际上是一个不确定性推理过程。神经网络根据当前系统所接受的样本相似性确定分类标准,这种确定方法主要表现在网络的权值分布上,同时可以采用学习算法来获取知识,得到不确定性推理机制。利用神经网络的信号处理能力和自动推理功能,即实现了多传感器数据融合。

再推荐几篇比较好的文章:

传感器融合是什么?及其类型和应用

多传感器融合(算法)综述


七、姿态解算,控制律运算

1.姿态解算

姿态解算(attitude algorithm),是指把陀螺仪,加速度计, 罗盘等的数据融合在一起,得出飞行器的空中姿态,飞行器从陀螺仪器的三轴角速度通过四元数法得到俯仰,航偏,滚转角,这是快速解算,结合三轴地磁和三轴加速度得到漂移补偿和深度解算。

2.姿态的数学模型坐标系

姿态解算需要解决的是四轴飞行器和地球的相对姿态问题。地理坐标系是固定不变的,正北,正东,正上构成了坐标系的X,Y,Z轴用坐标系R表示,飞行器上固定一个坐标系用r表示,那么我们就可以适用欧拉角,四元数等来描述r和R的角位置关系。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b57Df5dz-1654962524717)(https://ask.qcloudimg.com/http-save/yehe-1637364/27x4t51tdw.jpeg?imageView2/2/w/1620)]

姿态的数学表示

姿态有多种数学表示方式,常见的是四元数,欧拉角,矩阵和轴角。在四轴飞行器中使用到了四元数和欧拉角,姿态解算的核心在于旋转。姿态解算中使用四元数来保存飞行器的姿态,包括旋转和方位。在获得四元数之后,会将其转化为欧拉角,然后输入到姿态控制算法中。姿态控制算法的输入参数必须要是欧拉角。AD值是指MPU6050的陀螺仪和加速度值,3个维度的陀螺仪值和3个维度的加速度值,每个值为16位精度。AD值必须先转化为四元数,然后通过四元数转化为欧拉角。在四轴上控制流程如下图:

img

下面是用四元数表示飞行姿态的数学公式,从MPU6050中采集的数据经过下面的公式计算就可以转换成欧拉角,传给姿态PID控制器中进行姿态控制.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LUNv1YtA-1654962524717)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112316283.jpeg)]

3.PID控制算法

先简单说明下四轴飞行器是如何飞行的,四轴飞行器的螺旋桨与空气发生相对运动,产生了向上的升力,当升力大于四轴的重力时四轴就可以起飞了。四轴飞行器飞行过程中如何保持水平:我们先假设一种理想状况:四个电机的转速是完全相同的是不是我们控制四轴飞行器的四个电机保持同样的转速,当转速超过一个临界点时(升力刚好抵消重力)四轴就可以平稳的飞起来了呢?答案是否定的,由于四个电机转向相同,四轴会发生旋转。我们控制四轴电机1和电机3同向,电机2电机4反向,刚好抵消反扭矩,巧妙的实现了平衡, 但是实际上由于电机和螺旋浆本身的差异,造成我们无法做到四个电机产生相同的升力,这样飞行器起飞之后就会失去平衡。

img

PID控制器

PID控制器通过PID三个参数来对被控对象进行控制,是应用最广泛一种的控制器

比例§控制器

比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。

积分(I)控制器

在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的 或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积 分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。

微分(D)控制器

微分调节就是偏差值的变化率。使用微分环节能够实现系统的超前控制。如果输入偏差值线性变化,则在调节器输出侧叠加一个恒定的调节量。大部分控制系统不需要调节微分时间。因为只有时间滞后的系统才需要附加这个参数。如果画蛇添足加上这个参数反而会使系统的控制受到影响。

四轴飞行器中的控制器

目前四轴飞行器中所使用的是增量是PD控制器,下面以ROLL方向为例

img

测得ROLL轴向偏差

偏差 = 目标期望角度 – 传感器实测角度

DIF_ANGLE.X = EXP_ANGLE.X - Q_ANGLE.Roll;

复制

比例项计算

比例项输出 = 比例系数P * 偏差

Proportion = PID_Motor.P * DIF_ANGLE.x;

复制

微分计算

微分输出 = 微分系数 × 角速度

整合结果

ROLL方向总控制量 = 比例项输出+微分量输出

电机输出

Motor[2] = (int16_t)(Thr - Pitch - Roll - Yaw ); //M3
Motor[0] = (int16_t)(Thr + Pitch + Roll - Yaw ); //M1
Motor[3] = (int16_t)(Thr - Pitch + Roll + Yaw ); //M4
Motor[1] = (int16_t)(Thr + Pitch - Roll + Yaw ); //M2

复制

旋转规则

  • Roll方向旋转,则电机1电机2同侧出力,电机0电机3反向出力
  • Pitch方向旋转,则电机2电机3同侧出力,电机0电机1反向出力
  • Yaw方向旋转,则电机1电机3同侧出力,电机0电机2反向出力

现在由于各种公众号和百家号的盛行(无贬义),越来越多的军事爱好者能接触到一些更专业的知识,至少是更专业的名词,比如飞控,以个人观点看飞控已经基本脱离一般爱好者的爱好范畴进入到了工作领域。。。不过既然上篇文章说到抽时间可能会写一下飞控,今天是周末,我就随便闲扯两句飞控的控制律。

4.飞控是什么

飞控全名飞行控制系统,顾名思义,是个综合系统,包括软件与硬件部分。硬件部分好理解,最中心的是个飞控计算机(可以是实际的CPU+外围设备比如内存,比如国内某无人机使用的是powerPC系CPU;也可以是模拟电路,这个在几十年前非常常见,因为处理器性能不够,或者处理器压根就没发明出来);在飞机的各个部位则放置了各种传感器,比如测加速的的加速度计,测空速的空速管等等;最外面是执行机构,比如控制舵面的舵机就是用来调节飞机舵面偏角的。

软件部分则比较复杂,包括飞行员输入指令处理,控制律计算,容错处理等等,无人机的话还要考虑地面站通信等等,由于飞控软件功能很多,一般会利用一个实时操作系统保证运行的可靠(我们当年给固定翼无人机用的是vxworks,小飞机的话用不到这么高端昂贵的玩意,记得当时有很多课题组流行用ucosII做四旋翼飞控开发,现在不了解行情了);飞控软件中最核心的任务是控制律计算,飞控计算机根据各个传感器回传的数值首先进行解算,比如当前姿态角是多少,然后根据预先编好的控制律进行运算,计算得出飞机各个舵面偏角后发送到执行机构(舵机),然后就能看见飞机的舵面发生了偏转,完成飞行员期望的动作。

5.控制律是什么

控制律实质上是一组公式,

u=f(x,r)

其中x是系统状态,一般来自传感器反馈,比如x可以是当前飞机姿态角、飞机速度、飞机高度等等;r叫做参考信号,可以来自飞行员,也可以来自自动驾驶仪,控制律就是f(),本质上是一组数学公式,根据实时的x和r来计算得出u,这里的u就是控制器输出,比如舵面偏角,然后计算机通过数据总线发送u到各个执行机构完成本拍(数字控制里面通常把一个控制周期叫一拍)的控制,到了下个周期(下一拍),继续这个流程完成下个周期的控制。换句话说,飞行员开的实际上是个“虚拟机”,现代飞控系统下飞行员的杆量并不意味着舵面偏了这么多角,反过来,飞行员保持操纵杆中立也不意味着舵面没有发生动作,这一切都是为了降低飞行员操作的难度,保证飞行安全。

举例:最简单的线性控制是u=Kx,K是常系数,比如这个是飞机的纵向控制律,x是飞机当前迎角,输出的u是升降舵偏角,假设K=0.5,那就意味着如果反馈攻角是10度的话操纵升降舵偏角到5度;一般来说这种简单粗暴控制的结果就是控制发散,机毁人亡。。。所以这就涉及到下一个话题,怎么设计控制律

6.控制律怎么设计

在控制理论中,控制的核心问题是稳定性,稳定性一个通俗但不严谨的表述是系统受到扰动后会自发回到平衡状态,如果系统本身不稳定,那么就需要设计控制律构造一个新系统=老系统+反馈控制律,控制律需要保证这个新系统是稳定的。控制理论自从1940s创立,发展到今天有了非常多种稳定性分析方法,但最最重要的理论是1890s由俄国力学家李雅普诺夫创立的,具体细节就不讲了,有兴趣的话可以参考百度百科或wiki。但不管根据哪种分析方法,都需要知道系统的数学模型,在飞控设计中最常见的是飞行器的六自由度(6DOF)模型,六个自由度通常认为是飞行器的质心位移自由度(3个)和绕质心旋转的自由度(也是3个)。6DOF模型说白了是一堆微分方程,根据牛顿力学和空气力学建立出来的,用来描述飞行器各个舵面偏角和推力到姿态、速度、高度、角度的关系。

img教科书上提供的标准6DOF模型

可以看出来,就算是最简单的6DOF模型已经相当复杂了,里面各个变量相互耦合(比如偏航和滚转这两个通道会干扰到对方)、非线性(各种三角函数)、再考虑到大气温度和密度的变化实际上里面的各项系数并非常数。。。。

为了方便飞控开发,工程中一个常见方法是首先把非线性的6DOF模型线性化,再利用线性控制理论进行设计(主要是非线性控制理论本身就很魔幻,相反,线性控制发展到今天已经比较成熟了)。线性化中最常见的做法是把这一大堆非线性方程在一个工作点(比如飞机高度10000ft,速度0.6M)附近做小信号处理,即认为在该工作点附近6DOF模型是线性的,然后得出雅可比(Jacobian)矩阵,那么在设计时就认为这个Jacobian矩阵就代表了飞行器的动力学模型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UqypSwRj-1654962524719)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112321921.webp)]F-16的Jacobian矩阵,虽然线性化了依然复杂到爆

得出了小信号后,飞机的模型就变成了

dx/dt=Ax(t)+Bu(t)

y(t)=Cx(t)+Du(t)

ABCD就是图里面的四个矩阵,从图上可以看出F-16模型的输入量有四个,分别是\delta_{th}:推力; \delta_{e}:升降舵偏角;\delta_{a}:副翼偏角;\delta_{r}:方向舵偏角。系统状态x则是一堆动力学变量,比如\alpha是飞机攻角;而系统输出y则是飞机能“看到”的变化,比如攻角\alpha同样也是飞机输出。

获得了模型的下一步就是控制律开发,同样是以线性控制律u=Kx为例,带入到原系统后系统方程转写为

dx/dt=Ax(t)+Bu(t)=Ax(t)+BKx(t)=(A+BK)x(t)

y(t)=Cx(t)+Du(t)

那么我们设计K就要保证这个“新系统” dx/dt=(A+BK)x是稳定的,同时有较快的响应速度,尽量不要有超调和震荡;根据线性系统理论,系统稳定的需求是矩阵A+BK所有特征根在复平面的左半平面(或者说A+BK是Hurwitz的),或者说所有特征根的实部一定要小于0;对震荡则是尽量压低特征根的虚部模值,如果特征根没有虚部那么系统的相应也不会出现任何震荡,虽然可能会牺牲一定的响应速度但至少飞机不会进入帕金森状态。。。

7.飞机模型是怎么得到的

简单回答就是吹风洞,把所有可能的工况(各种高度速度的组合)全吹一遍。。。从大量的风洞数据中可以得到各项气动导数,再通过一定的换算便可以得出飞行器6DOF模型(非线性版),接着做线性化和控制律设计

这一项说起来简单,但实际操作成本非常高,需要大量的人力物力和时间才能得到一个飞机比较详尽的模型

8.控制律怎么验证

利用同样的设计流程,一般来说你会得到一组矩阵K,那么下一步就是验证控制律,得益于数值仿真技术的发展,飞控开发人员不需要把程序烧进真飞机里面做测试,不然随便摔几架就坐上去古拉格的专车了。。。上古时代开发人员往往利用Fortran自行编写仿真程序,本身这门语言也够上古的了,有兴趣的可以搜一下,现在则有了各项专用软件可以有效提高开发效率,比如做控制开发基本离不开MATLAB,在Simulink环境下也很容易实现飞行器数值仿真,用Fortran的话甚至连数值算法都要自己写(可以简单理解为实现一个basic版Simulink,比如写个RK4啥的)(顺便说下Fortran至今在某些大学中依然是必修课,而且很多观点认为虽然Fortran不够傻瓜化,但就像手动挡一样,用的好的话比自动挡的MATLAB高端大气)

img飞控开发流程

上图说明了飞控的基本迭代开发流程,在得到飞行器风洞数据后能够搭一个该款飞机仿真模型出来,然后开发人员完成设计后丢到仿真里面去跑,看看稳不稳定、性能好不好,再根据仿真结果重新调整控制律,直到满意后丢到真飞机上飞,再根据真实数据去做设计调整。所以一个飞机的飞控设计需要大量的风洞测试和试飞测试,通常时间是以年为单位的。

img非常简单的飞行器俯仰增稳系统

9.目前的飞控发展

上面只是讲了一个基于线性化6DOF模型的最简单的控制设计流程,实际上6DOF模型本身就存在过于简单的问题,比如6DOF模型的假设前提是飞机是个刚体;同时线性化+特征根这种手段也显得比较简单粗暴,没有利用好控制理论近3、40年的发展成果,下面两张图就是一篇17年的文章,按照国内标准属于1区文章,虽然也是利用的线性化模型,但分析方法比较“时髦”(虽然在理论界也是落伍技术了),如果不去考虑一帮中国人去开发F-18的飞控是怎样的一种国际精神的话。。

img17年论文的控制律,至少看起来不复杂

img17年论文的稳定性分析,这才是文章大头

10.一些闲话

本文的主要写作时间是在思考怎么把这么一坨东西尽量通俗易懂的讲出来,算是提供一些冷知识给感兴趣的朋友们。同时文章也算是对我过去多年工作的一个小结,现在我已经脱离了飞控这个行业,不过回忆起当年刚进lab时和师兄一起约风洞,处理数据,跑仿真做实验写paper的日子也是非常开心,感谢他们当年领我入门,祝他们在各自的行业中取得更大辉煌。

a). 本文的图片大部分来自 1992年版,这本书也是我读的第一本专业飞控书,写的比较详尽,照顾初学者,但要求读者至少掌握线性系统理论的基础知识。

b). 关于控制系统的知识可以参考本站up:DR_CAN的视频


八、避障常用算法

首先我们要区分避障算法和路径规划算法。在讲避障算法之前,我们假定机器人已经有了一个导航规划算法对自己的运动进行规划,并按照规划的路径行走。避障算法的任务就是在机器人执行正常行走任务的时候,由于传感器的输入感知到了障碍物的存在,实时地更新目标轨迹,绕过障碍物。

1.Bug算法

Bug算法应该是最简单的一种避障算法了,它的基本思想是在发现障碍后,围着检测到的障碍物轮廓行走,从而绕开它。Bug算法目前有很多变种, 比如Bug1算法,机器人首先完全地围绕物体,然后从距目标最短距离的点离开。Bug1算法的效率很低,但可以保证机器人达到目标。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uax3oAwp-1654962524720)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112201110.png)]

Bug1算法示例

改进后的Bug2算法中,机器人开始时会跟踪物体的轮廓,但不会完全围绕物体一圈,当机器人可以直接移动至目标时,就可以直接从障碍分离,这样可以达到比较短的机器人行走总路径。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jvJBcVI7-1654962524720)([外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-API8Is8v-1654962597688)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112201218.png#pic_center)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MawuOWN7-1654962591798)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112201218.png#pic_center)]
[外链图片转存中…(img-lTNuLk3k-1654962587599)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4bVKrXpM-1654962582894)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112201218.png#pic_center)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6OQ9ptVN-1654962577569)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112201218.png#pic_center)]
)]

Bug2算法示例

除此之外,Bug算法还有很多其他的变种, 比如正切Bug算法等等。在许多简单的场景中,Bug算法是实现起来比较容易和方便的,但是它们并没有考虑到机器人的动力学等限制,因此在更复杂的实际环境中就不是那么可靠好用了。

2.势场法(PFM)

人工势场避障控制法,是一种比较简单又新颖的做法,是另一种仿生学,仿照物理学中电势和电场力的概念,建立机器人工作空间中的虚拟势场,按照虚拟势场力方向,实现局部路径规划。通过构造目标位姿引力场和障碍物周围斥力场共同作用的人工势场,来搜索势函数的下降方向,然后寻找无碰撞路径。听起来很玄乎,但是早已经有应用产品了,Khatib曾应用于移动机器人的导航上。但是并没有得到大规模应用。因为即使对于简单环境很有效,但是都是在静态的研究中得出的,而没有考虑障碍物的速度和加速度的影响,所以在动态避障控制中,人工势场法避障控制不是很理想。因为在复杂的多障碍环境中,不合理的势场数学方程容易产生局部极值点,导致机器人未到达目标就停止运动,或者产生振荡、摆动等现象。另外,传统的人工势场法着眼于得到一条能够避障的可行路径,还没有研究出什么最优路径。

实际上,势场法不仅仅可以用来避障,还可以用来进行路径的规划。势场法把机器人处理在势场下的 一个点,随着势场而移动,目标表现为低谷值,即对机器人的吸引力,而障碍物扮演的势场中的一个高峰,即斥力,所有这些力迭加于机器人身上,平滑地引导机器人走向目标,同时避免碰撞已知的障碍物。当机器人移动过程中检测新的障碍物,则需要更新势场并重新规划。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GY9Y68Iu-1654962524721)([外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F4rtLuEw-1654962615385)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112202782.png#pic_center)]
)]

上面这个图是势场比较典型的示例图,最上的图a左上角是出发点,右下角是目标点,中间三个方块是障碍物。中间的图b就是等势位图,图中的每条连续的线就代表了一个等势位的一条线,然后虚线表示的在整个势场里面所规划出来的一条路径,我们的机器人是沿着势场所指向的那个方向一直行走,可以看见它会绕过这个比较高的障碍物。最下面的图,即我们整个目标的吸引力还有我们所有障碍物产生的斥力最终形成的一个势场效果图,可以看到机器人从左上角的出发点出发,一路沿着势场下降的方向达到最终的目标点,而每个障碍物势场表现出在很高的平台,所以,它规划出来的路径是不会从这个障碍物上面走的。

一种扩展的方法在基本的势场上附加了?另外两个势场:转运势场和任务势场。它们额外考虑了由于机器人本身运动方向、运动速度等状态和障碍物之间的相互影响。

转动势场":考虑了障碍与机器人的相对方位,当机器人朝着障碍物行走时,增加斥力, 而当平行于物体行走时,因为很明显并不会撞到障碍物,则减小斥力。任务势场:则排除了那些根据当前机器人速度不会对近期势能造成影响的障碍,因此允许规划出 一条更为平滑的轨迹。

另外还有谐波势场法等其他改进方法。势场法在理论上有诸多局限性, 比如局部最小点问题,或者震荡性的问题,但实际应用过程中效果还是不错的,实现起来也比较容易。

3.向量场直方图(VFH)

它执行过程中针对移动机器人当前周边环境创建了一个基于极坐标表示的局部地图,这个局部使用栅格图的表示方法,会被最近的一些传感器数据所更新。VFH算法产生的极坐标直方图如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x3OOvYTu-1654962524721)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112204261.png)]

图中x轴是以机器人为中心感知到的障碍物的角度,y轴表示在该方向存在障碍物的概率大小p。实际应用的过程中会根据这个直方图首先辨识出允许机器人通过的足够大的所有空隙,然后对所有这些空隙计算其代价函数,最终选择具有最低代价函数的通路通过。

代价函数受三个因素影响: 目标方向、机器人当前方向、之前选择的方向,最终生成的代价是这三个因素的加权值,通过调节不同的权重可以调整机器人的选择偏好。VFH算法也有其他的扩展和改进,比如在VFH+算法中,就考虑了机器人运动学的限制。由于实际底层运动结构的不同,机器的实际运动能力是受限的,比如汽车结构,就不能随心所欲地原地转向等。VFH+算法会考虑障碍物对机器人实际运动能力下轨迹的阻挡效应,屏蔽掉那些虽然没有被障碍物占据但由于其阻挡实际无法达到的运动轨迹。我们的E巡机器人采用的是两轮差动驱动的运动形式,运动非常灵活,实际应用较少受到这些因素的影响。

具体可以看 一下这个图示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOoRFDD0-1654962524722)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112204219.png)]

类似这样传统的避障方法还有很多,除此之外,还有许多其他的智能避障技术,比如神经网络、模糊逻辑等。

神经网络方法对机器人从初始位置到目标位置的整个行走路径进行训练建模,应用的时候,神经网络的输 入为之前机器人的位姿和速度以及传感器的输 入,输出期望的下一目标或运动方向。

模糊逻辑方法核心是模糊控制器,需要将专家的知识或操作人员的经验写成多条模糊逻辑语句,以此控制机器人的避障过程。 比如这样的模糊逻辑:第一条,若右前方较远处检测到障碍物,则稍向左转;第 二条,若右前方较近处检测到障碍物,则减速并向左转更多角度;等等。

避障过程中存在哪些问题?

4.模糊逻辑控制

不必创建可分析的环境模型,目前模糊逻辑方法在解决机器人避开障碍物问题上己经有了大量的研究工作。另一个独特优点也让用专家知识调整规则成为可能,因为规则库的每条规则具有明确的物理意义。在模糊逻辑控制避障法中,模糊控制规则是模糊控制的核心。当前研究工作的新趋势之一是它的渐增本质,特别是在模糊控制规则的自动生成方面,即连同自动模糊数据获取,给予算法在线模糊规则学习能力,数据获取和规则生成均自动执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sdWck4p8-1654962524722)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112205264.png)]

5.人工神经网络避障控制法

人工神经网络是由许多单元(又称神经元),按照一定的拓扑结构相互连接而成的一种具有并行计算能力的网络系统,它具有较强的非线性拟合能力和多输入多输出同时处理的能力。用在机器人上,就是通过模拟人脑神经网络处理信息的方式,从另一个研究角度来获取具有人脑那样的信息处理能力。对于智能机器人来说,采用人工神经网络进行信息融合有一个最大优势,即可大规模地并行处理和分布式信息存储,具有良好的自适应、自组织性,以及很强的学习功能、联想功能和容错功能,接近人脑的信息处理模式。

6. 栅格法避障控制法

于用启发式算法在单元中搜索安全路径。赋予每个栅格一个通行因子后,路径规划问题就变成在栅格网上寻求两个栅格节点间的最优路径问题。搜索过程多采用四叉树或八叉树表示工作空间。栅格法以基本元素为最小栅格粒度,将地图进行栅格划分,比如基本元素位于自由区取值为0,处在障碍物区或包含障碍物区为1,直到每个区域中所包含的基本单元全为0或全为1,这样在计算机中就较容易建立一幅可用于路径规划的地图。栅格粒度越小,障碍物的表示会越精确,也就更好避障。但往往会占用大量的储存空间,而且算法也将按指数增加。

九、路径规划算法

在规划模块中首先明确经常容易混淆的几个概念:

运动规划Motion Planning

路径规划Path Planning

轨迹规划Trajectory Planning

1.路径规划+轨迹规划=运动规划

2.路径规划:已知几何约束的情况下(障碍物、地图信息),求解一条路径,也即是找到一条无碰撞的路径。

**3.轨迹规划:已知运动学约束(时间约束、速度约束等)**情况下求解轨迹。

当然也有的路径规划算法在搜索路径过程中也将动力学约束(Hybrid A*)考虑进去,本系列的所涉及的规划算法主要是路径规划,也会涉及一部分轨迹规划。

1. 作用

**路径规划(path planning)**目的是为了寻找成本最小的路径, 需要给出的条件包括: 地图, 起始地点, 目标地点, 成本函数.

2. 组成

img路径规划组成

路径规划主要由两部分组成,前端是路径搜索,后端是**轨迹规划,**最后生成一条机器人可执行的路径。

**路径搜索——**在地图中,搜索出一条避开障碍物的轨迹;

**轨迹规划(优化)——**对搜索到的轨迹进行优化,从而符合机器人的运动学和动力学约束。

img规划示意图

如上图所示,a路径为前端路径搜索得出的,为一条无碰撞的路径,b为a路径经过轨迹规划过的路径,该路径满足运动学和动力学约束,为一条机器人可执行的路径。

3. 分类

路径规划(搜索)的算法主要可分成这三类,后续的章节也是按照以下的顺序进行介绍的。

3.1 基于搜索的算法

DIjkstra、A*、JPS

3.2 基于采样的算法

PRM、RRT、RRT*

3.3 满足动力学约束的搜索算法

Hybrid A*

更多的内容可看下面的介绍:

焉知科技:路径规划五种算法简述及对比

路径规划算法总结


十、SLAM

SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图、同时定位与地图构建。

「同时定位与地图构建」这几个词,乍一听起来非常拗口,为了不在一开始就吓跑读者,我们先不对其进行专业的解释,用一个日常生活中形象的例子来进行说明。

1.初步认识SLAM

我们知道现在有不少家用的扫地机器人,可以代替人对室内进行自动清扫。早期的扫地机器人并不智能,它只是具有简单的避障功能,在室内随机游走,遇到障碍物就转弯,这样会导致有很多地方会漏掉,扫地效率非常低。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i0i75XAk-1654962524723)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112338845.jpeg)]

而现在随着SLAM技术在扫地机器人中的应用,现在的扫地机器人已经变的非常智能,可以通过自身的传感器对室内进行扫描建图,根据当前的定位进行Z字形规划清扫,还能实现自动回充、断点续扫等高级功能。

根据前面介绍,我们总结一下,要想真正实现智能的清扫,扫地机器人至少需要知道以下几件事情:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
、SLAM

SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图、同时定位与地图构建。

「同时定位与地图构建」这几个词,乍一听起来非常拗口,为了不在一开始就吓跑读者,我们先不对其进行专业的解释,用一个日常生活中形象的例子来进行说明。

1.初步认识SLAM

我们知道现在有不少家用的扫地机器人,可以代替人对室内进行自动清扫。早期的扫地机器人并不智能,它只是具有简单的避障功能,在室内随机游走,遇到障碍物就转弯,这样会导致有很多地方会漏掉,扫地效率非常低。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i0i75XAk-1654962524723)(https://raw.githubusercontent.com/xkyvvv/blogpic3/main/img/202206112338845.jpeg)]

而现在随着SLAM技术在扫地机器人中的应用,现在的扫地机器人已经变的非常智能,可以通过自身的传感器对室内进行扫描建图,根据当前的定位进行Z字形规划清扫,还能实现自动回充、断点续扫等高级功能。

根据前面介绍,我们总结一下,要想真正实现智能的清扫,扫地机器人至少需要知道以下几件事情:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-wLgtehdv-1713475063758)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/468904
推荐阅读
相关标签
  

闽ICP备14008679号