PID功能块提供了比例、积分和微分形式的计算控制。PID运算是非迭代或ISA标准的算法。只要偏差存在,PID功能将对偏差进行积分运算,即将输出向纠正偏差的方向进行。图7-16 PID控制算法功能块PID1.正向和反向作用通过选项参数CONTROL_OPTS中的“Direct acting”位来设置运动的正向或反向作用。若TRK_IN_D或TRK_VAL状态为不可用,输出跟踪功能将关闭,PID状态将回到正常操作状态。......
2023-11-22
开源飞控为我们提供了丰富的研究、实践、学习资料。分析由全球无人机爱好者、研究者、工作者共同完成的代码,会在很多方面对我们产生帮助,同时也为大家提供了很好的平台去锻炼自己的实际工程能力,写出好的算法,做出好的系统与来自全世界的朋友分享。
为了平衡硬件与算法实践难度,本小节会以Multiwii开源飞控为例,挑选2.3版本控制器实现的部分代码与大家一同分析。完整代码或其他开源算法中的实现过程,大家可以通过互联网找到。
在控制器设计中往往会涉及三个方面:误差的获取,基于误差的算法实现,控制信号的生成和输出。在这其中“误差”的作用和意义犹如散文中“形散而神不散”的“神”,让我们借着它轻松理解整个算法结构。可以看到下面的代码:
error =rc-imu.gyroData[axis];
errorGyroI[axis] =constrain(errorGyroI[axis]+error,-16000,+16000);
这两行代码的作用是通过陀螺仪传回的数据,计算无人机角速度的误差。其中constrain为限幅函数,constrain(a,b,c),是将三个输入变量中的a限制在b,c组成的区间中。代码中errorGyroI[axis]+error体现了上一小节中积分运算的程序实现方式。
ITerm =(errorGyroI[axis]>>7)∗conf.pid[axis].I8>>6;
PTermACC=((int32_t)errorAngle∗conf.pid[PIDLEVEL].P8)>>7;
在这段代码中ITerm和PTermACC分别是PI控制器中的积分项和比例项。其中ITerm等号右边的代码中的errorGyroI[axis]即为三个误差的积分项,conf.pid[axis].I8实际上是PI控制器中的积分项系数Ki,因此ITerm的整个计算代码本质上就是计算了控制量的积分部分:ui。而PTermACC对应的代码就是计算控制器的比例部分:up,其中errorAngle为对应的角度误差,conf.pid[PIDLEVEL].P8则是飞控设置中写入的比例项系数Kp。
上面两段代码虽然很简单,可当我们真正进行代码实现时,必须熟悉所使用的语言工具,了解其中的语法规则和计算规则,并能够从中抽象出控制器结构,或者把控制器结构用合适的代码表示出来,还要注意对于编程而言非常重要的格式、注释习惯等,这些内容都需要读者慢慢在实践中进行积累。(请思考问题:上面这些内容哪些是你工作中需要的?哪些你并不需要?)
有关城堡里学无人机:原理、系统与实现的文章
PID功能块提供了比例、积分和微分形式的计算控制。PID运算是非迭代或ISA标准的算法。只要偏差存在,PID功能将对偏差进行积分运算,即将输出向纠正偏差的方向进行。图7-16 PID控制算法功能块PID1.正向和反向作用通过选项参数CONTROL_OPTS中的“Direct acting”位来设置运动的正向或反向作用。若TRK_IN_D或TRK_VAL状态为不可用,输出跟踪功能将关闭,PID状态将回到正常操作状态。......
2023-11-22
在6.1,6.2,6.3节中我们建立了无人机运动过程中所需要的坐标系、转换矩阵、姿态表示方法。控制系统设计是无人机系统设计中的一部分,在实现过程中这部分的复杂程度有可能因实施方和具体任务而展现出很大的差异。因此本节将重点放在控制算法的程序实现上,无论是算法仿真,半实物仿真,还是直接进行产品实现,都离不开算法的程序实现。......
2023-07-05
PI控制器在频率较低时主要起积分器的作用,而在高频时主要起线性比例放大器的作用。如果输入信号为单位阶跃信号时,其单位阶跃响应为其中,Kp=-R1/R0,PID控制器比例系数;Ti=R1C1,PID控制器积分时间常数;Td=R2C2,PID控制器微分时间常数。随着C2充电,反馈到输入端的电压逐渐增大,控制器输出电压逐渐降低。图4-7 PID控制器a)原理图 b)响应曲线......
2023-06-30
功能块PULSEGEN和功能块CONT_C一起,可实现具有脉冲输出的控制器,用于控制比例执行器。在参数分配期间,用户可以激活或取消激活PID控制器的子功能,以使控制器适合实际的工艺过程。......
2023-06-18
从仿真结果中可以看出,提出的边增加算法能够在自由度约束下保持网络的连通性,并使网络在动态状态下保持较高的加权代数连通度。这意味着采用本章提出的算法,每次实施网络重构时仅需调整少数链路即可,大规模地对链路进行调整是没有必要的,同时也反映了边增加算法随k的收敛较快,算法具有实用价值。图5-7边增加算法中不同自由度情况下maxλ2与k的关系......
2023-07-02
Spark MLlib中的K-means算法使用Map分布式读取数据集,并存储在内存里。计算时,用Map键值对表示随机挑选出来的k个聚类中心,Spark的驱动器节点负责把数据发送到各个工作节点,以实现具体的计算任务。Spark MLlib不同于传统的机器学习工具,它提供了简单易用的API,特别是Spark能够高效地处理大数据,并且在迭代计算时具有较强的优势。......
2023-11-21
量子遗传算法是一种将遗传算法和量子计算相结合的概率优化方法,两者相互作用。量子遗传算法是一种将量子比特的概率幅用于染色体编码,用量子门的调整操作来实现染色体更新,以完成进化搜索的方法。量子遗传算法的流程如下:初始化种群Q,随机生成n个用量子比特编码的染色体。......
2023-06-29
机器学习一般根据处理的数据是否存在人为标注可分为监督学习和无监督学习。因此,监督学习的根本目标是训练机器学习的泛化能力。总之,机器学习就是计算机在算法的指导下,能够自动学习大量输入数据样本的数据结构和内在规律,给机器赋予一定的智慧,从而对新样本进行智能识别,甚至实现对未来的预测。机器学习的一般流程如图6-1所示。......
2023-06-28
相关推荐