多旋翼自主飞行器

[复制链接]

150

主题

445

帖子

1900

积分

审核员

Rank: 9Rank: 9Rank: 9

积分
1900
查看: 2470回复: 0 发表于 2020-9-1 10:41:20   只看该作者
旋多翼自主飞行器由RL78/G13MCU板(芯片型号R5F100 LEA),STM32单片机模块(加SD卡),CMOS摄像头,A2212/13T新西达电机。STM32单片机输入信号到RL78/G13MCU板,启动飞行器和CMOS摄像模块,RL78/G13MCU飞控模块矫正飞行器在空中的姿态,实现悬停,前进,后退等功能,CMOS模块将拍摄的视频内容存储在STM32模块内置的SD卡里。当飞行到目的地时各模块自动停止工作。
1. 方案论证与比较  
1.1四旋翼算法方案  
方案一:采用欧拉角法欧拉角法静止状态,或者总加速度只是稍微大于g时,由加计算出的值比较准确。 使用欧拉角表示姿态,令Φ,θ和Φ代表ZYX 欧拉角,分别称为偏航角、俯仰角和横滚角 。 载体坐标系下的 加 速 度(axB,ayB,azB)和参考坐标系下的加速度(axN, ayN, azN)之间的关系可表示为(1)。其中 c 和 s 分别代表 cos 和 sin。axB,ayB,azB就是mpu读出来的三个值。 

这个矩阵就是三个旋转矩阵相乘得到的,因为矩阵的乘法可以表示旋转。

01.png

飞行器处于静止状态,此时参考系下的加速度等于重力加速度,即 

01.png

把(2)代入(1)可以解:


01.png

即为初始俯仰角和横滚角,通过加速度计得到载体坐标系下的加速度即可将其解出,偏航角可以通过电子罗盘求出。 

方案二:四元数法(通过处理单位采样时间内的角增量(mpu的陀螺仪得到的就是角增量),为了避免噪声的微分放大,应该直接用角增量-------抄的书) 

本项目采用的是方案一。 

1.2 STM32控制方案  
方案一: 直接激活飞控模块(RL78/G13MCU),可以很好的与飞控进行协调,实现飞控模块的启动与停止。

方案二:使用STM32直接控制飞行器飞行。在植入的程序里包含对四旋翼的控制算法和自启动和自停止,还有视频模块的处理,但太过复杂。  

本项目组结合本题相关要求。对模块之间的协调和信号的传输进行处理,决定采用项目一。 

1.3 CMOS视频模块方案 
通过图像传感器对实时图像的采集,得到道路的信息,对当前采集到的图像信息做出判断,从而得到道路的情况,之后通过进一步控制实现循迹功能。  

本例程利用 OV7620 CMOS 摄像头模块成像 1 米外路径图像(白底一条黑线),将一帧数据转换成“0”“1” 镜像到MCU RL78/G13的RAM中。如图1.1图像二值化存储示例。


01.png

1.4 四旋翼飞行器结构与原理理论
1.1.1 飞行器结构

旋翼对称分布在机体的前后、左右四个方向,四个旋翼处于同一高度平面,且四个旋翼的结构和半径都相同,四个电机对称的安装在飞行器的支架端,支架中间空间安放飞行控制计算机和外部设备。结构形式如图 1.1所示。

1.4.2. 工作原理 
四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置。四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统。 图1.4 飞行器的结构形式 

2理论分析与计算  
2.1四旋翼飞控算法误析 


01.png

2.2 PID算法误差分析 
直接使用陀螺仪测量得到的角速度作为微分项。由于角度的微分即角速度,因此直接使用陀螺仪测得的角速度值最为直观简便,且由于没有引入期望值进行微分,因此,在期望值进行切换时不会对系统产生较大的干扰。然而,陀螺仪的零点飘移却是一个不可忽视的问题。随着时间,系统运动状态的改变,陀螺仪的零点可能随之改变,因而从理论上讲,应当对陀螺仪的零点进行动态修正,以保证微分项的准确性。  

