腿足式机器人液压系统汽油发动机转速伺服控制方法与流程

文档序号:12705555阅读:来源:国知局

技术特征:

1.一种腿足式机器人液压系统汽油发动机转速伺服控制方法,其特征是,包括如下步骤:

(1)根据发动机设定转速vref和发动机实际转速vfed,计算出转速误差e和转速误差的变化率ec,其中e=vfed-vref,ec=(vfed-vref)/T,T为控制周期0.02秒;

(2)上述转速误差e和转速误差的变化率ec经过模糊逻辑计算之后,输出比例系数增量△kp和积分系数增量△ki

(3)最终,比例系数kp=kp0+△kp,积分系数ki=ki0+△ki

(4)采用增量式PI算法计算出油门开度S1,S1=S1_old+kp*ec+ki*e,其中S1_old为上一执行周期中的油门开度;

(5)机器人运动过程中的液压油流量变化△Q由前馈控制进行补偿,由液压油流量变化引起的油门开度变化为S2=kQ*△Q,其中kQ=27.7min/L;

(6)最终油门开度Sf=S1+S2,油门开度以PWM的形式控制舵机旋转,通过控制进气量,最终控制发动机转速。

2.根据权利要求1所述的腿足式机器人液压系统汽油发动机转速伺服控制方法,其特征是,所述发动机实际转速的测量采用直接使用发动机点火电压信号U1测量的方式,由R1和R2串联组成的电阻分压网络进行降压处理,经过处理之后的电压U2=U1*R2/(R1+R2);之后利用光电耦合器单向通过的特性将信号转换为直流信号;最后经过比较器与比较电压比较之后,输出幅值为5V的方波波形,捕获该方波波形并计算出发动机实际转速vfed,vfed=60*f,其中f为方波频率。

3.根据权利要求1所述的腿足式机器人液压系统汽油发动机转速伺服控制方法,其特征是,所述模糊逻辑计算采用模糊监督控制器,具体过程如下:

模糊监督控制器由模糊器、模糊推理机、模糊规则表和解模糊器组成,其输入为转速误差e和转速误差的变化率ec,模糊器利用隶属度函数将e和ec转化成模糊变量NB、NS、ZO、PS和PB,e和ec的隶属度函数表达式如下,其中x为e或ec,e的隶属度函数中n=150,ec的隶属度函数中n=60:

<mrow> <mi>&mu;</mi> <mi>N</mi> <mi>B</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> <mi>x</mi> <mo>&le;</mo> <mo>-</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mo>-</mo> <mn>2</mn> <mi>n</mi> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mo>-</mo> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mi>&mu;</mi> <mi>N</mi> <mi>S</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>+</mo> <mn>2</mn> <mo>,</mo> <mo>-</mo> <mn>2</mn> <mi>n</mi> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mo>-</mo> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>,</mo> <mo>-</mo> <mi>n</mi> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mn>0</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>

<mrow> <mi>&mu;</mi> <mi>Z</mi> <mi>O</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mo>-</mo> <mi>n</mi> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mi>&mu;</mi> <mi>P</mi> <mi>S</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>,</mo> <mn>0</mn> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>+</mo> <mn>2</mn> <mo>,</mo> <mi>n</mi> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>

<mrow> <mi>&mu;</mi> <mi>P</mi> <mi>B</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>x</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>n</mi> <mo>&lt;</mo> <mi>x</mi> <mo>&le;</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> <mi>x</mi> <mo>&GreaterEqual;</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>

之后模糊推理机利用△kp的模糊规则表和△ki的模糊规则表将输入模糊集合映射到输出模糊集合;其中:

△kp的模糊规则表如下:

△ki的模糊规则表如下:

最后解模糊器采用隶属度函数和中心平均解模糊的方法计算出输出比例系数增量△kp和积分系数增量△ki;△kp和△ki的隶属度函数表达式如下,其中y为△kp或△ki,△kp的隶属度函数中n=1,△ki的隶属度函数中n=0.1:

<mrow> <mi>&mu;</mi> <mi>N</mi> <mi>B</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> <mi>y</mi> <mo>&le;</mo> <mo>-</mo> <mn>3</mn> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>-</mo> <mn>2</mn> <mo>,</mo> <mo>-</mo> <mn>3</mn> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mo>-</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mi>&mu;</mi> <mi>N</mi> <mi>M</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>+</mo> <mn>3</mn> <mo>,</mo> <mo>-</mo> <mn>3</mn> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mo>-</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mo>-</mo> <mn>2</mn> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mo>-</mo> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>

<mrow> <mi>&mu;</mi> <mi>N</mi> <mi>S</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>+</mo> <mn>2</mn> <mo>,</mo> <mo>-</mo> <mn>2</mn> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mo>-</mo> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>,</mo> <mo>-</mo> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mn>0</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mi>&mu;</mi> <mi>Z</mi> <mi>O</mi> <mo>(</mo> <mi>y</mi> <mo>)</mo> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mo>-</mo> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>

<mrow> <mi>&mu;</mi> <mi>P</mi> <mi>S</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>,</mo> <mn>0</mn> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>+</mo> <mn>2</mn> <mo>,</mo> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mi>&mu;</mi> <mi>P</mi> <mi>M</mi> <mo>(</mo> <mi>y</mi> <mo>)</mo> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mn>2</mn> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>+</mo> <mn>3</mn> <mo>,</mo> <mn>2</mn> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mn>3</mn> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>

<mrow> <mi>&mu;</mi> <mi>P</mi> <mi>B</mi> <mrow> <mo>(</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <mi>y</mi> <mo>-</mo> <mn>2</mn> <mo>,</mo> <mn>2</mn> <mi>n</mi> <mo>&lt;</mo> <mi>y</mi> <mo>&le;</mo> <mn>3</mn> <mi>n</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> <mi>y</mi> <mo>&GreaterEqual;</mo> <mn>3</mn> <mi>n</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>.</mo> </mrow>

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1