|
楼主
查看: 3569回复: 0
发表于 2020-10-27 19:18:32
只看该作者
本帖最后由 吴双鹏 于 2020-10-27 19:19 编辑
1、系统方案
本系统主要由单片机控制模块、姿态解算模块、定高模块、定点模块、视觉模块、测距模块组成,下面分别论述这几个模块的选择。
1.1单片机模块
方案一:选择MSP430G2553作为主控芯片,MSP430G2553 LaunchPad属于TI的入门级板卡,操作简单,上手容易,但是引脚少,主频低,用作飞控芯片具有局限性。
方案二:选择STM32F103RBT6作为主控芯片,这款芯片属于意法半导体常见的芯片之一,资料众多,操作简单,常用于嵌入式开发设计之中。但是对于无人机这类需要高性能数据处理与控制能力的系统而言就不太合适了。
方案三:选择TM4C123GH6PM作为主控芯片,这款芯片不仅主频能够打到80MHz,再加上引脚数量足够,性能极强,完全可以满足对飞行器的控制需求。
综合以上三种方案,选择方案三。
1.2姿态解算模块
方案一:采用MPU6050进行姿态的解算,通过I2C进行通信,最快的通信速度为400k/s,可以得到当前无人机的六轴数据。
方案二:采用icm20602进行姿态的解算,通过SPI的方式进行通信,最快通信速率为10M/s,传感器噪声也大幅降低,可以更加高效得到无人机当前的运动状态。
综合以上两种方案,为了得到更好地控制效果,选择方案二。
1.3定高模块
方案一:采用超声波测距的方式定高,超声波测距模块的测距范围为0~150cm,精度为3mm,精度达到0.3%,测距符合要求,但受外界环境影响变动大,在飞行过程中不是十分稳定。
方案二:采用气压计SPL06定高,气压计数据波动较大,精度低,室内定高效果不好。
方案三:采用激光测距的方式定高,测距范围0.1m~12m,准确度1%,抵抗环境光性能较强,更安全稳定,但激光易受高度突变的影响,可与加速度计数据项融合得到实际高度。
综合以上三种方案,方案二与方案三结合,即激光定高,气压计数据修正。
1.4定点模块
方案一:光流(向地面)定点。由于赛题要求地面全白,经过测试,光流朝向地面很难获得方位。
方案二:对天光流定点。通过更改光流朝向和算法逻辑,设计对天光流方案,尽管复杂度上升,但测试效果满足要求。
综合以上两种方案,选择方案二。
1.5视觉模块
方案一:采用OV7725摄像头,OV7725的分辨率可以达到640*480,最大图像采集速率为60帧/秒,但读取步骤复杂,对处理器要求较大,不适合安装在无人机系统上。
方案二:采用openmv4摄像头模块,openmv4由ARM Cortex-H7高性能微处理器以及OV7725构成,支持多种格式输出,内部自带机器学习算法,可以大大缩短开发周期。
综合以上两种方案,选择方案二。
1.6测距模块
方案一:超声波测距。由于杆塔直径较小,且超声波到达杆面后不一定能够反射回来,测距偏差较大。
方案二:openmv测距。openmv可以通过同一图像像素点的大小变化测得到该图像的距离,实验发现,这种测距方式具有一定的随机误差。
方案三:激光测距。激光测距范围较广,误差较小,对障碍的形状大小没有过多要求,即使杆塔较细,也能够测出距离。
综合以上三种方案,最终决定综合方案二和方案三两种测距方式,准确获得无人机到杆塔的距离。
2、电路设计
根据四旋翼比赛要求,自主设计制作飞控。飞控拓展板原理图如图1所示:
图1 飞控拓展板原理图
包括电源管理电路、最小系统接口电路、PWM输出电路、串口通信电路等必要电路。
设计制作的PCB如图2所示:
图2 飞控PCB图
3、程序设计
3.1 系统框图
图3 系统框图
3.2 无人机系统控制总体流程
图4 程序控制流程
无人机系统复杂,通过滴答计时器模拟任务调度来精确执行每一项任务,经测试调试简单,效果极好。
4、设计计算
4.1四元数姿态解算
欧拉角转化成四元数:,分别对应roll,yaw,pitch的旋转角度
四元数便于计算,欧拉角便于观察和处理数据。
四元数与过渡矩阵的变换
一阶龙格库塔法求四元数:
根据四元数进行姿态解算。
4.2低通滤波算法
由于传感器数据波动较大,加入一阶低通滤波器得到稳定的数据。
数学公式如下:
其中。这里pi取3.14。
数字化设计:out += ( 1 / ( 1 + 1 / ( (hz) *6.28f *(t) ) ) ) *( (in) - (out) ))
hz为截止频率,t为采样周期。根据不同用途适当修改参数,测试效果极好。
4.3绕障算法
绕障过程中需要同时改变偏航速度和横向位移速度。如果二者速度不匹配,将产生炸机的危险。因此我们小组通过数学计算、实验验证得到偏航速度与横向位移速度的关系:
其中yaw_spd为偏航角速度,y_spd为横向位移速度,distance为题目要求的无人机到杆的距离50cm,length为无人机的半径,设为25cm。
设y_spd为45cm/s,计算得到yaw_spd为34.6度/秒。绕飞效果达到预期目标。
5、测试方案与测试结果
5.1起飞降落测试
测试方案:编程设计程序一键起飞功能,起飞之后,巡航一段时间后寻找降落点降落(色块识别+形状识别)。
测试结果:一键起飞功能正常,可以达到高度150±4cm以内,在巡航40秒以后开始寻找降落点,可以在3秒之内找到,并在6~20秒内完成降落。
分析:基于对天光流的设计方案,无人机定点功能、速度控制效果极好,配合大功率激光与气压计数据融合,定高稳定,达到题目要求。使用一个openmv镜头朝下,在色块识别的基础上加入了形状识别,弥补了阈值调节的不足,有效识别降落点,达到题目要求。
5.2杆塔目标识别与指示
测试方案:绘制蜂鸣器和LED灯模块电路,腐蚀铜板制作。与openmv的I/O口相连,当识别到对应颜色的杆塔时蜂鸣器响,对应颜色的LED灯亮。
测试结果:在一键起飞后,无人机识别到杆塔时蜂鸣器能够正常发声,对应的LED灯闪烁。
分析:电路板制作合格,openmv相应I/O口可以正常驱动,达到题目要求。
5.3杆塔目标识别与指示
测试方案:使用两个1.8m长的杆塔分别贴上红纸和绿纸,无人机起飞后扫描90度,先绕红色的杆飞行一周,再原地扫描,找到绿色的杆,绕杆飞行一周。
测试结果:经过调参,实验,最终使用前向openmv加上激光模块阵列实现无人机绕障飞行,距离杆塔50±5cm,平均绕杆时间40~70秒,符合要求。
分析:通过陀螺仪数据判断无人机旋转度数,切换状态,能够保证无人机绕杆360度后改变状态,实验结果与理论分析一致。openmv测量距离与激光阵列测量距离融合滤波,能够准确识别无人机到杆的距离,在正负2厘米之内,但加上无人机自身震动,最终误差在正负5厘米之内,满足要求。
6、创新方法运用
6.1组合法+头脑风暴法
在定高算法、避障算法方面,原来的算法设计不能满足设计要求。经过组内成员的激烈讨论,决定综合原有的设计方案,即采用气压计与激光数据融合测量高度,openmv测距与激光测距共同使用,结合各自的优点,大大减小了数据的波动,提高了数据的准确性,控制效果明显提高。
6.2逆向思维
由于赛题要求地面全白,导致光流难以正常工作。经小组讨论,决定将对地光流改为对天光流,逆向思维来解决问题。修改了原先的算法逻辑,成功设计对天光流,效果极好。
7、总结
整个比赛过程并非一帆风顺,尝试各种方案从中选取最优,整个过程就是不断学习的过程。最终完成了题目所有要求,并适当增加附加功能。相信在这个过程中得到的方案和经验对之后的无人机研究学习同样具有重大帮助,将理论运用到实践,再到开发应用,做到真正的学以致用。 |
|