飞行器小蜜蜂四轴养成计划_第1页
飞行器小蜜蜂四轴养成计划_第2页
飞行器小蜜蜂四轴养成计划_第3页
飞行器小蜜蜂四轴养成计划_第4页
飞行器小蜜蜂四轴养成计划_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文论述了四旋翼飞行器的设计思路和制作过程,采用R5F100LEA作为多旋翼飞行器系统的数据处理及导航的。使用STM32F407作为飞行器的飞行控制板控制,以两片单片机协同工作的方式完成定高循迹飞行任务。使用STM32F4O7MPU9150的加速度和角速度数据,用四元数法计PIDPID度与期望高度的差值为零,实现固定高度悬停。使用瑞萨R5F100LEA处理UART2STM32F407:四旋翼飞行器,头与红外结合循迹,超声波定高,PID姿态 一、系统方 1、飞行方式的论证与选 2、姿态控制模块的论证与选 3、定高模块的论证与选 4、指引线检测模块的论证与选 5、电机的论证与选 6、航拍模块的论证与选 7、简易示高装置示高线光源的论证与选 8、铁片拾取方式的论证与选 二、系统理论分析与计 1、多旋翼飞行器的动力学模 2、PID控制算法结构分 3、利用瑞萨R5F100LEA进行导航的算 三、电路与程序设 1、电路的设 系统总体框 (2)头循迹电路的设计子系统框图与电路原理 电 2、程序的设 程序功能描述与设计思 程序流程 四、测试方案与1、测试方 2、测试条件与仪 3、及分 (1)(数据 测试分析与结 五、结论与心 六、参考文 附录1:电路原理 附录2:源程 多旋翼自主飞行器(C题【本科组1、飞行方式的论证与选XX字的方式排列,调整的时候应该相邻两个调节,灵活性和可调性较高。X型飞行方式非常自由灵活,旋转方式多样,可以花样飞综合以上两种方案,选择了方案二2、姿态模块的论证与选MPU6050三轴陀螺仪。MPU6050三轴陀螺仪就是可以在同一时间内测量六个不MPU91503-5V。由于在MPU6050模块的基础上集成了电子罗盘ak8975,可以在飞行器飞行过程中结合3、定高模块的论证与选GY-63MS5611-01BA03高精度气压传感器模块。MS5611气压传感器是由MEAS()推出的一款SPI和I²C总线接口的新一代高分辨率气24位Σ模数转换器(工厂校准系数。US-1002cm~4.5m的非接触测距功能,较MS56112.4~5.5V的宽电压输入范围,静态2mAGPIO,串口等多种4、指引线模块的CCD图像传感器。CCD图像传感器可直接将光学信号转换为模拟电流信号,电流信号经过放大和模数转换,实现图像的获取、、传输、处理和复现。其显著特点是:1体积小重量轻;2.功耗小,工作电压低,抗冲击与,性能稳定,长。缺点是受光线影响较大,且每次只能获红外传感器。E18-D80NK-N是一种集发射与接收于一体的光电传感器发射光经过OV7620头模块。OV7620是一款CMOS头器件,是一款彩色/黑白CMOS型图像集成,提供高性能的单一小体积封装,该器件分辨率可以达到640X48030帧。OV7620可以对图像进行硬件二值化,使用瑞萨R5F100LEA对二值化后的数据进行,再对赛道元素进行识别,实现循迹功能。使用头模块具有较高的前瞻性,检测精度高。5、电机的论证与选方案一刷磨损,较好地解决了直流有刷电机的缺点,适用于对功率重量比敏感的用途,同时增强了电机的可靠性。6、航拍模块的论使用瑞萨R5F100LEAOV7620的灰度值图像数据,再写入SD卡。此方案体积小,使用小蚁运动相机。小蚁运动相机自带SD卡槽,航拍的可以直接存入SD卡,提取方7、简易示高装置度低,方向性差,且检测距离短,40cm,用红外传感器会产生较大误差。8、铁片拾取方式的论证与选BMCUB1、多旋翼飞行器的动力学模xu4(sincoscossinsin)/yu(sincossinsincos)/ z(u4cossinmg)/ ul/ u2l/

/其中,wxyz为四元数参数,ROL、PIT、YAW为欧拉角参数。为四旋翼飞行在导航坐标系下的线位移,为运动加速度,m为飞行器质量,l为旋翼面中心四旋翼飞行器质心的距离,为轴向惯性主矩。该动力学模型对四旋翼飞行2、PID控制算法结构分给给3、利用瑞萨R5F100LEA进行导航的算使用OV7620头取得指引线的图像数据,利用瑞萨R5F100LEA将图像二偏差。飞行控制器得到偏差后作出反应,进行位置负反馈PID调节,使指引线中心线1、电路的设系统总体框航向偏飞行高1航向偏飞行高1234姿态检高度检存到SDR5F100ESTM32F407制PID(2)头循迹电路子系统框图与电路原理采用 头模块OV7620搭配FIFO模块AL422与R5F100LEA引脚连接如下CMOS头搭配FIFO模块,有效解决了头与单片机之间的数据不同步电12V5VR5F100LEASTM32F407飞行控制板2、程序的设程序功能描述与设计思第一部分是姿态控制部分,利用飞行控制板IIC接口与MPU9150模块通讯,接收姿态角,利用角速度PID控制和角度PID控制的串级PID控制算法解算出相应电机的调整量,调整输出,使飞行器姿态平衡。R5F100LESTM32F407高度,再调整油门的输出,使飞行器稳定在规定的高度。程序流程NY四、测试方案与1、测常。将OV7620的二值化图像通过瑞萨单片机的UART0端口传回上位机,查看数在片上调试时设置断点,查看到的MPU9150的数据是否正常,以及在姿态发生偏移时四个电机的输出值的变化是否准确,确保其限,以免发生翻机。调试瑞萨R5F100LE与STM32F407的串口通讯是否正常,保证瑞萨单片机的指令能先将头与瑞萨R5F100LE连接好,将头在指引线上左右移动,用串口2、测试条件与仪测试条件:在飞行场地进行多次飞试到达目的地的时间和偏离目的地的情况3、及分(1)(数据沿直线飞行的测试数据(1沿矩形框飞行的测试数据(123456测试分析与根据上述测试数据,飞行高度较低时,由于头窗口较小,的图像范围太小,而飞行器的调整幅度大,使头移除轨道而拍不到指引线,最终导致飞丢,无法循迹。飞行高度较高时,头的焦距无法自动调节,拍出的图像不清晰,无法准所以最终决定将飞行高度定在35cm~40cm之间。由于头的缺陷,我们决定增8128点拿到题目要求后,我们奋战了四天三夜,终于完成了题目要求。不稳定系统的控制过程中,学习了图像处理,PID控制等知识,自己的程序设计和动 .C语言程序设计[M].: 四轴飞行器-百科,自由的百科全书 ,四旋翼飞行器自动驾驶仪设计[M].航空航天大学 ,四旋翼飞行器控制系统设计[M].哈尔滨工业大学 ,四旋翼无人直升机先进飞行控制方法及实现研究[M].航空航天大 ,三自由度飞行器模型的模糊PID控制研究[M].东学 ,小型四旋翼飞行器飞行控制系统研究与设计[M].交通大学网易数码谷歌ProjectTango项目:飞行器在室内也能准确飞往目标位 SebastianO.H.Madgwick,AndrewJ.L.Harrison,RaviVaidyanathan.EstimationofIMUandMARGorientationusingagradientdescentalgorithm[J].IEEEInternationalConferenceonRehabilitationRobotics.2011.MarkEuston,PaulCoote,RobertMahony,JonghyukKimandTarekHamel.AComplementaryFilter InternationalConferenceonInligentRobotsandSystems.2008.1.图 头循迹模块电路voidCTRL_1(float{xyz_f_tEXP_LPF_TMP.x=MAX_CTRL_ASPEED*(ctrl_2.out.x/ANGLE_TO_MAX_AS);//*((CH_filter[0])/500.0f);//EXP_LPF_TMP.y=MAX_CTRL_ASPEED*(ctrl_2.out.y/ANGLE_TO_MAX_AS);//*((CH_filter[1])/500.0f);//EXP_LPF_TMP.z=MAX_CTRL_ASPEED*(ctrl_2.out.z/ANGLE_TO_MAX_AS);except_AS.x=EXP_LPF_TMP.x;//20*3.14*T*(EXP_LPF_TMP.x-except_AS.x);//except_AS.y=EXP_LPF_TMP.y;//20*3.14*T*(EXP_LPF_TMP.y-except_AS.y);//except_AS.z=EXP_LPF_TMP.z;//20*3.14*T*(EXP_LPF_TMP.z-except_AS.z);//except_AS.x=LIMIT(except_AS.x,-MAX_CTRL_ASPEED,MAX_CTRL_ASPEED);except_AS.y=LIMIT(except_AS.y,-MAX_CTRL_ASPEED,MAX_CTRL_ASPEED);except_AS.z=LIMIT(except_AS.z,-MAX_CTRL_ASPEED,MAX_CTRL_ASPEED);ctrl_1.damp.x=(mpu6050.Gyro_deg.x-g_old[A_X])*(0.002f/T);//ctrl_1.PID[PIDROLL].kdampctrl_1.damp.y=(-mpu6050.Gyro_deg.y-g_old[A_Y])*(0.002f/T);//ctrl_1.PID[PIDPITCH].kdamp*ctrl_1.damp.z=(-mpu6050.Gyro_deg.z-g_old[A_Z])*(0.002f/T);//ctrl_1.PID[PIDYAW].kdamp ctrl_1.err.x=(except_AS.x-mpu6050.Gyro_deg.x)*(300.0f/MAX_CTRL_ASPEED);ctrl_1.err.y=(except_AS.y+mpu6050.Gyro_deg.y)*(300.0f/MAX_CTRL_ASPEED);//-yctrl_1.err.z=(except_AS.z+mpu6050.Gyro_deg.z)*(300.0f/MAX_CTRL_ASPEED); ctrl_1.err_weight.x=ABS(ctrl_1.err.x)/MAX_CTRL_ASPEED;ctrl_1.err_weight.y=ABS(ctrl_1.err.y)/MAX_CTRL_ASPEED;ctrl_1.err_weight.z=ABS(ctrl_1.err.z)/MAX_CTRL_YAW_SPEED;ctrl_1.err_d.x=(ctrl_1.PID[PIDROLL].kd*(-10*ctrl_1.damp.x)*(0.002f/T));ctrl_1.err_d.y=(ctrl_1.PID[PIDPITCH].kd*(-10*ctrl_1.damp.y)*(0.002f/T));ctrl_1.err_d.z=(ctrl_1.PID[PIDYAW].kd*(-10*ctrl_1.damp.z)*(0.002f/T) ctrl_1.err_d.x+=40*3.14*0.002*(10*ctrl_1.PID[PIDROLL].kd*(ctrl_1.err.x-*(0.002f/T)- ctrl_1.err_d.y+=40*3.14*0.002*(10*ctrl_1.PID[PIDPITCH].kd*(ctrl_1.err.y-*(0.002f/T)- ctrl_1.err_d.z+=40*3.14*0.002*(10 *(ctrl_1.err.z-*(0.002f/T)-ctrl_1.err_i.x+=ctrl_1.PID[PIDROLL].ki*(ctrl_1.err.x-ctrl_1.damp.x)*T;ctrl_1.err_i.y+=ctrl_1.PID[PIDPITCH].ki*(ctrl_1.err.y-ctrl_1.damp.y)*T;ctrl_1.err_i.z+=ctrl_1.PID[PIDYAW].ki *(ctrl_1.err.z-ctrl_1.damp.z)*T;ctrl_1.eliminate_I.x=Thr_Weight*CTRL_1_INT_LIMIT;ctrl_1.eliminate_I.y=Thr_Weight*CTRL_1_INT_LIMIT;ctrl_1.eliminate_I.z=Thr_Weight*CTRL_1_INT_LIMITctrl_1.err_i.x=LIMIT(ctrl_1.err_i.x,-ctrl_1.eliminate_I.x,ctrl_1.eliminate_I.xctrl_1.err_i.y=LIMIT(ctrl_1.err_i.y,-ctrl_1.eliminate_I.y,ctrl_1.eliminate_I.y);ctrl_1.err_i.z=LIMIT(ctrl_1.err_i.z,-ctrl_1.eliminate_I.z,ctrl_1.eliminate_I.zctrl_1.out.x=3*(ctrl_1.FB*LIMIT((0.45f+0.55f*ctrl_2.err_weight.x),0,1)*except_AS.x+(1-ctrl_1.FB*ctrl_1.PID[PIDROLL].kp*(ctrl_1.err.x+ctrl_1.err_d.x+ctrl_1.err_i.x)ctrl_1.out.y=3*(ctrl_1.FB*LIMIT((0.45f+0.55f*ctrl_2.err_weight.y),0,1)*except_AS.y+(1-ctrl_1.FB*ctrl_1.PID[PIDPITCH].kp*(ctrl_1.err.y+ctrl_1.err_d.y+ctrl_1.err_i.y)ctrl_1.out.z=3*(ctrl_1.FB*LIMIT((0.45f+0.55f*ctrl_2.err_weight.z),0,1)*except_AS.z+(1-ctrl_1.FB *(ctrl_1.err.z+ctrl_1.err_d.z+ctrl_1.err_i.z)ctrl_1.err_old.x=ctrl_1.err.x;ctrl_1.err_old.y=ctrl_1.err.y;ctrl_1.err_old.z=g_old[A_X]=mpu6050.Gyro_deg.x;g_old[A_Y]=-mpu6050.Gyro_deg.y;g_old[A_Z]=-mpu6050.Gyro_deg.z}voidCTRL_2(float{//===========================except_A.x=MAX_CTRL_ANGLE*(my_deathzoom((CH_filter[ROL]),30)/500.0f);except_A.y=MAX_CTRL_ANGLE*(my_deathzoom((-CH_filter[PIT]),30)/500.0f);if(Thr_Low==0){except_A.z+=(s16)(MAX_CTRL_YAW_SPEED*(my_deathzoom_2((CH_filter[YAW]),50)/500.0f))*T}{except_A.z+=1*3.14*T*(Yaw-except_A.z}except_A.z=ctrl_2.err.x=To_180_degrees(ctrl_angle_offset.x+except_A.x-Roll);ctrl_2.err.y=To_180_degrees(ctrl_angle_offset.y+except_A.y-Pitch);ctrl_2.err.z=To_180_degrees(ctrl_angle_offset.z+except_A.z-Yaw ctrl_2.err_weight.x=ABS(ctrl_2.err.x)/ANGLE_TO_MAX_AS;ctrl_2.err_weight.y=ABS(ctrl_2.err.y)/ANGLE_TO_MAX_AS;ctrl_2.err_weight.z=ctrl_2.err_d.x=10*ctrl_2.PID[PIDROLL].kd*(ctrl_2.err.x-ctrl_2.err_old.x)*(0.005f/T)*(0.65f+0.35f*ctrl_2.err_weight.x);ctrl_2.err_d.y=10*ctrl_2.PID[PIDPITCH].kd*(ctrl_2.err.y-ctrl_2.err_old.y)*(0.005f/T)*(0.65f+*ctrl_2.err_weight.yctrl_2.err_d.z=10 *(ctrl_2.err.z-ctrl_2.err_old.z)*(0.005f/T)*(0.65f+*ctrl_2.err_weight.zctrl_2.err_i.x+=ctrl_2.PID[PIDROLL].ki*ctrl_2.err.x*T;ctrl_2.err_i.y+=ctrl_2.PID[PIDPITCH].ki*ctrl_2.err.y*T;ctrl_2.err_i.z+=ctrl_2.PID[PIDYAW].ki *ctrl_2.err.z*T;ctrl_2.eliminate_I.x=Thr_Weight*CTRL_2_INT_LIMIT;ctrl_2.eliminate_I.y=Thr_Weight*CTRL_2_INT_LIMIT;ctrl_2.eliminate_I.z=Thr_Weight*CTRL_2_INT_LIMIT;ctrl_2.err_i.x=LIMIT(ctrl_2.err_i.x,-ctrl_2.eliminate_I.x,ctrl_2.eliminate_I.x);ctrl_2.err_i.y=LIMIT(ctrl_2.err_i.y,-ctrl_2.eliminate_I.y,ctrl_2.eliminate_I.y);ctrl_2.err_i.z=LIMIT(ctrl_2.err_i.z,-ctrl_2.eliminate_I.z,ctrl_2.eliminate_I.z);ctrl_2.err.x=LIMIT(ctrl_2.err.x,-90,90);ctrl_2.err.y=LIMIT(ctrl_2.err.y,-90,90);ctrl_2.err.z=LIMIT(ctrl_2.err.z,-90,90ctrl_2.out.x=ctrl_2.PID[PIDROLL].kp*(ctrl_2.err.x+ctrl_2.err_d.x+ctrl_2.err_i.x);//ctrl_2.out.y=ctrl_2.PID[PIDPITCH].kp*(ctrl_2.err.y+ctrl_2.err_d.y+ctrl_2.err_i.y);ctrl_2.out.z=ctrl_2.PID[PIDYAW].kp *(ctrl_2.err.z+ctrl_2.err_d.z+ctrl_2.err_i.z);ctrl_2.err_old.x=ctrl_2.err.x;ctrl_2.err_old.y=ctrl_2.err.y;ctrl_2.err_old.z=}2.头循迹部void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论