四旋翼飞行器避障系统基础_无人机避障使用slam相比于人工势场法的优点-程序员宅基地

技术标签: 2024年程序员学习  无人机  

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

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

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

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

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

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

正文

(b)其次,在调整飞行器的水平的时候,如果需要改变四个电机中某一个或多个电机的转速时,会造成飞行器自旋因为四个电机反扭矩的无法相互抵消,所以如果要改变某一个电机的转速就需要同步调整与之在同对角线上的一个电机的转速,使其产生的总扭矩可以不变。例如飞行器由于某种外界干扰造成右倾,这时我们就需要增加电机乙的转速以增加它的升力,然而这一行为会造成整个飞行器的逆时针力矩增加从而开始自旋,所以在增加电机乙的转速的同时还需要同步的减小电机丙的转速,以使得其维持力矩的平衡。

()最后,在以后升级更智能的自动避障系统时,可能需要维持高度的稳定,保持与障碍物的安全距离等功能,这时就需要利用某些传感器来检测飞行器与地面和障碍物的距离,为解决这一问题,我们可以选用的方案是使用红外测距和GPS技术,其中GPS和红外测距的分工是不同的,红外测距主要负责室内没有GPS信号的地方,且只适合低空(030cm)飞行时,而在室外可用GPS定位,且再超出地面30cm时利用卫星进行粗略的高度定位以维持高度不变。

3.自动避障原理

本文以STM32单片机作为控制核心、红外反射式传感器作为检测元件,设计了一个自动避障飞行器。要求飞行器在自动行驶过程中能够及时、灵活地避开障碍物。

具体的避障要求如下:如果飞行器前方无障碍物,飞行器继续直飞(保持原飞行指令不变);如果仅在飞行器右方有障碍物靠近,飞行器向左拐弯:如果仅在飞行器左方有障碍物靠近,飞行器向右拐弯;如果飞行器直前方有障碍物,飞行器后退并保持安全距离悬停。

该系统主要由单片机、感测模块、电源模块、驱动模块等组成。具体工作原理为:首先,利用感测模块检测是否有障碍物,如果检测到障碍物,将障碍物位置信号送入单片机;然后,由单片机进行程序处理,根据不同的障碍物位置信号输出相应的控制信号,控制电机驱动模块;最后,由电机驱动电路输出不同PWM信号,使得左边两个和右边两个电机产生速度差,从而实现转向,最终达到自动避障的目的。

三、四轴飞行器硬件系统设计

飞行器的整个控制系统包括电源功能模块、遥控接收模块、惯性测量模块

(姿态传感器)、主控制器及接口与扩展等部分1617.系统如图3.1所示。

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

电源模块主要作用是给其他多个模块进行电力供应,利用电源模块,我们把锂电池供给的3.7V电压转换成3.3V的电压供给给其余各个模块使用。

需要说明的一点是,在遥控器上我们设计了锂电池充电电路,充电模块的电力直接由外界USB供给。

遥控接收模块则主要来实现用户操作指令的接受,一共有四个信号,分别是副翼(roll)、升降(pitch)、油门(thro)、旋转(yaw)的指令;陀螺仪和加速度传感器作为飞行器姿态检测部分,通过不断检测飞行器的角加速度和线加速度,从而判断出飞行器的当前姿态,然后与目标姿态进行比较从而形成闭环控制。

主控制芯片负责处理遥控接收模块接收到的飞行指令和MPU-6050传感器采集到的数据,将这两个数据进行融合,经过PID控制运算,得出电机的控制量信息,再以PWM波的形式输出以驱动螺旋桨电机。

四、避障传感器种类

用来采集运动时环境中障碍物信息的环境信息采集系统是自动避障系统的重要组成部分。全面、精确信息的获取,能够增强智能小车的自动避障性能,同时必须考虑信息处理的及时性和难易程度。视觉传感器、激光雷达测距传感器、红外测距传感器和超声波测距传感器等是主要的几种应用于智能小车自动避障的探测器。

1.超声波传感器

超声波测距传感器的工作机理是发射一定频率的信号,通过检测被物体反射、散射回来的信号,判断前方是否有物体3.超声波拥有比较好的传播方向性,能够沿直线传播,且穿透力比较强,能够得到相对集中的超声波能量。超声波频率的增加,导致其绕过障碍物能力不断减弱以及反射能力逐渐增强38.超声波测距传感器具有测距迅速、处理信息简单、控制实时、计算方便、价格低廉等特点,被广泛应用于智能小车测距、测速、定位和环境建模中。

1.1超声波测距原理

相位探测法、渡越时间探测法和声波幅值探测法是超声波的三种主要的测距方法

