精华内容
下载资源
问答
  • 设计一款基于STM32四轴飞行器,设计四轴飞行器包括IMU姿态解算,自稳控制,定高自动控制等,达到给他人进行稳定二次开发的目的,降低学习无人机门槛,提高无人机在国内的影响力度,让更多的人认识了解无人机学习...
  • 四轴无人机设计是无人飞行器(UAV)的流行设计。它包括一个飞行控制器和4个电子速度控制器(ESC),每个电机一个。飞行控制器配备一个无线电,用于接收飞行员和惯性测量单元(IMU)发出的飞行命令。IMU通过内置的加速度...
  • 基于STM32单片机的四轴无人机设计.pdf
  • 四轴无人机毕设开始

    2021-03-07 11:02:12
    毕设四轴无人机 考研结束了,不出意外考的很差,老师在考试之前就说过我有些浮躁,我现在有点怀疑自己的能力了,等二战吧,毕业论文开始了。 这次采用的是匿名科创的拓空者飞控,stm32f407主控板,其实我大二就搞过...

    毕设四轴无人机

    考研结束了,不出意外考的很差,老师在考试之前就说过我有些浮躁,我现在有点怀疑自己的能力了,等二战吧,毕业论文开始了。

    这次采用的是匿名科创的拓空者飞控,stm32f407主控板,其实我大二就搞过四轴,当时能力实在不够也没向同学请教,所以就失败了

    项目任务
    学习姿态检测和处理算法,如果换个板子或者算法希望能熟练上手
    完成无人机的自主任务,能实现前进、后退、转弯、上升下降设定高度。
    设想的是做成一个个函数接口,直接设定参数就行。如果时间充足的话,我再把摄像头加进去这样就能巡线识别目标了。

    3月到4月组装并调试好无人机能遥控器控制飞行。

    4月到5月写程序并调试。

    5月到6月写好论文。

    展开全文
  • 四轴无人机原理

    千次阅读 2019-07-19 00:52:00
    目录 1、无人机概述 2、旋翼飞行器结构 3、空气动力学原理参考 ... 无人驾驶飞机,简称无人机,英文Unmaned Aerial Vehicle, UAV。也就是说,无人机所表示的是没有驾驶员的飞机,飞机通过机载的计算机系统自...

     

     

     

     

     

    无人机概述

       无人驾驶飞机,简称无人机,英文Unmaned Aerial Vehicle, UAV。也就是说,无人机所表示的是没有驾驶员的飞机,飞机通过机载的计算机系统自动对飞行的平衡进行有效的控制,并通过预先设定或飞机自动生成的复杂航线进行飞行,并在飞行过程中自动执行相关任务和异常处理。通常无人机分为完全离线飞机与半离线飞机,完全离线飞机可完全不与地面系统进行交互,自动完成一个或多个飞行任务,并在执行完任务之后返航或在指定地点降落;半离线飞机在自动执行飞行任务期间,可由地面系统(地面站)进行指令控制,人工干预其飞行任务,并在紧急情况下执行地面系统的紧急命令,例如:返航、迫降、自毁等。可以说,无人机是由机载计算机系统和地面系统一起组合起来的可以自行完成飞行任务的无驾驶员的飞行器。从控制上讲可以完全脱离地面的实时控制,其组成由飞机机架、动力系统、自平衡系统、导航系统、航线规划系统、感知系统、任务执行系统、与地面站通讯系统等等。从用途上讲,无人机主要用于军事用途或特殊民用。 

      近年来,由于开源无人机飞行控制器及自动飞机驾驶仪的不断发展,技术已经趋于成熟,全世界数以万计的优秀人才在为开源无人机项目贡献代码。使得越来越多的普通人可以轻松进入这个领域。通常,无人机分为三类:固定翼飞机单旋翼直升机多旋翼直升机。在早期,固定翼飞机与直升机占有主导地位,近十年来多旋翼的理论日趋成熟,组装简单,超控灵活,渐渐成为了人们喜爱的无人机。

    固定翼飞机

      依靠推进系统(前拉式螺旋桨或后推式螺旋桨)产生前进的动力,从而使飞机快速前行。当飞机获得了前进的速度后,由气流的作用到飞机的翼展上(伯努利原理)产生上升的拉力,当拉力大于机身重力时,飞机处于上升飞行状态。固定翼飞的左右(横滚)平衡依靠左右主机翼的掠角大小来调节,前后(俯仰)平衡依靠尾舵的掠角来调节,方向(航向)依靠垂向尾舵来调节,当然,固定翼飞机的航向通常是靠横滚和俯仰组合动作来完成,这不是我们的主要研究方向,在这里不再赘述。

    优点:续航时间长,速度快。

    缺点:需要跑道,不能垂直起降。

    单旋翼直升机

    单旋翼直升机简称为直升机。我们在这里所讲述的单旋翼和多旋翼在机械结构、控制原理、飞行理论上有本质的区别,请读者不要混淆。单旋翼直升机(以后简称直升机)主动力系统只有一个大型的螺旋桨,主要作用是提供飞行的上升动力,所以当上升动力大于机身重力时,飞机处于上升状态。而由于直升机只有一个主动力桨,当主动力电机高速旋转时,螺旋桨的旋转会对机身产生一个反向的作用力——反扭力。在反扭力的作用下,飞机会产生与螺旋桨旋转方向相反的自旋。为了解决直升机的自旋,就需要在飞机的尾部追加一个水平方向的小型螺旋桨,其产生的拉力主要用于抵消机身自旋,当直升机需要改变航向时,也可以通过尾部螺旋桨来调节。除了主动力电机与尾翼电机之外,通常还有三个舵机,用于改变主动力桨的螺距,使机身产生横滚和俯仰姿态,从而使飞机前飞、后飞或向左、向右飞行。

    优点:可以垂直起降,空中悬停。

    缺点:续航时间短,机械结构繁杂,操控难度大,飞行速度慢。

    多旋翼直升机

    由三个、四个或更多螺旋桨所组成的无机。最典型、最常见的就是四旋翼直升机(以后简称四旋翼)。四旋翼有四个轴,安装四个螺旋桨,同样可以由螺旋桨的高速旋转产生向上的拉力实现垂直起降。但与直升机不同的是,多旋翼的前进、后退、向左、向右飞行靠的是四个螺旋桨不同的转速,而不是像直升机那样靠改变主动力桨的螺距,因为四旋翼桨的螺距是固定的,桨的尺寸也是固定的。四旋翼的四个轴的轴距通常也是相同的,所以其动力体系通常也是对称的。三旋翼、六旋翼、八旋翼或其它多旋翼除了将动力和力矩分配到多个螺旋桨的方案不同之外,与四旋翼没有本质上的区别。可以说,学习并掌握了四旋翼之后,也就可以举一反三的懂得了其它多旋翼的原理与动力系统。

    优点:可以垂直起降,空中悬停,结构简单,操作灵活。

    缺点:续航时间短,飞行速度慢。

     

     

     四旋翼飞行器结构

      四轴飞行器四个电机呈十字形排列, 驱动四片桨旋转产生向上的推力。四个电机轴距几何中心的距离相等, 当对角两个轴产生的升力相同时能够保证力矩的平衡, 四轴不会向任何一个方向倾转; 而四个电机一对正转,一对反转的方式使得绕竖直轴方向旋转的反扭矩平衡, 保证了四轴航向的稳定。

    与传统的直升机相比,四旋翼飞行器有下列优势:各个旋翼对机身所施加的反扭矩与旋翼的旋转方向相反,因此当电机1和电机3逆时针旋转的同时,电机2和电机4顺时针旋转,可以平衡旋翼对机身的反扭矩。

    根据用户自定义的机头的位置不同,四轴飞行器可以分为x模式和+模式。x模式的机头方向位于两个电机之间,而+模式的机头方向位于某一个电机上。x和+就是表示正对机头方向时飞行器的形状。如下图所示。x模式要难飞一点,但动作更灵活。+模式要好飞一点,动作灵活差一点,所以适合初学者。特别注意,x模式和+模式的飞控安装是不同的。如果飞控板安装错误,会剧烈的晃动,根本无法飞。

     

     

     

     

    空气动力原理

    四旋翼飞行器在空间共有6个自由度(分别沿3个坐标轴作平移和旋转动作),这6个自由度的控制都可以通过调节不同电机的转速来实现。基本运动状态分别是:

    • 垂直运动;
    • 俯仰运动;
    • 滚转运动;
    • 偏航运动;
    • 前后运动;
    • 侧向运动。

    在图中,电机1和电机3作逆时针旋转,电机2和电机4作顺时针旋转,规定沿x轴正方向运动称为向前运动,箭头在旋翼的运动平面上方表示此电机转速提高,在下方表示此电机转速下降。

    垂直运动:垂直运动相对来说比较容易。在图中,因有两对电机转向相反,可以平衡其对机身的反扭矩,当同时增加四个电机的输出功率,旋翼转速增加使得总的拉力增大,当总拉力足以克服整机的重量时,四旋翼飞行器便离地垂直上升;反之,同时减小四个电机的输出功率,四旋翼飞行器则垂直下降,直至平衡落地,实现了沿z轴的垂直运动。当外界扰动量为零时,在旋翼产生的升力等于飞行器的自重时,飞行器便保持悬停状态。保证四个旋翼转速同步增加或减小是垂直运动的关键。

    俯仰运动:在图(b)中,电机1的转速上升,电机3的转速下降,电机2、电机4的转速保持不变。为了不因为旋翼转速的改变引起四旋翼飞行器整体扭矩及总拉力改变,旋翼1与旋翼3转速该变量的大小应相等。由于旋翼1的升力上升,旋翼3的升力下降,产生的不平衡力矩使机身绕y轴旋转(方向如图所示),同理,当电机1的转速下降,电机3的转速上升,机身便绕y轴向另一个方向旋转,实现飞行器的俯仰运动。

     

    滚转运动:与图b的原理相同,在图c中,改变电机2和电机4的转速,保持电机1和电机3的转速不变,则可使机身绕x轴旋转(正向和反向),实现飞行器的滚转运动。

    偏航运动:四旋翼飞行器偏航运动可以借助旋翼产生的反扭矩来实现。旋翼转动过程中由于空气阻力作用会形成与转动方向相反的反扭矩,为了克服反扭矩影响,可使四个旋翼中的两个正转,两个反转,且对角线上的各个旋翼转动方向相同。反扭矩的大小与旋翼转速有关,当四个电机转速相同时,四个旋翼产生的反扭矩相互平衡,四旋翼飞行器不发生转动;当四个电机转速不完全相同时,不平衡的反扭矩会引起四旋翼飞行器转动。在图d中,当电机1和电机3的转速上升,电机2和电机4的转速下降时,旋翼1和旋翼3对机身的反扭矩大于旋翼2和旋翼4对机身的反扭矩,机身便在富余反扭矩的作用下绕z轴转动,实现飞行器的偏航运动,转向与电机1、电机3的转向相反。

     

    前后运动:要想实现飞行器在水平面内前后、左右的运动,必须在水平面内对飞行器施加一定的力。在图e中,增加电机3转速,使拉力增大,相应减小电机1转速,使拉力减小,同时保持其它两个电机转速不变,反扭矩仍然要保持平衡。按图b的理论,飞行器首先发生一定程度的倾斜,从而使旋翼拉力产生水平分量,因此可以实现飞行器的前飞运动。向后飞行与向前飞行正好相反。当然在图b图c中,飞行器在产生俯仰、翻滚运动的同时也会产生沿x、y轴的水平运动。

    倾向运动:在图f中,由于结构对称,所以倾向飞行的工作原理与前后运动完全一样。

     

    总得来说就是控制四个电机的速度了。然后相应的提高速度和减慢速度就可以让四轴动起来了。

     

    参考:

    https://www.zhihu.com/org/chen-yang-wu-ju-ke-ji/posts?page=2

    http://bbs.eeworld.com.cn/thread-449222-1-1.html

    https://blog.csdn.net/AASDSADAD/article/details/72872357

     

    转载于:https://www.cnblogs.com/-wenli/p/11210914.html

    展开全文
  • 随着机器视觉技术的成熟发展,无人机搭载视觉模块进行巡线成为技术热点,设计了以STM32为主控芯片,在拟定实验环境下采用四轴无人机设计完成其自主巡线、视觉跟随等功能。通过视觉模块OpenMV实现巡线过程中的线检测...
  • 基于STM32F103小四轴飞行器,带气压顶高
  • 如何使用光流芯片U30实现四轴无人机悬停

    千次阅读 多人点赞 2019-05-09 14:57:57
    如何使用光流芯片U30实现四轴无人机悬停 在没有GPS的环境下,比如室内环境,四轴无人机在水平方向会不断漂移。如何让无人机实现稳定的自主悬停呢?光流芯片可以感知无人机在水平方向的运动信息(速度、位移等),将...

    如何使用光流芯片U30实现四轴无人机悬停

    在没有GPS的环境下,比如室内环境,四轴无人机在水平方向会不断漂移。如何让无人机实现稳定的自主悬停呢?光流芯片可以感知无人机在水平方向的运动信息(速度、位移等),将该运动信息反馈给飞控系统,再结合无人机高度数据,无人机便可以实现高精度的自主悬停。湖南优象的光流芯片U30是专门为感知无人机在水平方向的运动而开发的一款ASIC芯片,四轴无人机获取U30的数据,调整PID参数就可以实现稳定的悬停。以前的光流视觉悬停技术对地面纹理、天气、白天/夜晚有特殊要求,导致无人机难以悬停在亮光瓷砖等光滑地面、柏油路等简单纹理地面上,光线不足或夜晚也无法悬停。U30采用先进的智能感知算法彻底解决了这些问题,可悬停于几乎所有的地面上,晚上在城市环境也能悬停,而且体积小、功耗低、成本低。
    无人机的飞控端从U30接收到光流数据后,接下来就是如何实现对于飞行的控制,即估计飞机真实的水平运动速度。以光流悬停为例,光流是如何抑制飞机悬停时的漂移的呢?一般来说,飞机在无光流时产生随机漂移的原因是姿态角度的误差造成的,使得飞机在自身有倾角时而错误的认为自身是水平而导致的,由于多旋翼是欠驱动系统,有倾角从而产生该方向上的漂移速度,因此光流就是估计这个误差角度或漂移速度,并反馈给控制系统进行控制(一般是串级的PID控制),控制输出的结果一般是飞机的倾斜角度,即期望角度。
    在实际使用中,用光流实现悬停时主要有两部分的工作,一是光流数据的处理,对U30输出的数据进行加工处理,可以是光流的自身滤波,或与加速度计进行融合滤波,以获取飞机的位移与速度信息;二是用处理后获得的估计位置与速度数据进行PID控制,控制飞机位置与速度调整,实现悬停。其基本流程如图1所示。
    一、U30输出数据的加工处理
    U30输出原始的光流数据并不是直接输出给PID使用,这些数据需要进行加工处理,才能供飞控端使用。对U30输出数据的处理分两种情况:一种是只使用纯光流数据,经过滤波处理得到飞机的位移与速度信息;二是将光流数据与加速度计进行融合,以得到飞控端PID控制所需要的位移和速度信息。
    只使用纯光流数据进行控制,平滑性与抗环境干扰性会差一些,但好处是处理简单,需要调试的参数少,且在悬停时与进行加速度融合控制效果也差不了多少,建议初次使用时先采用该方式,先跑通整个控制框架;将光流与IMU融合,如果IMU加速度计数据处理得好,数据各个方面的性能会好很多,如果处理不好或加速度计输出数据比较差反而会适得其反,且处理相对比较复杂,细节较多,调试更困难,因此在单纯用光流效果不理想,且调试一段时间后还没有改善,建议采用本方式。
    1.只使用光流纯数据的处理方法
    给出的光流数据经解码与处理后(参考附录中的up_flow.c)得到的x、y方向的光流flow_dat.x,flow_dat.y。因此光流纯数据的处理也是基于该两个变量。
    1.1 速度计算方法:
    speed_x = (hflow_dat.x/ (integration_timespan0.000001))100
    speed_y = (h
    flow_dat.y/(integration_timespan0.000001))100
    其中h为测量高度,单位m; integration_timespan为相邻两个光流输出的间隔时间,单位us,100是m->cm的转换。
    1.2 位移计算方法:
    sum_flow_x += speed_x
    (integration_timespan
    0.000001);
    sum_flow_y += speed_y*(integration_timespan0.000001);
    该位移默认开始悬停点为零,计算的是后续累积时间内,飞机距离该初始位置点的水平位移,单位为cm。
    在这里插入图片描述
    图1 光流数据处理与控制流程图
    1.3 备注:
    1.3.1 由于计算的速度帧率不是很高,且帧间的速度信息可能差别比较大,因此可以根据控制需要,选择对计算的速度进行低通滤波,但不宜引入过大的延时。
    1.3.2 理论上在速度计算之前需要进行旋转补偿,但在初始测试时,可以暂时先不考虑,先跑通整个框架。如果悬停效果可以接受也不用进行旋转补偿;若悬停时低频震荡且PID参数怎么也调试不好,就可能需要进行补偿,具体的旋转补偿方法在2.2节中再做详细叙述。
    1.3.3 光流位移量的处理有些细节需要注意,在某些情况下需要清除该累积位移与控制积分量。情况一,打摇杆后需要清零,否则松摇杆后飞机还会往前进的反方向后退一段距离;情况二,起飞前或正在起飞时需要清零,否则飞机会斜着起飞,即起飞上升时飞机往一边严重漂移。情况三,悬停时,当累积距离大于一定范围。
    1.3.4 在只使用气压计进行定高而没有超声波时,由于气压计会有很大漂移,因此输出的高度要做限制。首先限制高度要非负,另外在较低高度时可以使用固定高度,我们在测试时一般将高度写死固定为1m,实际测试发现在实际高度5m以下,使用该写死的高度也能有较好的悬停效果;当实际高度比较高时,可以适当放大该固定高度比例。
    2.光流与加速度计融合的处理方法
    一般单独使用光流的数据也能够获取较好的静态悬停效果,如果对光流的动态性能也有较高要求,比如实现更好的抗风、位移控制、目标跟随等高级功能,则需要进行光流与加速度计数据的融合以获取更加精确、平滑与实时的数据。具体实现可以参考<up_flow_fusion_demo.c>,下面对该文件进行简单梳理,并给出计算过程。
    第一步:确定使用高度。在只使用气压计高度时,高度不是很准(原因参考2.1.3备注中第四点),因此根据气压计的输出值,对使用的高度进行了分段处理,实际调试中可以根据飞机不同高度是否震荡进行调整,使飞机不震荡即可。
    第二步:光流角速度的计算。在2.1.2中speed_x为线速度,若speed_x不乘高度即为光流角速度,表示为fx = flow_dat.x/ (integration_timespan
    0.000001)),同理可求fy,单位为rad/s。
    第三步:光流旋转补偿。该步骤是提升性能核心,否则不能够支持比较大的PID控制参数,表现为加大控制参数飞机震荡。基本思想是使用陀螺仪角速度对光流进行旋转补偿,目的是使得飞机在只有旋转没有平移时光流最终输出为零。
    补偿公式为:
    fx_gyro_fix = ((fx + LIMIT(((gyro_lpf_y)/57.3f),-flow_t1,flow_t1)) *10 *use_height ) ; //rotation compensation
    fy_gyro_fix = ((fy - LIMIT(((gyro_lpf_x)/57.3f),-flow_t2,flow_t2)) *10 use_height ) ;
    以X方向的补偿为例,其中,fx_gyro_fix为旋转补偿后的输出,单位是mm/s;fx为光流角速度;(10 use_height)为使用的高度值,单位为mm。
    (gyro_lpf_y)/57.3为陀螺仪输出角速度,单位rad/s,flow_t1为对陀螺仪输出的限幅,值的大小由fx的输出最大值决定,因为陀螺仪的输出是远远大于光流的输出范围的,限幅避免过度补偿。gyro_lpf_y为原始的陀螺仪角速度(度/秒),经低通滤波后所得:LPF_1_(3.0f,dT,gyro_x,gyro_lpf_x),目的是使得光流输出的相位与陀螺仪相位一致。
    第四步:求水平航向坐标系下加速度值a(n)(该坐标系与俯仰和滚转角为零时的机体坐标系重合)。由姿态角可以获取姿态旋转矩阵,该姿态旋转矩阵在yaw=0时得到的旋转矩阵即为所求R,再使用a(n) = R
    a(b)求得目标向量值,包括xyz三个方向的加速度值,其中a(b)为机体加速度计测量向量,即传感器原始输出值,单位是mm/(s
    s)。
    第五步:加速度积分获取速度,并与光流进行互补滤波,获取初步的融合速度f1_fx.out。
    第六步:融合速度修正,由于加速度计积分有漂移,因此可能造成融合的速度在悬停或运动中会漂移真实值,而光流的计算是没有漂移及累积误差的,因此以光流数据做参考,对f1_fx.out做一个二次修正,得到最终融合速度输出f_out_x。
    备注:
    本算法中只对融合速度进行了处理,而没有融合高度的处理。因为在测试中发现使用融合速度积分得到位移精度反而不如单纯的光流累积计算精度高,因此建议位移的获取仍采用2.1.2中位移的获取方法。

    二、飞控端PID控制方法
    由光流获取飞机水平漂移的速度与位移后,即可以根据这些信息进行控制。以悬停为例,则期望的位移为零,反馈的即光流的测量值,一般采用的是串级的PID控制,即位置环+速度环控制,输出为期望角度,给姿态控制环。具体可以参考<up_flow.c>中的控制部分。由于该部分比较简单,在这里只对其中一些需要注意的细节进行描述。
    2.1 对于位置环,期望位置为零,反馈值为光流测量位移,输出为期望速度。
    2.2 对于速度环,期望值为位置环的输出,反馈值为光流测量速度,速度环输出为期望角度或期望加速度。理论上,输出应为期望加速度,并通过非线性转换为期望角度,从而传递给姿态环。在demo中我们的输出直接是期望角度,这是因为在小角度时,我们认为期望加速度与角度是线性相关的。
    2.3 定点控制中比较重要的一点,要确保外环的执行频率要低于内环的执行频率,否则会造成系统的不稳定。比如,我们位置环的控制周期为40ms,则速度环的控制周期为20ms等等。
    2.4 控制量在某些情况下需要清零,特别是控制积分量。比如打摇杆、起飞时或一键翻滚时。
    三、光流使用中需要注意的细节
    3.1 光流模块的检查。拿到光流芯片后,首先需要检查镜头表面是否有塑料薄膜、水珠、划痕等,确保镜头表面干净,器件或连线无松动等影响镜头成像效果的问题。
    3.2 光流模块的安装。在飞机上安装光流模块时,尽量保证镜头的水平,不要有倾斜角度,光流模块与机体坐标系不要有偏航方向的夹角且在机架的旋转中心,即光流模块的轴与机体坐标系的轴应尽量保持重合。特别注意一旦调试通过,进入批量生产时,在其他飞机上都需要以该方向固定安装,不可随意改变安装方向。
    3.3初始调试时,接上光流后,使用上位机观察是否有输出,验证输出值是否与图2.所述的光流坐标系定义一致,比如往左水平运动光流Y是否为正;水平向右运动光流Y是否为负,且输出值是否在合理范围等。
    3.4 确保光流的输出与机体控制坐标系的一致性,即实飞测试前需要验证光流的控制输出值与期望给飞机的控制指令是否一致(手拿着飞机水平移动,看输出是否符合预期),避免造成控制指令的不匹配导致的飞机乱飞现象。
    3.5 初始调试时应尽量选择光照明亮,地面纹理丰富且不反光,无风的环境进行,避免引入环境的干扰因素。

    四、附录<u30_flow.h> 与 <u30_flow.c>
    // up_flow.h

    #ifndef _up_flow_H
    #define _up_flow_H

    #include “stm32f4xx.h”
    #include “ms5611.h”

    void Flow_Init(void);
    void Flow_Duty(float dT);
    void Flow_Get(u8);

    extern struct flow_float flow_dat;

    extern float exp_rol_flow,exp_pit_flow;

    struct flow_integral_frame {
    unsigned short frame_count_since_last_readout;
    signed short pixel_flow_x_integral;
    signed short pixel_flow_y_integral;
    signed short gyro_x_rate_integral;
    signed short gyro_y_rate_integral;
    signed short gyro_z_rate_integral;
    unsigned int integration_timespan;
    unsigned int sonar_timestamp;
    unsigned short ground_distance;
    signed short gyro_temperature;
    unsigned char qual;
    } ;

    struct flow_float{
    float x;
    float y;
    unsigned short dt;
    unsigned char qual;
    unsigned char update;
    };#endif

    // up_flow.c

    #define LIMIT( x,min,max ) ( ((x) < (min)) ? (min) : ( ((x) > (max))? (max) : (x) ) )
    #define LPF_1_(hz,t,in,out) ((out) += ( 1 / ( 1 + 1 / ( (hz) *3.14f *(t) ) ) ) *( (in) - (out) )) //一阶低通滤波
    #define safe_div(numerator,denominator,safe_value) ( (denominator == 0)? (safe_value) : ((numerator)/(denominator)) )

    void filter_1(float base_hz,float gain_hz,float dT,float in,filter_1_st *f1) //动态调整滤波截止频率的一阶滤波
    {
    LPF_1
    (gain_hz,dT,(in - f1->out),f1->a); //低通后的变化量

    f1->b = my_pow(in - f1->out);  //求一个数平方函数
    
    f1->e_nr = LIMIT(safe_div(my_pow(f1->a),((f1->b) + my_pow(f1->a)),0),0,1); //变化量的有效率,LIMIT 将该数限制在0-1之间,safe_div为安全除法
    
    LPF_1_(base_hz *f1->e_nr,dT,in,f1->out); //低通跟踪
    

    }

    _xyz_f_st heading_coordinate_acc;

    _xyz_f_st heading_coordinate_speed_fus;
    _xyz_f_st heading_coordinate_speed_err_i;

    float fx_gyro_fix,fy_gyro_fix;
    float fx_o,fy_o;
    float f_out_x,f_out_y;
    float gyro_lpf_x,gyro_lpf_y;

    _filter_1_st f1_fx;
    _filter_1_st f1_fy;

    float f1_b,f1_g;

    //flow_dat.qual:x,y方向光流都有效:255,x有效:2,y有效:1,都无效:0;

    float gyro_x,gyro_y;

    void flow_fusion(float dT,float fx,float fy,s32 flow_height,u8 pos_hold)
    {
    float flow_t1 = 1.0,flow_t2 = 1.0;

    fx_o = fx *10 *flow_height;        //fx,fy(rad/s)-->flow speed (mm/s)
    fy_o = fy *10 *flow_height;	
    u32 use_height=100;
    
    if(flow_height<200)    //input height (cm/s)
    {
    	use_height = 100;
    }
    else if(flow_height<300)
    {
    	use_height = 150;
    }
    else if(flow_height<400)
    {
    	use_height = 200;
    }
    else if(flow_height<500)
    {
    	use_height = 250;
    }
    else if(flow_height<600)
    {
    	use_height = 300;
    }
    else if(flow_height<1000)
    {
    	use_height = 350;
    }
    else 
    {
    	use_height = 400;
    }
    
    
    if( pos_hold == 1)   //in pose hold mode
    {
    
    	gyro_y = (((s16)sensor.Gyro_deg.y/2 )*2 );   //degree per second
    	gyro_x = (((s16)sensor.Gyro_deg.x/2 )*2 );	
    	
            LPF_1_(3.0f,dT,gyro_y,gyro_lpf_y);     //gyro low pass filter (delay) for fitting flow data()
            LPF_1_(3.0f,dT,gyro_x,gyro_lpf_x);	
    		
    	fx_gyro_fix = ((fx  + LIMIT(((gyro_lpf_y)/57.3f),-flow_t1,flow_t1)) *10 *use_height ) ;  //rotation compensation
    	fy_gyro_fix = ((fy  - LIMIT(((gyro_lpf_x)/57.3f),-flow_t2,flow_t2)) *10 *use_height ) ;
    	
    	vec_3d_transition(&imu_data.z_vec, &imu_data.a_acc, &heading_coordinate_acc);   //机体坐标系下加速度到水平机体航向坐标系(将机体水平放置,没有偏航角,
    	                                                                                 //保持加速度与光流没有偏航方向的影响)
    				
    	f1_fx.out += ((s32)heading_coordinate_acc.x/10 *10 ) *dT;   //integrated  acceleration for speed
    	f1_fy.out += ((s32)heading_coordinate_acc.y/10 *10 ) *dT;
    	
    	f1_g = 2.5f;
    	if(flow_dat.qual <3)  //光流效果不好时
    	{
    		f1_b = 0.5f;		
    	}
    	else
    	{
    		if(f1_b<1.2f)
    		{
    			f1_b += 0.02f;
    		}	
    	}	
    	
    	filter_1(f1_b,f1_g,dT,fx_gyro_fix,&f1_fx);   //flow_data with acc integrated data complementary filtering
    	filter_1(f1_b,f1_g,dT,fy_gyro_fix,&f1_fy);
    	
    	heading_coordinate_speed_fus.x  = f1_fx.out;   //融合速度
    	heading_coordinate_speed_fus.y  = f1_fy.out;
    	
    	f_out_x = heading_coordinate_speed_fus.x + 0.1f *heading_coordinate_speed_err_i.x;  //融合速度二次修正,最终输出结果
    	f_out_y = heading_coordinate_speed_fus.y + 0.1f *heading_coordinate_speed_err_i.y;
    	
    	heading_coordinate_speed_err_i.x += (fx_gyro_fix - f_out_x) *dT;  
    	heading_coordinate_speed_err_i.y += (fy_gyro_fix - f_out_y) *dT;
    

    }

    }

    展开全文
  • 对开源无人机来说,无人机机架的稳定性,困扰着很多人,尤其是前几年没有好的电机、电调,机架和开源无人机入手十分困难。Ardupilot/Pixhawk这套无人机系统备受诟病,稳定性很差,各种炸机不断。随着无人机工业的...

    对开源无人机来说,无人机机架的稳定性,困扰着很多人,尤其是前几年没有好的电机、电调,机架和开源无人机入手十分困难。Ardupilot/Pixhawk这套无人机系统备受诟病,稳定性很差,各种炸机不断。随着无人机工业的发展,事情得到了转机,市面上逐渐出现了一批稳定可靠的无人机配件产品。​

    阿木实验室&科迪威动力
    ​阿木实验室和科迪威动力联合合作,推出教育版本的一款长续航无人机。之后分为基础款,和适配了普罗米修斯项目的机载计算机款。测试适配工作紧锣密鼓的开展当中,预计接下来几周就会面世。基础款已经可以在我们的官方淘宝店铺、京东店铺,或者合同订购了。

    系统总图

     

    通信链路图

    基础飞行测试

     

    追踪吊舱测试

     

    续航测试

     

    视频里面的无人机包含:TX2机载计算机系统(350g左右)、三轴USB10倍变焦吊舱系统(400g左右)、大功率WIFI数据传输模块(50g)。含电池无人机总重2.95KG(起飞重量)。视频里面无人机整个测试环节飞行时长为40分钟到45分钟左右,在载重850G的情况下,如此优秀的续航表现,标志着开源领域的无人机工业迈向新的台阶。

     

    科迪威多年的研发积累,采用FOC正弦波电调,半密封防水,灰尘电机。尤其FOC正弦波电调比普通的方波电调,力效极大的提升,续航时间更长(最长75min/空载2.1KG起飞重量下)。机身采用航空铝和碳纤维板材,兼具重量轻和坚固。

     

    阿木实验室在小型无人机机载计算机方面,也有多年积累,其普罗米修斯项目也逐渐成为无人系统领域的知名开源项目,深耕无人系统的教育行业。

     

    二者相互配合,一个在无人机机体方向,一个在机载计算机环境感知方向,一起为行业推出了智能飞行的无人机开发平台。

     

    定制版开源PX4 V1.10.0 GitHub项目地址:

    https://github.com/CodevDynamics/Codev-autopilot

     

    普罗米修斯项目github地址:

    https://github.com/amov-lab/Prometheus

     

    关注这些开源项目,大家的star也是我们前行的动力~

    无人机开发平台时间续航图

     

     

    扫码了解产品详情!

     

     

    我们相信,无人机领域将会向着专业化分工的方向发展。类比百年前的汽车和现在的汽车产业,现在的汽车产业就是专业化分工明确,有专门提供发动机的,提供玻璃的,提供变速箱的。目前的无人机领域,比前几年,已经逐步呈现这种趋势。前几年做无人机整机的厂商很难做,市面上没有稳定可靠的电调,电机,机架等等。现在市面上已经有很多厂商可以提供相对稳定可靠的配件设备了。我们和科迪威动力合作也是基于此,他们提供一套软件开源的无人机机体本身,我们阿木实验室来适配复杂的环境感知算法,提供一些机载设备,共同给这个无人机领域提供更好更可靠的产品。

    我们阿木实验室也积极的和各方厂家合作,帮助大疆推广他们的SDK并录制相关课程、适配国产华为的昇腾处理器等等。我们也希望能和更多的厂家和个人合作,共同推出产品和课程。

     

    展开全文
  • 四轴无人机的姿态解算(1)

    千次阅读 2019-07-23 03:04:38
    个数 [a,x,y,z]来表示一个旋转物体的姿态,a是角度,x,y,z表示一个三维向量,但向量既有长度又有方向,我们只需要一个向量来表示方向时,可以规定它是个单位向量。 然而这并不是 四元数 ,真正的四元数定义是...
  • 比如,无线调参,通过串口发送最先调的内环PID值给遥控器,然后遥控器通过NRF24传输给无人机进而改变无人机的PID值,方便调参。但是我在进行操作的时候写入flash里面,写一次经常不回成功,要写入2次或以上,有时还
  • 上次说重新焊接一块的,周末搞定了,基本组装的也完成了,上个图。 试飞还是可以的,因为没有光流和定高模块,所以稳定性不是很好,不过乐鑫预留了扩展模块的接口,大家可以自己根据接口选购模块。...
  • 1、前言 从现在开始我们要接触一个完整的工程,所以我们要对整个工程进行分析,将硬件设计、软件设计模块化,一个模块一个模块的完成,最后将各个模块融合在一起,...2、无人机设计整体思路 因为stm32是单线程cpu,所以
  • 原创 CJKK 苍穹四轴DIY 2019-09-03 鉴于不断有很多新手朋友想入门四轴无人机,对pixhawk飞控调试还不熟悉等问题。我们以S500机型+pixhawk飞控为例,做了以下这篇详细的图文教程。对组装调试过程再做一个细化。希望对...
  • 因为无人机属于比较危险的玩具,一旦失去控制后果不堪设想,从安全角度出发我使用比较稳妥的定时器输入捕获方法。 4、程序设计 定时器输入捕获的初始化不在赘述,在stm32基础篇有详细介绍。直接看PPM信号的接收,...
  • 粗糙版试飞成功! 陀螺仪部分直接飞线飞了一个模块,懒得焊了。不是很水平,稳定性不是很好。因为滤波算法中加入的元素太少了,目前也就MPU6050的输出数据加入了计算,所以很多自稳定性飞行功能都没有实现。...
  • 前面两次我们成功的将PPM信号的读取、储存和油门处理完成了,这次我们要开始真正的控制无人机,首先我们要了解无人机前后,左右,旋转,升降的原理。 2、动作原理 引用:...
  • CJKK 苍穹四轴DIY 2019-11-15 第八步 失控保护设置 PIX 的失控保护是通过故障保护菜单配置的,点击初始设置->必要硬件->故障保护,如下所示: 首先明确飞控有几种失控保护。 使用最多的失控保护有:...
  • 关注【二进制人工智能】微信公众号,回复无人机即可获得Solidworks文件
  • 1、前言 在之前的stm32基础篇中,已经实现了软模拟IIC,调用...在旋翼整体设计中分析到,姿态数据的读取储存非常重要,所以安排在1KHz的程序里面。 并且这次我们需要引入一个新的全局变量——report,控制是否将飞控
  • 1. 打开纸飞机四轴APP 2. 界面功能如下 3. 点击连接按钮,选择蓝牙设备Aircraft4j 4. 油门解锁在左下角,油门杆拉到最底端才能解锁 5. 软件使用重力感应功能,四轴的姿态将和手机姿态保持一致,手机水平,四轴 也将 ...
  • 简易蓝牙迷你四轴无人机制作教程资料参考

    千次阅读 多人点赞 2016-12-04 01:44:00
    这次给大家分享个基于MultiWii飞控的安卓手机(平板)蓝牙控制的微型四轴飞行器 首先给大家分享一些我收集的一些参考资料 一些开源迷你多轴无人机官网 CREELINKS 官网Crazepony 官网cleanflight 官网flexbot官网...
  • 树莓派做飞控的四轴无人机

    千次阅读 2020-09-18 14:52:54
    我碰巧有做一个无人机的想法,而且手上刚好有树莓派4b一个 树莓派支持pyrhon编程和实时调控 需要准备的材料 电流电压匹配的电机、电调和电池 我选择的是闲鱼买的90元个电机加电调加螺旋桨(未焊接) 电池选择2060...
  • 图文并茂详细教程之--用pixhawk飞控组装一台F450四轴无人机(上) 原创 CJKK 苍穹四轴DIY 2019-11-15 前面的教程已经详细介绍了如何使用Pixhawk飞控组装一台S500无人机。因为很多朋友购买的是F450机架,搭配的是...
  • https://mp.weixin.qq.com/s?__biz=Mzg2NDI0MzU5NA==&mid=2247484086&idx=1&sn=028fda952f19eddb01bbe179894bbf15&chksm=ce6d1853f91a914589604501d1b16a1ccc824f042748544820cec14fd221ab54fb7b27074356&scene=21#wechat_redirect 图文并茂详细教程之——用pixhawk飞控组装一台S500四轴无人机(中)...原创 CJKK 苍穹四轴DIY 2019-09-08 飞控的调试 上一篇教程详细介绍了S500硬件的组装过程,接下来重点介绍飞控的调试部分。 开源飞控因为其自身...
  • 开机时,M3对应的蓝色指示灯先亮,M4那头对应的LED09一直亮(只要板子上电,就会一直亮)。 充电时,红色LED11一直亮,没有变...1. 将飞机水平放于地面,中心箭头方向为机头方向,超前,操作手拿遥控站在飞机后面。 2.
  • (绿色小瓶为机头方向) 6、总结 本次我们只需要验证油门是否正确即可,下一次我们加入前后,左右,旋转三个动作,截止目前,总共使用了遥控器的个通道,辅助通道的数据可以执行什么操作我们自行设计。
  • 竞赛 电子设计大赛 四轴无人机 建议

    千次阅读 多人点赞 2017-08-13 14:38:40
    电子设计大赛过多的就不说了,要了解自己查一下就行了。参加电子设计大赛的这一个暑假我觉得自己过的非常的有意义。虽然最终的结果自己不够满意,但是我衷心的感谢所有帮助过我的老师,同学。这一次的比赛我们准备的...
  • STM32四轴代码

    2018-09-16 22:20:55
    四轴代码,质量杠杠的,优秀的一批,请大家提出宝贵意见,一起学艺 安防科技高峰就会到来
  • 四轴无人机和智能车编程实践目录

    万次阅读 2021-08-03 08:50:43
    智能车那些事 3 常用电子元件之电阻 智能车那些事 4 常用电子元件之电容 四轴无人机开发那些事 加速度计 磁罗盘 GPS定位 关于PWM模式的理解 MiniFly探索系列 MiniFly:系统及电源分析 MiniFly:main函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,685
精华内容 1,074
关键字:

四轴无人机

友情链接: ezVB6Demo.zip