PID控制原理(全干货)

2023-05-16

主要内容:
1.常用的控制算法与PID控制算法的异同点;
2.PID控制算法的理论分析
3.基于单片机的PID算法实现
4.PID算法的工程应用的一些注意事项
5.演示板电路分析
6.PID算法C语言实现—基于ARM-CortexM3(STM32)的增量式PID温度控制

      一、常用的控制算法:

1.控制系统基本结构
在这里插入图片描述

控制目的:
控制的根本目的就是要使控制对象当前的状态值与用户的设定值相同(最大限度的接近)。
基本思想:
用户设定值SV与被控制对象当前的值PV两者同时送入由特定硬件电路模型或特定的软件算法组成的控制算法逻辑中,利用不同的控制算法对SV和PV进行分析、判断、处理,从而产生当前应该输出的控制信号OUT,控制信号经过执行机构施加到控制对象上,从而产生预期的控制效果。
2.常用控制算法:—位式控制
1).二位式控制算法

  1. 在这里插入图片描述

特点:
a.二位式控制算法输出的控制量只有高低2种状态。
b.执行机构使控制对象要不全额工作,要不就停止工作。当PV低于SV时全额工作,PV大于或等于SV时就彻底停止工作。如果控制对象是一个1000W的加热器,温度不到时就1000W全功率运行,温度达到时就停止工作。
c.由于环境因素或控制系统传输延时或者控制对象本身的惯性等因素,控制效果往往是PV在SV的上下有一个较大的波动。
d.在PV接近SV的临界点时,控制输出信号OUT往往在H和L之间频繁转换,导致执行部件的触点频繁开关动作,易产生干扰及缩短执行部件的寿命。

2).具有回差的二位式控制算法
在这里插入图片描述
特点:
a. 取SV的正负10%左右作为回差调节上下限,
高于上限才开始输出L,低于下限才开始输出H;
b.避免了一般二位式控制算法在临界点时执行部件频繁动作。
c.因为控制对象只有全额运行或不运行两种状态,仍然存在一般二位式控制算法的缺点:PV总是在SV附近波动。
3).三位式控制算法
在这里插入图片描述
特点:在二位式控制的基础上对控制对象的功率分成0功率(停止工作)、半功率、全功率三种情况(即三位)。
当前值低于设定值一定比例(一般10%)时OUT1和OUT2同时起控制作用,控制对象全功率运行;
当前值在设定值的正负10%范围时,OUT1单独作用,工作于半功率状态;
当前值达到或超过设定值时OUT1和OUT2都停止输出,控制对象停止工作。
相对一般二位式控制算法,三位式算法对控制对象的当前状态值做了简单的分析,并根据不同的当前状态值输出不同的控制信号。能够较好的对输出产生控制效果。

小结:位式控制的主要特征:

1.控制算法只关注控制当前的状态值(PV)与设定值之间的差值—二者当前有差值就输出控制信号,二者当前无差值就不输出控制信号。
2.位式控制算法的输出信号状态单一,只输出了高低两种状态,这两种状态对应着控制对象的工作与不工作----如果是温度控制系统,就是加热器加热与不加热。
3.由于控制系统自身的延时或者控制对象自身的惯性,位式控制算法只能使控制对象当前的状态值在设定值附件波动,不能很好的跟踪在设定值的附近甚至相等。

     二、PID控制算法

1.PID控制算法的基本思想
在这里插入图片描述


  PID算法是一种具有预见性的控制算法,其核心思想是:
  
  1>. PID算法不但考虑控制对象的当前状态值(现在状态),而且还考虑控制对象过去一段时间的状态值(历史状态)和最近一段时间的状态值变化(预期),由这3方面共同决定当前的输出控制信号;
  2>.PID控制算法的运算结果是一个数,利用这个数来控制被控对象在多种工作状态(比如加热器的多种功率,阀门的多种开度等)工作,一般输出形式为PWM,基本上满足了按需输出控制信号,根据情况随时改变输出的目的。