相位探测法,通过计算返回波与发射波间隔的相位来判断距离;声波幅值探测法,通过计算二者间相差的幅度,判断距离;渡越时间探测法,通过计算两者间的时间延误,判断距离。相位探测法测量精确度比较高,但是探测范围小。声波幅值探测法的探测精度受反射波的影响比较大。论文采用超声波测距最常用的方法一渡越时间探测法。下面主要介绍超声测距的渡越时间探测法原理。

渡越时间探测法,指的是超声波发生器往某个方向发射超声波,计时开始于发射的时间点,此后超声波沿直线传播,当超声波撞击到物体时就被反射回来,当超声波接收器接收到返回来的回波时计时停止42.超声波测距传感器与物体之间的距离d可以由公式(2.1)得出,其中℃为空气中超声波沿直线传播的速度,t为计时器所记录的时间。

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

在实际环境中温度和湿度会对超声波的传播速度c造成影响,但是由于其变化很小,并不影响智能小车自动避障对测距的要求,所以设计中c取常值,即c=340m/s。图2.2为超声波完成测距过程的原理图

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

1.2超声波传感器测距的优缺点

利用超声波测距传感器测距具有如下优点:

(1)环境适应能力强。与视觉传感器相比较,超声波传感器能够在亮度低、有灰尘,煤烟等不理想的环境下,保持良好的测距性能,确保及时无误地采集到距离信息,然后将数据发送到信息处理设备。

(2)对色彩、光照度不敏感。超声波测距传感器可识别玻璃,抛光体等能透过光线和表面粗糙的物体。

(3)与视觉传感器相比超声波传感器可以得到距离信息。视觉传感器只能检测到物体的存在,而不能检测到障碍物和智能小车之间的距离,超声波传感器在检测到有物体的同时也可以得到与物体的距离信息。

(4)探测速度快。虽然在空气中光速比声速快,但视觉传感器较超声波传感器而言并没有速度上的优势。由于视觉传感器采集到的图片信息还需要经过图像识别过程,这个过程需要比较长的时间,制约了智能小车采集信息的速度。

(5)和视觉传感器、激光测距仪相比,超声波传感器还具有构造简易、占空间小、价格便宜,数据处理简单可靠,不容易损坏等优点。

所以超声波测距传感器,易于小型化和集成化,这更适合智能小车微型化的要求。

当然,利用超声波测距传感器测距也不能避免以下缺点:

(1)抗干扰性差:超声波能量较强,因此多个超声波传感器一起使用会相互干扰。

即使只使用一个超声波传感器,仍存在受声波的反复反射而造成干扰误差。

(2)由于超声波的波束角比较大,对物体位置的检测不够准确。

(3)单个超声波传感器的稳定性不理想,近距离测距有盲区45。

(4)超声波测距只能检测障碍物的距离数据,无法得到障碍物的尺寸和形状等信息。

综上所述,超声波测距传感器广泛应用在智能小车自动避障、汽车倒车雷达测距,物位(液位)探测,超声波开关和安防监控等相关领域4.但是超声波测距传感器不适用于需要提供尺寸和形状的应用环境,多个超声波传感器不能同时同方向近距离使用。

2.红外测距传感器

红外测距传感器是利用红外线反射特性制成的测距传感器。红外线属于光波的一种,也有其特殊性,具有光波反射传输的物理性质。红外测距通过信号发射源发射信息并反馈回来得到距离信息。由于红外测距具有测量精确度高、速度快等优势,所以红外测距技术被广泛应用于智能小车自动避障、地形测量、坦克飞机等对打击物的测量、通信卫星测量等领域。

2.1红外测距传感器的原理

红外测距是利用三角测量原理实现测距的。图2.3为红外测距的原理图,首先红外发射器发射红外光束,发射的红外光速是成一定角度的,当红外光束碰到物体时,会被物体反射回来,CCD检测器能够检测到返回的光束,而获得偏移值,利用三角定理,可得到如公式(2.2)的几何关系式。

image-20220611204907009

其中,D为红外传感器到日标物体的距离,f为滤镜的焦距,L为偏移值,X为中心距,a表示发射角,c表示红外线在空气中的传播速度(c=3*108m/s),红外测距的原理如图2.3所示,

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

由图23可知,当目标物体距离红外传感器D足够小时,偏移值L会非常的大,甚至大于CCD检测器的检测最大值。同样当D值很大时,L则很小。也就是说是否能够获得偏移值L的关键在于滤镜的焦距。

2.2红外测距传感器测距的优缺点

利用红外测距传感器测量距离具有的优点如下:

(1)抗干扰能力强。同时同方向使用多个红外传感器时不会相互干扰。

(2)测量精度高。红外测距传感器与超声波测距传感器相比,具有测量精度的优势。