(1) 使用本次角度偏差与上一时刻的角度偏差的差值作为微分项。由于对期望值进行了微分,因此在期望值进行切换时,存在较大扰动,若使用该方法,可对微分项进行一阶惯性滤波,使微分项较为平滑。  

(2) 使用微分先行 PID 算法,将角度期望进行分离,直接针对当前时刻姿态解算得到的姿态角进行微分,与上一种方法相比,在期望值进行切换时,不会对系统产生较大的扰动。与第一种方法相比,由于在姿态解算时,通过加速度计与陀螺仪进行融合得到较为准确的姿态角,因此,将其用于微分项在理论上较为合理。  

然而,经过大量的实验经验发现,第一种方法的控制效果最好。仔细推敲之后不难发现,由于第三种方法所使用的姿态解算得到的姿态角并非时刻接近真实值,在动态过程中,该现象尤为明显。当真实值进行切换时,估计值从上一时刻逼近这一时刻的真实值需要一定的过渡时间,因此,可以认为第三种方法得到的微分项是滞后的,微分项的作用体现在对未来的预测,而使用一个“过去”的控制量对“未来”进行预测控制,这显然是不合理的。在实验中则体现为系统抵抗外力的反作用力较小。因此,使用第三种方法的前提为,具备响应极快的姿态解算算法且控制频率较高。 

3.测试方案 
3.1测试仪器  
电子示高装置,产生示高线h1,h2,位于同一垂直水平线,飞行器触碰h1,h2线时该装置可产生声光报警。 

PC机一台,将拍摄的视频文件借助PC机播放,以验证视频模块能否正常工作。 

两个直径不同的同心圆,内圆为黑色外圆为白色,直径分别为25CM和75CM。秒表一个,要求在规定的时间内完成规定的动作。 
3.2 测试环境  
在空旷的实验室中,确保实验室的长度,高度,宽度均符合条件要求,,并能保证实验人员的安全要求。 

基本要求一:测量飞行器起始的位置与目的地之间的线性距离,使它们之间的距离超过题目要求的最小距离,使其从A点出发至B点结束,测试系统工作情况。  

基本要求二:测试飞行器从A点出发以飞行高度不低于30CM的要求按逆时针做矩形运动。  

基本要求三:要求测试环境有电子示高装置, 并可在现场产生激光示高线,其高度可调,调整范围为30CM—120CM。 

发挥部分要求一:使用的小铁板 M1的重量不得低于规定重量的95%,并为单独实物。 

4.测试结果 
4.1.基本要求测试数据 
飞行器能一键式启动,并开始航拍,从A点起飞,飞向B区,在B区降落,但不是中心,当飞行结束后,拔掉SD卡,能顺利的通过P0机回放,在飞行过程中,始终在电子示高线H1和H2的区间内。 

4.2.综合性能分析结论 
飞行器在A区能一键式启动,飞行器起飞,沿矩阵CDEF逆时针飞行一圈,并在A区着陆并停机;飞行高度不低于30CM;飞行时间不大于45S..但是各个部件的协调做的不是太好,具体是:有的时候不能正常启动,还有对CMOS摄像模块的控制以及录得文件的存储,并不能更好的工作,希望以后可以继续改进。 

4.3心得体会: 
通过单片机来控制飞控模块的确是个难题,在代码的设计上出现了很大难题,,我和我的团队更是在单片机与飞控的通信问题上费了好大功夫。 

飞控始终是一个大难题,我们团队采用的是欧拉角方法,我们的姿态扭正算法是在万方数据库里的论文找的,千辛万苦始到金。 
另一个难题是摄像模块的处理,摄像模块如何与单片机的通信以及如何把所拍摄文件传输到SD卡里并能通过PC机回放,我们在单片机的代码里也考虑到这个问题,最终还是得到好的结果。 

炎炎夏日,在如此紧张的时间内完成如此大的工程,的确对我们的耐力和知识提出了挑战,有团队的合作,有老师的支持是我们参与此次大赛的初始勇气。希望下次我们能做到更好。



快速回复 返回顶部 返回列表