2.PID算法分析:
   设某控制系统:用户设定值为SV(也就是希望通过PID控制算法使被控制对象的状态值保持在SV的附件)。
   
  1>从系统投入运行开始,控制算法每隔一段时间对被控制对象的状态值进行采样。由此,可得到开机以来由各个采样时间点被控制对象的状态值所形成的数据序列:
   X1,X2, X3, X4, .... Xk-2,Xk-1,Xk
 说明:
   X1:开机以来的第一次采样值
   Xk:  目前的采样值(最近一次的采样值)
  2> 从这个采样值序列中提取出三方面信息:
   ①当前采样值Xk与用户设定值SV之间的差值:Ek
         Ek =Sv - Xk
   分析Ek:
       >0:说明当前状态值未达标
 Ek    =0:说明当前控制状态值正好满足要求
       <0:说明当前状态值已经超标
     结论:Ek反应了控制对象当前值与设定值的偏差程度,可以根据Ek的大小对输出信号OUT进行调整:偏差程度大OUT增大,偏差程度小OUT减小。即输出信号的强弱与当前偏差程度的大小成比例,所以根据Ek的大小来给出控制信号OUT的当前值的算法称为比例控制(Proportion)。用数学模型可以表示为:
       POUT=(Kp*Ek)+ Out0
     Kp:一般称之为比例系数,可以理解为硬件上的放大器(或衰减器),适当选取Kp将当前误差值Ek
按一定的增益放大或缩小,以提高控制算法的相应速度。
   Out0:是一个常数,目的是为了当Ek为0时,确保输出信号不为0,以不至于在当前值与设定值相等时控制器输出信号OUT为0,系统处于无控制信号的失控状态。
  ②将投入运行以来的各个采样值都与设定值相减,可得到开机以来每个采样时刻的偏差序列数据:
   E1,E2,E3 .....Ek-2,Ek-1,Ek
  说明:
   E1:开机的第一个采样点与设定值的偏差
       E1=SV-X1;
       E2=SV-X2;
       ......
       EK-2=SV-XK-2;
       EK-1=SV-XK-1;
   Ek:  当前的采样值与设定值的偏差
       EK=SV-XK
  分析开机以来的误差序列:
     每个偏差值可能有:>0,<0,=0这三种可能的值,因为从开机到现在,控制算法不断输出控制信号对被控对象进行控制,导致了过去这段时间有时候超标(Ex<0),有些时候未达标(Ex>0),有时候正好满足要求(Ex=0);如果将这些偏差值进行累加求代数和得到Sk,即:
  Sk=E1+E2+E3+.........+Ek-2+Ek-1+Ek
分析Sk:

      >0: 过去大多数时候未达标

  Sk  =0:过去控制效果较理想

      <0: 过去大多数时候已经超标

 结论:1.通过对Sk的分析,可以对控制算法过去的控制效果进行综合评估。体现了控制算法按照原来的方式输出的控制信号导致了现在的控制结果,所以应该利用这个值来对当前要输出的控制信号OUT进行修正,以确保控制对象会在将来的一小段时间尽快达到用户设定的值。
       2.Sk实际上是过去每个时间点的误差相加,与数学上的定积分运算类似,因此根据Sk对输出信号进行调节的算法称积分(integral)算法。所以积分控制的数学模型为:
  IOUT=(kp* ( (1/Ti)  Exdt))+Out0
   
  Kp是一常数,其目的类似硬件上的放大器,用于将Sk放大或衰减;
 Out0是一常数,为了在历史积分偏差值为0时确保系统有一个输出值,避免失控;
  Ti  是积分时间常数,取值越大会导致输出量OUT会越小,可理解为历史上已经很久的误差值都影响了当前的输出信号。取值越小,输出OUT会越强烈,可理解为积分只考虑了最近一段时间的误差。
     实际中,如果系统已经运行“很长”一段时间了,那些早期采样的偏差值可以忽略他们对当前控制的影响,所以应该根据情况选择合理的Ti值方能得到良好的控制效果。
 标题PID控制