(3)测距速度快。由于光速比声音在空气中传播的速度快,所以利用红外光线的反射原理制成的红外测距传感器比利用声波反射原理制成的超声波测距传感器测距,反应时间短。

(4)适用于长距离测距。由于红外线在空气中传播具有不扩散的性质,并且它在穿透物体时对折射率的影响不大,所以红外测距经常被用在距离较大的测量任务中。

(5)具有更强的发射和接收能力。因为自然界中只要温度高于绝对零度的物体都会反射红外线,所以利用红外反射原理制成的测距传感器发射和接收能力优越。

红外测距传感器测距的主要缺点是强光直射的环境会对测量精度造成影响。

3.激光雷达测距传感器

市面上有多种类型的激光传感器,从测距原理上大致可以分为四类:脉冲法,相位法,干涉法和三角法。其中前两种方法都是根据激光的飞行时间来换算为距离。干涉法是通过的相干光源产生的干涉现象中的干涉条纹数量来计算距离。三角法则是通过三角关系来计算距离。三角测距雷达的结构如下图2-7所示:

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

式中的f和s己知,则可以通过像素点的位置来计算出该点的距离值q。

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

上式对x求导,可以得到:

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

从上式可以得到,三角测距原理的激光雷达的测量噪声会随着测量距离的增加而增加,噪声水平与距离平方成正比。三角测距雷达的原理简单,成本低廉,但是测量精度会随着测量距离而降低,因此,三角测距原理的激光雷达适用于中短距离测量。市面上的低成本商用激光雷达多采用此方案。将三角测距的模块在一个平面中进行回转,就可以生成周围场景的平面扫描图。激光雷达实物图如图2-8所示。

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

图2-8(a)基于三角测距原理的激光雷达测距范围多在20米以内,而(b)中的雷达测距范围可达100米甚至更远。前者的数据采样频率大约为4000Hz,后者的采样频率可达300000Hz。当然前者的售价也为大大低于后者。

4.相机

在使用相机之前,先要对相机进行标定。其目的是建立起世界坐标中,相机坐标系和图像坐标系这三者之间的转换关系。首先介绍相机坐标系与图像坐标系之间的关系。

像素坐标系是一个二维坐标系,其一般定义是以图像的左上角为原点O,水平向右为u轴正方向,垂直向下为y轴正方向。

图像坐标系是一个二维坐标系,其一般定义是以光轴和像平面的交点为原点O1,水平向右为x轴正方向,垂直向下为y轴正方向。单位为物理单位,比如:米。

相机坐标系是一个三维坐标系(Xc,Yc,Zc),其一般定义是以相机的光心为原点Oc, Zc轴和相机的光轴重合,Xc轴和Y。轴分别平行于图像坐标系的和v轴。

相机坐标系和像素坐标系如下图2-4(a)所示,像素坐标和图像坐标系的关系如下图2-4(b)所示:

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

上图2-4中,(o,vo)为相机坐标系的Z轴和图像平面的交点,称为主点,以像素为单位。

在已知像素的物理尺寸后,可以建立起图像坐标系中的点和像素坐标系中的点的对应关系。图像坐标系下的点(x,y)变换到像素坐标系下(u,y)点的公式如下式(2-5)、(2-6)

所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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的视频


八、避障常用算法

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

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

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
og.csdnimg.cn/img_convert/8cf845803f73f699b8b18fc2f8bad079.webp?x-oss-process=image/format,png)17年论文的控制律,至少看起来不复杂

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

10.一些闲话

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

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

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


八、避障常用算法

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

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_84281693/article/details/137946966

智能推荐

从零开始搭建Hadoop_创建一个hadoop项目-程序员宅基地

文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目

心脏滴血漏洞HeartBleed CVE-2014-0160深入代码层面的分析_heartbleed代码分析-程序员宅基地

文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析

java读取ofd文档内容_ofd电子文档内容分析工具(分析文档、签章和证书)-程序员宅基地

文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat

基于FPGA的数据采集系统(一)_基于fpga的信息采集-程序员宅基地

文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集

微服务 spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL-程序员宅基地

文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception

邻接矩阵-建立图-程序员宅基地

文章浏览阅读358次。1.介绍图的相关概念  图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为:  G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图

随便推点

MDT2012部署系列之11 WDS安装与配置-程序员宅基地

文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc

python--xlrd/xlwt/xlutils_xlutils模块可以读xlsx吗-程序员宅基地

文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题_unresolved attribute reference 'find_element_by_id-程序员宅基地

文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver

DOM对象转换成jQuery对象转换与子页面获取父页面DOM对象-程序员宅基地

文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象

什么是算法?-程序员宅基地

文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法

【网络安全】网络安全的标准和规范_网络安全标准规范-程序员宅基地

文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范