《【飞控开发高级篇3】开源编队无人机-定高、定点、悬停.docx》由会员分享,可在线阅读,更多相关《【飞控开发高级篇3】开源编队无人机-定高、定点、悬停.docx(6页珍藏版)》请在第一文库网上搜索。
1、COCOFLY教程疯壳无人机系列目录一、“定高定点悬停”功能简介1二、代码相关1官网地址:htlp:www.fengke.club淘宝店:http:/shopl 官方 QQ 群:457586268Al开源编队无人机Al OPEN SOURCE FORMATION DRONE高级功能$施飞令wiFias 传控制盒视觉跟随移动小车激光气压双定高公遥控控制飞行感国形化多机编队飞行光流定点fH视觉追踪图码国支椅图形化缰程O有头无头双横式视便追踪色七:自主巡线飞行3D翻浪4)视觉追踪形状gAl语音控创官网地址:http:www.fengke.club买链接:http:shop 官方 QQ 群:45758
2、62681、“定高定点悬停”功能简介定高定点悬停是衡量一个飞控性能的一个重要参数。只有支持定高定点悬停,才能让无人机稳定地停留在空中不动,才能够实现更多的附加功能,例如航拍等。试想如果无人机左右摇摆,时而往左,时而往右,怎么能够实现航拍呢?COCOFLY支持定高定点悬停模式,默认出厂的时候已经设置为激光定高、光流定点,从而可以让飞机稳定悬停空中。使用遥控设置COCOFLY为定高定点悬停的的方法如下,打开遥控与飞机,确保两则是连上的,然后按下遥控右按键,进入菜单选项,选择“1.飞控设置”,进入到飞控设置界面,然后把“1.激光定高”打开,具体方法是在“1 .激光定高”处,把右摇杆往右掰,等“否”变
3、为“是”,才按下右摇杆的右按键,可以看到界面回到了主菜单,并且出现了 “设置成功”字样。如果“设置失败”,可能是没有连接上飞机。然后再重复同样的步骤进入到飞控设置界面,往下拨到到“6.光流定点”,然后用同样的方法,打开即可。如下图所示。二、代码相关目前悬停的逻辑是,有激光定高优先使用激光定高、否则使用气压计定高;定点使用的是光流模块,通过判断无人机的位移,实现定点。光流数据获取的代码如下图所示。光流定点模式,全部使用光流数据else if(Fixed_Point_Mode) loc_x = pixel_flow. x_i;/ xfililoc v = pixel flow. v i;/ v位置
4、loc_xs = pixel_flow. fix_x; /x速度loc_vs = pixel_flow. fix_v; t速度j气压计和激光定高处理部分代码如下图所示。J W24252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172void Height_Get(float dT)气压高度得零if ( baro_start ) 一baro_height = 0:baro_height_old = 0;baro.Offset = Drv_Spl0601_Rea
5、d();High_Dat a_Reset ():baro start = 0;else(if (vl5311x. is use & ! vl5311x. err & vl5311x. is valid)激光测距有效 -if15311X. re_val工d)激光测距重颖有效,高度颜据无缝切换到微光数据(if (I auto_take_off) exp_Z = vl5311x. DistancjFix; 自动起飞时不改变期望曷度fb_ Z = vl5311x. Distance_Fix:baro-height = vl531lx. Distance_Fix;baro_height_old = vl
6、5311x. Distance-Fix;baro_Offset = Drv_Spl0601_Read() - vl5311x. Distance.Fix;wcz_h_fus. out = vl5311x. Distance-Fix:wcz h fus. e = 0:v15311x.re_valid = 0;) 一if (f lip_Done & imu_data. angle=30)baro_height += (vl5311x. Distance-Fix - baro_height)*dT*10;baro.Offset = Drv Spl0601 ReadO - baro height;wc
7、z_h_fus,fix_kp = 2 :增加高度融合系数,召为激光则距数据比较可靠)elsebaro.height = Drv_Spl060l.Read() - baro_Offset;baro height = Kalman Filter Uhish kalan.baro height);baro_speed_o = saf e_div(baro_height - baro_height_old3 dL 0): baro_height_old = baro_height;baro-speed = Kalman-Filter(fthigh-skalan, baro_speed_o);baro_speed = LIMIT(baro_speed, -300, 300);wcz.h.fus.fix_kp = ON:/降低高度融合系温,因为气压计数据不太可靠官网地址:http:www.fengke.club淘宝店:http:shopl 官方 QQ 群:457586268