主要内容:1.常用的控制算法与PID控制算法的异同点;2.PID控制算法的理论分析3.基于单片机的PID算法实现4.PID算法的工程应用的一些注意事项5.演示板电路分析6.PID算法C语言实现---基于ARM-CortexM3(STM32)的增量式PID温度控制一、常用的控制算法:1.控制系统的基本结构:
控制目的:控制的根本目的就是要使控制对象当前的状态值与用户的设定值相同(最大限度的接近)。基本思想:用户设定值SV与被控制对象当前的值PV两者同时送入由特定硬件电路模型或特定的软件算法组成的控制算法逻辑中,利用不同的控制算法对SV和PV进行分析、判断、处理,从而产生当前应该输出的控制信号OUT,控制信号经过执行机构施加到控制对象上,从而产生预期的控制效果。2.常用控制算法:---位式控制 1).二位式控制算法特点:   a.二位式控制算法输出的控制量只有高低2种状态。   b.执行机构使控制对象要不全额工作,要不就停止工作。当PV低于SV时全额工作,PV大于或等于SV时就彻底停止工作。如果控制对象是一个1000W的加热器,温度不到时就1000W全功率运行,温度达到时就停止工作。   c.由于环境因素或控制系统传输延时或者控制对象本身的惯性等因素,控制效果往往是PV在SV的上下有一个较大的波动。  d.在PV接近SV的临界点时,控制输出信号OUT往往在H和L之间频繁转换,导致执行部件的触点频繁开关动作,易产生干扰及缩短执行部件的寿命。2).具有回差的二位式控制算法特点:  a. 取SV的正负10%左右作为回差调节上下限,高于上限才开始输出L,低于下限才开始输出H;  b.避免了一般二位式控制算法在临界点时执行部件频繁动作。  c.因为控制对象只有全额运行或不运行两种状态,仍然存在一般二位式控制算法的缺点:PV总是在SV附近波动。 3).三位式控制算法特点:在二位式控制的基础上对控制对象的功率分成0功率(停止工作)、半功率、全功率三种情况(即三位)。当前值低于设定值一定比例(一般10%)时OUT1和OUT2同时起控制作用,控制对象全功率运行;当前值在设定值的正负10%范围时,OUT1单独作用,工作于半功率状态;当前值达到或超过设定值时OUT1和OUT2都停止输出,控制对象停止工作。相对一般二位式控制算法,三位式算法对控制对象的当前状态值做了简单的分析,并根据不同的当前状态值输出不同的控制信号。能够较好的对输出产生控制效果。小结:位式控制的主要特征:   1.控制算法只关注控制当前的状态值(PV)与设定值之间的差值---二者当前有差值就输出控制信号,二者当前无差值就不输出控制信号。   2.位式控制算法的输出信号状态单一,只输出了高低两种状态,这两种状态对应着控制对象的工作与不工作----如果是温度控制系统,就是加热器加热与不加热。3.由于控制系统自身的延时或者控制对象自身的惯性,位式控制算法只能使控制对象当前的状态值在设定值附件波动,不能很好的跟踪在设定值的附近甚至相等。二、PID控制算法1.PID控制算法的基本思想  PID算法是一种具有预见性的控制算法,其核心思想是:  1>. PID算法不但考虑控制对象的当前状态值(现在状态),而且还考虑控制对象过去一段时间的状态值(历史状态)和最近一段时间的状态值变化(预期),由这3方面共同决定当前的输出控制信号;  2>.PID控制算法的运算结果是一个数,利用这个数来控制被控对象在多种工作状态(比如加热器的多种功率,阀门的多种开度等)工作,一般输出形式为PWM,基本上满足了按需输出控制信号,根据情况随时改变输出的目的。2.PID算法分析:设某控制系统:用户设定值为SV(也就是希望通过PID控制算法使被控制对象的状态值保持在SV的附件)。1>从系统投入运行开始,控制算法每隔一段时间对被控制对象的状态值进行采样。由此,可得到开机以来由各个采样时间点被控制对象的状态值所形成的数据序列:X1,X2, X3, X4, .... Xk-2,Xk-1,Xk说明:X1:开机以来的第一次采样值Xk:  目前的采样值(最近一次的采样值)2> 从这个采样值序列中提取出三方面信息:①当前采样值Xk与用户设定值SV之间的差值:EkEk =Sv-Xk分析Ek:       >0:说明当前状态值未达标Ek    =0:说明当前控制状态值正好满足要求       <0:说明当前状态值已经超标结论:Ek反应了控制对象当前值与设定值的偏差程度,可以根据Ek的大小对输出信号OUT进行调整:偏差程度大OUT增大,偏差程度小OUT减小。即输出信号的强弱与当前偏差程度的大小成比例,所以根据Ek的大小来给出控制信号OUT的当前值的算法称为比例控制(Proportion)。用数学模型可以表示为:POUT=(Kp*Ek)+Out0     Kp:一般称之为比例系数,可以理解为硬件上的放大器(或衰减器),适当选取Kp将当前误差值Ek按一定的增益放大或缩小,以提高控制算法的相应速度。   Out0:是一个常数,目的是为了当Ek为0时,确保输出信号不为0,以不至于在当前值与设定值相等时控制器输出信号OUT为0,系统处于无控制信号的失控状态。②将投入运行以来的各个采样值都与设定值相减,可得到开机以来每个采样时刻的偏差序列数据:   E1,E2,E3 .....Ek-2,Ek-1,Ek说明:   E1:开机的第一个采样点与设定值的偏差       E1=SV-X1;       E2=SV-X2;       ......       EK-2=SV-XK-2;       EK-1=SV-XK-1;   Ek:  当前的采样值与设定值的偏差       EK=SV-XK分析开机以来的误差序列:每个偏差值可能有:>0,<0,=0这三种可能的值,因为从开机到现在,控制算法不断输出控制信号对被控对象进行控制,导致了过去这段时间有时候超标(Ex<0),有些时候未达标(Ex>0),有时候正好满足要求(Ex=0);如果将这些偏差值进行累加求代数和得到Sk,即:Sk=E1+E2+E3+.........+Ek-2+Ek-1+Ek分析Sk:     >0: 过去大多数时候未达标Sk  =0:过去控制效果较理想      <0: 过去大多数时候已经超标结论:1.通过对Sk的分析,可以对控制算法过去的控制效果进行综合评估。体现了控制算法按照原来的方式输出的控制信号导致了现在的控制结果,所以应该利用这个值来对当前要输出的控制信号OUT进行修正,以确保控制对象会在将来的一小段时间尽快达到用户设定的值。       2.Sk实际上是过去每个时间点的误差相加,与数学上的定积分运算类似,因此根据Sk对输出信号进行调节的算法称积分(integral)算法。所以积分控制的数学模型为:IOUT=(kp* ((1/Ti)Exdt))+Out0  Kp是一常数,其目的类似硬件上的放大器,用于将Sk放大或衰减; Out0是一常数,为了在历史积分偏差值为0时确保系统有一个输出值,避免失控;  Ti  是积分时间常数,取值越大会导致输出量OUT会越小,可理解为历史上已经很久的误差值都影响了当前的输出信号。取值越小,输出OUT会越强烈,可理解为积分只考虑了最近一段时间的误差。实际中,如果系统已经运行“很长”一段时间了,那些早期采样的偏差值可以忽略他们对当前控制的影响,所以应该根据情况选择合理的Ti值方能得到良好的控制效果。③最近两次的偏差之差 DkDk=Ek-Ek-1说明:   Ek:当前的偏差   Ek-1: 基于当前的前一个采样时刻的偏差值(即上一次的偏差值);分析Dk:         >0:说明从上一采样时刻到当前误差有增大趋势Dk   =0:说明从上一采样时刻到当前误差平稳         <0:说明从上一采样时刻到当前误差有减小趋势    Dk>0        Dk=0       Dk<0   Ek-1  Ek     Ek-1  Ek    Ek-1 Ek结论: 1. Dk能够说明从上次采样到当前采样的这段时间被控制对象的状态变化趋势,这种变化的趋势很可能会在一定程度上延续到下一个采样时间点,所以可以根据这个变化趋势(Dk的值)对输出信号OUT进行调整,达到提前控制的目的。  2. Dk形如数学上的微分运算,反应了控制对象在一段时间内的变化趋势及变化量,所以利用Dk对控制器输出信号进行调节的算法称为微分(differential)算法。可以用数学模型表达为:DOUT=Kp*(Td(de/dt))+Out0 Kp:为一常数,可理解为硬件上的放大器或衰减器,用于对输出信号OUT的增益进行调整;  Out0:为一常数,为了在Dk为0时确保OUT都有一个稳定的控制值,避免失控。 Td:叫微分时间常数,(犹如硬件上电感器的自感系数)Td越大导致OUT增大,对输出信号产生强烈的影响。3>PID算法的形成1.比例、积分、微分三种算法的优缺点分析:POUT=(Kp*Ek)+ Out0       --比例算法IOUT=kp* ( (1/Ti)  Exdt)+Out0  --积分算法DOUT=Kp*(Td(de/dt))+Out0    --微分算法比例算法: 只考虑控制对象当前误差,当前有误差才输出控制信号,当前没有误差就不输出控制信号,也就是说只要偏差已经产生了比例算法才采取措施进行调整,所以单独的比例算法不可能将控制对象的状态值控制在设定值上,始终在设定值上下波动;但是比例控制反应灵敏,有误差马上就反应到输出。积分算法:考虑了被控制对象的历史误差情况,过去的误差状况参与了当前的输出控制,但是在系统还没有达到目标期间,往往会因为这些历史的误差对当前的控制产生了干扰(即拖后腿),使用不当反而搅乱当前的输出。但是在系统进入稳定状态后,特别是当前值与设定值没有偏差时,积分算法可以根据过去的偏差值输出一个相对稳定的控制信号,以防止产生偏离目标,起到打预防针的效果。微分算法:单纯的考虑了近期的变化率,当系统的偏差趋近于某一个固定值时(变化率为0),微分算法不输出信号对其偏差进行调整,所以微分算法不能单独使用,它只关心偏差的变化速度,不考虑是否有偏差(偏差变化率为0时偏差不一定是0).但是微分算法能获得控制对象近期的变化趋势,它可以协助输出信号尽早的抑制控制对象的变化。可以理解为将要有剧烈变化时就大幅度调整输出信号进行抑制,避免了控制对象的大幅度变化。以上三种算法综合起来产生一个当前的控制量对控制对象进行控制,它们的优缺点互补,即形成经典的PID算法。 2.PID算法数学模型 OUT=POUT+IOUT+DOUT即:OUT=((Kp*Ek)+ Out0)+(kp* ( (1/Ti) Exdt)+Out0)+ (Kp*(Td(de/dt))+Out0)整理该式子得到:将各项的Out0归并为OUT0。OUT=kp(Ek+((1/Ti)Exdt))+(Td(de/dt)))+OUT03.PID算法在单片机中的应用 1)PID算法在单片机中应用时,对积分和微分项可以作近似变换:对于积分项可改写成:nI =1/Ti∑Ek*Tk=0即用过去一段时间的采样点的偏差值的代数和的代替积分。 T是采样周期,也叫控制周期,每隔T时间段进行一次PID计算。对于微分项可改写成:D=TD*((Ek-Ek-1)/T) Ek:本次偏差,Ek-1上次的偏差值2)位置式PID算法数学模型由此可得到单片机中PID算法的表达式:OUT=kp(Ek+((1/Ti)Exdt))+(Td(de/dt)))+OUT0=>  OUT=             nKp(En+(1/Ti∑Ek*T)+(TD*((Ek-Ek-1)/T)))+out0                 k=0进一步展开得:nOUT=(Kp*Ek) + (Kp*(T/Ti)∑Ek) +(Kp*(TD/T)(EK-Ek-1)) +OUT0k=0令 Ki= Kp*(T/Ti);KD=(Kp*(TD/T)故:nOUT=(Kp*Ek) + (Ki∑Ek) +(KD(EK-Ek-1)) +OUT0k=0程序设计时利用C语言或汇编语言可以方便实现这个计算公式。OUT即为本次运算的结果,利用OUT可以去驱动执行机构输出对应的控制信号,例如温度控制就可以控制PWM的宽度,电磁阀就可以改变电磁线圈电流以改变阀门开度,或者是可控硅的导通角度等;这种PID算法计算出的结果(OUT值)表示当前控制器应该输出的控制量,所以称为位置式(直接输出了执行机构应该达到的状态值)。3)增量式PID算法位置式PID算法计算量较大,比较消耗处理器的资源。在有些控制系统中,执行机构本身没有记忆功能,比如MOS管是否导通完全取决于控制极电压,可控硅是否导通取决于触发信号,继电器是否接通取决于线圈电流等,只要控制信号丢失,执行机构就停止,在这些应用中应该采用位置式PID。也有一些执行机构本身具有记忆功能,比如步进电机,即使控制信号丢失,由于其自身的机械结构会保持在原来的位置等,在这些控制系统中,PID算法没有必要输出本次应该到达的真实位置,只需要说明应该在上次的基础上对输出信号做多大的修正(可正可负)即可,这就是增量式PID算法。增量式PID计算出的是应该在当前控制信号上的调整值,如果计算出为正,则增强输出信号;如果计算出为负则减弱输出信号。增量式PID算法数学模型:如果用OUTK-1表示上次的输出控制信号值,那么当前的输出值应该为OUTk,这两者之间的关系为: OUTK=OUTk-1+   OUTOUT即为应该输出的增量值;上式变形得:OUT= OUTK- OUTk-1本次的位置式算法输出:nOUTk=(Kp*Ek) + (Ki∑Ek) +(KD(EK-Ek-1)) +OUT0 --1式k=0上次的位置式算法输出:n-1OUTk-1=(Kp*Ek-1) +(Ki∑Ek) +(KD(EK-1-Ek-2)) +OUT0--2式k=0上述1式减2式即得到相邻两次的增量:如前所述:Ki= Kp*(T/Ti);KD=(Kp*(TD/T)OUT= OUTK- OUTk-1=kp(EK-EK-1)+((Kp*T)/Ti)Ek+(((Kp*TD)/T)*(Ek-2Ek-1+Ek-2)) EK:本次的偏差; Ek-1:上次的偏差 Ek-2:上上次的偏差 Kp:算法增益调节 Ti :积分时间 TD:  微分时间常数结论:增量式PID的计算只需要最近3次的偏差(本次偏差,上次偏差,上上次偏差),不需要处理器存储大量的历史偏差值,计算量也相对较少,容易实现。 4)关于Ti和TD的理解:在PID控制算法中,当前的输出信号由比例项,积分项,微分项共同作用形成,当比例项输出不为0时,如果积分项对运算输出的贡献作用与比例项对运算对输出的贡献一样时(即同为正或同为负时),积分项相当于重复了一次比例项产生作用的时间,这个时间就可以理解为积分时间。当比例项不为0时,如果微分项在一段时间里计算的结果与比例项对输出的贡献相同(即同为正或同为负)时,微分项相当于在一段时间里重复了比例项的作用,这段时间可理解为就是微分时间。实际应用中应该合理选择Kp,Ti,Td以确保三者对输出的贡献平衡,从而使控制对象在设定值的附近。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PID控制原理(全干货) 的相关文章

  • 【Python与机器学习】5.K-Means聚类

    聚类 xff08 clustering xff09 什么是聚类 聚类属于无监督学习 xff08 unsupervised learning xff09 xff0c 即无类别标记 是数据挖掘经典算法之一 算法接收参数k xff1b 然后将样本
  • 穿过已知点画平滑曲线(3次贝塞尔曲线)

    为了把一串点连成光滑的曲线 xff0c 先研究贝塞尔曲线 xff0c 又搞B样条插值 都没有成功 数学没那么强 后来在 翻译 AGG 之贝塞尔插值 http liyiwen javaeye com blog 705489 看到一种比较好的方
  • 二值信号量和互斥锁到底有什么区别?

    原文链接 xff1a https www cnblogs com codescrew p 8970514 html 在说明之前我先抛出结论 xff1a 互斥锁和二值信号量在使用上非常相似 xff0c 但是互斥锁解决了优先级翻转的问题 假定我
  • 使用stm32CubeMX自动配置的工程文件,进行串口的不定长接收(非DMA方式)

    方法描述 xff1a 使用stm32CubeMX自动配置的工程文件 xff0c 进行串口的不定长接收 xff08 非DMA方式 xff09 实际问题解决尝试 xff1a 1 HAL库函数只有接收定长数据HAL UART Receive xf
  • 基于STM32平台的BMP180测试(模拟IIC)

    1 测试描述 xff1a 使用模拟IIC xff0c 从BMP180中获取ID号 温度值 气压值以及计算海拔高度 2 测试准备 xff1a 硬件平台 xff1a 原子战舰V3开发板 测试工具 xff1a 逻辑分析仪 串口调试工具 3 数据手
  • gitee 添加ssh公钥

    首先需要安装git 打开 Git Bash 在Bash中输入 ssh keygen t rsa C 34 xxxx 64 yyy com 34 用你的邮件地址进行替换 连着按三次回车 xff0c 第一次提示 34 Enter file in
  • ROS中使用<serial/serial.h>头文件

    ROS中使用 lt serial serial h gt 头文件 问题描述 编译后出现fatal error serial serial h 没有那个文件或目录 include lt serial serial h gt 解决办法 缺少se
  • realsenseD435i使用IMU出错

    realsense 使用IMU出错 已经参照blogs xff1a https blog csdn net weixin 46363611 article details 114643088 将 realsense ws src reals
  • 对极几何,PNP,ICP求解位姿的方法原理、优缺点

    文章目录 一 对极几何估计位姿1 本质矩阵或基础矩阵估计2 单应矩阵估计3 2D 2D时 xff0c 空间点位置计算 二 PNP估计位姿1 P3P方法估计位姿2 DLT方法估计位姿3 EPnP方法估计位姿3 BA方法估计位姿 三 ICP方法
  • 顺序表查找与散列表(哈希表)

    文章目录 一 数据结构二 平均查找长度 xff08 ASL xff09 三 顺序表查找1 顺序查找2 折半查找3 分块查找4 顺序表查找的对比 四 散列表1 散列表构造2 开放地址散列表构造3 散列表查找效率分析 一 数据结构 二 平均查找
  • You‘ll have to kill the Xtightvnc process manually

    You 39 ll have to kill the Xtightvnc process manually 然后 pkill u user
  • ubuntu Linux多个内核选择

    一 问题 ununtu经常自动升级 xff0c 或者是我们在update时 xff0c 系统自动升级内核 此时会导致较高版本的内核与系统相互矛盾 xff0c 而导致卡机等问题 此时需要对多余内核进行设置为默认内核或者将不正确内核删除 两种方
  • 东北天(ENU)和北东地(NED)

    文章目录 一 坐标系定义1 东北天坐标系 xff08 ENU xff09 2 北东地坐标系 xff08 NED xff09 二 在ENU坐标系向量变换到NED坐标系向量三 将载体相对ENU的姿态和位置 xff0c 变换为载体相对NED的姿态
  • opencv for arm

    大家好 xff0c 这篇文章介绍了在arm开发板上移植opencv的过程 虚拟机 xff1a Ubuntu16 04 64位 单板 xff1a jz2440 编译器 xff1a arm linux gcc 4 4 3 opencvbanbo
  • 多传感器数据融合算法综述

    多传感器数据融合是一个新兴的研究领域 xff0c 是针对一个系统使用多种传感器这一特定问题而展开的一种关于数据处理的研究 多传感器数据融合技术是近几年来发展起来的一门实践性较强的应用技术 xff0c 是多学科交叉的新技术 xff0c 涉及到
  • ROS之tf坐标变换

    1 什么是tf 变换 ROS 中的很多软件包都需要机器人发布tf 变换树 xff0c 那么什么是tf 变换树呢 xff1f 抽象的来讲 xff0c 一棵tf 变换树定义了不同坐标系之间的平移与旋转变换关系 具体来说 xff0c 我们假设有一
  • Android下载repo文件报错

    在执行 curl https dl ssl google com dl googlesource git repo repo gt bin repo 下代码的时候 xff0c 报以下错误 curl 7 couldn 39 t connect
  • 树莓派设置自动连接无线网络

    树莓派开机后自动连接无线网络方法 xff0c 亲测有效 1 在任意方法 xff08 无线或有线 xff09 已经连接树莓派的基础上 xff0c 执行该命令 xff0c 意思是编辑wpa supplicant conf这个文件 内容如下 xf
  • Spring boot Druid 多数据源JDBC和注解事务

    1 引入依赖 gradle文件配置 用maven引入也可以 runtimeOnly span class token string 39 com microsoft sqlserver mssql jdbc 39 span span cla
  • 优化查询性能

    目录 1 创建支持查询的索引2 限制查询结果的数量来减少网络需求3 使用投影来只返回需要的数据4 使用 hint来选择一个特点的索引5 使用增量运算符来执行服务端操作 进入MongoDB中文手册 xff08 4 2版本 xff09 目录 1

随机推荐

  • 'node' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决方法

    windows系统里 需要把nodejs安装目录路径设置进系统变量或用户变量 1 打开控制面板 gt 系统和安全 gt 系统 gt 高级系统设置 gt 环境变量 2 在 用户变量 或 系统变量 中查找变量PATH并将node js文件夹路径
  • .NET Action 与 Func

    Action 与 Func是 NET类库中增加的内置委托 xff0c 以便更加简洁方便的使用委托 内置委托类型 xff0c 顾名思义Action和Func本身就是已经定义好的委托类型 两种委托类型的区别在于 xff1a Action委托签名
  • 卸掉notepad++,永远不再使用!!!

    昨天看到消息称notepad 43 43 这款软件的官网发布了反华言论 xff0c 自己刚刚去他的官网看了下 xff0c 还真是 https notepad plus plus org news v781 free uyghur editi
  • IMX6ULL第一个裸机程序,点亮LED

    一 环境 1 100ask imx6ull开发板 2 mint19开发环境 二 硬件原理图 LED的管脚为GPIO5 IO03 当GPIO5 IO03为高电平时 xff0c LED熄灭 xff1b 当GPIO5 IO03为低电平时 xff0
  • WSL使用NFS

    微软的WLS下挂NFS系统是失败的 xff0c 因为内核不支持 xff0c 此路是不通的 xff0c 至少目前我是没有找到解决办法 xff0c 可以使用hane winNFS替代
  • AD导出PDF内容显示不全解决办法

    DXP gt Preferneces gt Schematic gt General下 取消Render Text with GDI 43
  • uboot编译报错 dtc: command not found解决办法

    编译uboot 报错 解决办法 span class token function sudo span span class token function apt get span span class token function ins
  • 解决imx6ull开发板加载驱动disagrees about version of symbol module_layout失败问题

    一 环境 1 硬件 100ask imx6ull单板 2 软件环境 xff0c 提供的开发环境 二 报错信息 hello drv disagrees about version of symbol module layout insmod
  • 应用软件安装

    在进行开发中 xff0c 会使用到很多各种类型的软件 xff0c 现在将其进行整理 xff0c 列表如下 xff0c 如有需要 xff0c 请给我留言 xff0c 我可以给分享给大家 001 application software 序号
  • 安装树莓派的系统到SD卡

    安装树莓派的系统到 SD卡 准备工作 1 一张 16G 以上的 SD 卡 xff0c 最好是高速卡 xff0c 推荐 Class4 以上的卡 xff0c 因为卡得速度直接影响树莓派的运行速度 2 格式化SD卡工具 xff0c 建议使用工具
  • 串口测试例程

    串口分为RS232和TTL xff0c 所以在测试前请先确认自己的串口类型进行测试 下面以海思的一个RS232串口为例说明一下具体的测试过程 xff0c 串口测试代码参考的为讯为提供的 xff0c 在其基础上做的调整 1 确定接口 xff0
  • C语言中的字符串初始化

    1 C语言没有字符串类型 xff0c 通过字符数组模拟 xff0c C语言字符串 xff0c 以字符 0 数字0 2 数组指定长度后 xff0c 后面没有赋值的元素 xff0c 自动补0 char buf 100 61 39 a 39 39
  • 自动收取蚂蚁森林能量雨

    首先 xff0c 说明一下 这是一个非常迂回且效果不佳的方法 xff0c 小弟不才 xff0c 安卓以及苹果手机上的脚本没啥研究 xff0c PC的按键精灵略懂 xff0c 因此才有一下脚本 觉得有用拿去参考 xff0c 大佬勿喷 我一直都
  • AD中画圆弧形板框的方法

    在实际的板框设计中 xff0c 有时为了生产需要 xff0c 不得不需要将PCB板设计成四角需要倒角的形式 xff0c 经过实际的摸索 xff0c 现在得出一种画圆形板框的小技巧 现在需要将板框设计成3 5mm半径样式 xff08 1 xf
  • AD中板内挖空的方法

    一 先使用禁止布线层将板框确定 使用的快捷键 xff1a D gt S gt D 二 再绘制一个挖空区域 使用的快捷键 xff1a T gt V gt B 三 挖空后的效果
  • STL初识

    STL的诞生 长久以来 xff0c 软件界一直希望建立一种可重复利用的东西 C 43 43 的面向对象和泛型编程思想 xff0c 目的就是复用性的提升 大多情况下 xff0c 数据结构和算法都未能有一套标准 导致被迫从事大量重复工作 为了建
  • 删除U盘中的System Volume Information 文件夹的方法

    在使用U盘测试ARM板的时候 xff0c 会发现System Volume Information这个文件夹阴魂不散 xff0c 总是存在 xff0c 在Windows下是看不见的 xff0c 即便将文件的查看属性设置为显示隐藏文件 在使用
  • Linux命令发送Http的get或post请求

    get请求 curl命令模拟get请求 xff1a 1 使用curl命令 xff1a curl span class hljs string 34 http www baidu com 34 span 如果这里的URL指向的是一个文件或者一
  • 深度学习之----多任务学习

    介绍 在机器学习 xff08 ML xff09 中 xff0c 通常的关注点是对特定度量进行优化 xff0c 度量有很多种 xff0c 例如特定基准或商业 KPI 的分数 为了做到这一点 xff0c 我们通常训练一个模型或模型组合来执行目标
  • PID控制原理(全干货)

    主要内容 xff1a 1 常用的控制算法与PID控制算法的异同点 xff1b 2 PID控制算法的理论分析 3 基于单片机的PID算法实现 4 PID算法的工程应用的一些注意事项 5 演示板电路分析 6 PID算法C语言实现 基于ARM C