本文主要是介绍《仿人机器人原理与实战》一3.2 动态平衡与仿人机器人设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本节书摘来华章计算机《仿人机器人原理与实战》一书中的第3章 ,第3.2节,作者布莱恩·伯杰伦(Bryan Bergeron) 托马斯B. 塔尔博特(Thomas B. Talbot) 王伟 魏洪兴 刘斐 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.2 动态平衡与仿人机器人设计
如果仔细研究过中央处理器(CPU),就会对那些热导管和水冷却系统非常熟悉,它们是用来防止元器件过热的。水和其他液体多年来一直用于冷却大型计算机和其他发热电子器件。水的比热容大于空气,这意味着你没必要用一打松鼠笼大小的吹风机去冷却发热的CPU,而只需要一套非常紧凑的流体系统就足够了。
假设我们跟同类相处会感觉更加舒服,那么拥有暖皮肤和接近静音操作的服务机器人将会比冷冰冰且噪音很大的服务机器人受欢迎得多。所以,除非在电子元器件效率方面取得重大基础研究突破,否则你的仿人机器人一定会产生过量的热量。假设仿人机器人拥有类似于人的外形,你就需要找到将热量从内部转移到外部的方法,比如模拟人体热量传送机制。
当然,如果你的目标就是简单地让仿人机器人身体发热,那么最简单的解决方案是在皮肤或者外骨骼下面嵌入电加热毯,具体请看本章后面的附加项目。你需要理解接下来我们要讨论的内容,除此以外,你还将在第4章中再次阅读有关流体的内容,并可应用本章中学到的经验。
3.2.1 热力学模型
如图3-2所示,仿人机器人、人类或者其他具有核心体温的任意事物的简化热力学模型都是由电容、充电器和几个电阻组成。分析该模型时,我们可以把温度视为电压。依此类推,电容两端的电压代表身体的核心体温,电容值的大小表示身体中热量的多少。
电容C通过发光二极管(LED)D2放电,将能量以热和光的形式辐射出去。电阻R代表从中心到四肢的热阻力。R越大,例如绝热状态,通过LED辐射出去的热量就越少。由于R上的压降,即从内部到四肢的温度梯度,D2上的电压小于电容C两端的电压,与四肢的温度较低类似。对于人类,这种从内部到四肢的温度梯度值大概是4摄氏度。对于仿人机器人,这个梯度值取决于其构造和热交换系统的设计。
可调电阻P2是一种表示动态调节电容C向四肢放电率的方式,同时电位计P1允许调节充电率。电源G、二极管D1和电位计P1构成了充电回路,表示身体的新陈代谢。
在平衡位置,从电源G获得的充电电流等于通过LED灯D2放电的电流。如果因为D2短路(类似于跳进冰水中)、负载突然增加或电源G失效(比如没吃早饭),那么通过增大P2,C的放电过程就会限制在最小值(血液从皮肤向器官回流)。相反,如果C过度充电,那么通过减小P2值,大量能量会送到D2并辐射出去。挑战在于确定增大或减小P2的时间点和时间长度,这就是为什么需要控制系统技术。
3.2.2 简单的负反馈控制
为了更好地掌握控制系统,假设我们有一个具备动态平衡系统的仿人机器人,该系统由一槽液体、把热量从液体中带走的热交换器、把液体从储槽中抽到辐射器或者热交换器中再流回储槽的泵、控制器和温度探头等组成,如图3-3所示。
首先我们通过简单的开关负反馈环来控制水泵的流速,水泵将水从储槽(内部)中抽到辐射器(四肢)中,在那里热量可以辐射到环境中。我们利用下面的伪代码来定义泵的开关控制:
其中,Temperature是储槽中流体的当前温度,Setpoint是流体的期望温度。注意我们已经定义了一个典型的负反馈环,控制对象是温度,通过控制机制可调节的变量是泵的流速。
从直观上我们就可以发现,开关控制算法不能为达到目标温度提供平滑的控制。另一种可选用的方式是改变泵的流速,用伪代码描述带泵流速控制的负反馈环如下:
还有一件事情,就是要描述变量Temperature与变量Setpoint之间的差值。这两者字面上的差值可用来直接确定泵的流速。另外一种可选方式是,将泵的流速设定为最大流速的百分比。或者将两者的差值映射为一个非线性函数,当变量Temperature与变量Setpoint之间的差值较大时,其函数值较大,反之函数值较小。
为了进一步掌握负反馈,我们将把开关控制的伪代码转化为一个包括真实变量的更规范的方程:
Tempt = Tempt–1 + (Tempt–1–DT < SetPoint)×Inc – R
在这个方程中,DT表示死区,即泵和水响应打开信号所需要的时间。死区考虑了流体的惯性和电子器件的微小延时。温度增量Inc用来描述由于泵的作用引起的温度增加的变化量,它是泵的设计值和设定参数的函数。阻值R是一个总项,包括从储槽到管线和泵的流体的反向流动,还包括泵与辐射器的低效。
注意方程式中第二项是一个逻辑判断值,要么是真值(1),要么是假值(0)。如果逻辑判断为假,则新的温度值就是之前的温度值减去系统阻力的影响。
正如之前所说,简单的开关控制系统可能导致的问题是设定值出现超调,如图3-4的曲线所示。从热水的起始温度位置,当温度超过100华氏度时,控制器打开泵。然而,直到水温冷却到83华氏度,泵还没有关闭。从实用的角度来说,如果回路安装在仿人机器人身上,那么这种超调是可以接受的,但是,当更好的控制方法近在咫尺的时候,为什么要满足于这种落后的控制方法呢?
图3-4的曲线所描述的内容是,在图3-2所示的热力学模型中,热量可以流进或者流出储槽。如果达到某个初始温度后不再加热,那么泵停止工作以后,核心体温会缓慢降低,降低程度与储槽的绝热性能有关。当热量持续进入系统时,控制反应的性质便显现出来。10分钟的时间是任意选取的,这取决于系统的性质,时间轴允许我们对各种控制方法进行快速比较。
3.2.3 比例–积分–微分(PID)控制
可以取代简单开关泵控制方法的是PID控制器,它可能比之前介绍的简单控制方法更接近设定的温度值,当然不是100%。PID的三个分量可以有不同的组合形式,以强调不同的分量。例如,比例(P)控制器对某个应用来说就足够了,而在另外一个控制器上则需要比例-积分(PI)控制器。
- P控制
下面逐个讨论PID控制器中的分量,最基本的P控制器的方程如下:
Tempt = tempt–1 + (SetPoint +SPC – Tempt–1–DT) × PC
其中,Temp表示温度,PC表示比例常数,SPC是设定值的修正项。如果没有SPC,SetPoint的值将永远都不会达到。可以把SPC理解为一个修正因子,用来补偿只有实际温度和目标温度差值的一部分(而不是全部),用于计算当前温度这一实际情况。
如图3-5所示,如果采用了恰当的比例常数和设定值修正项,那么跟简单的开关控制相比,比例控制经过最初的不稳定期后,能够提供更加平滑的温度控制。调节P控制器的工作由调节PC的值和观察结果的稳定性组成。
上述典型的P控制器响应说明该控制方法存在局限性,即初始响应可能会引起设定的温度值大幅超调。在这个例子中,还有一个风险就是直到温度低于设定值6度后比例控制才会再次起作用。注意时间轴是任意的,取决于外界条件和控制器常数。
比例控制的特征是在设定值、设定值修正、死区和比例常数值等因素的某些联合作用下会引起不稳定性。在特殊情况下,如果比例常数值增加,温度会出现振荡趋势。
- PI控制
针对单纯P控制的不稳定性,PI控制增加了积分项,即期望值和实际值对时间的积分。PI控制方程的基本形式如下:
Tempt = Tempt–1 + (SetPoint – Tempt–1–DT) ×PC
+ Integralt–1 + (Tempt – Integralt–1)×IC
其中,Integral表示SetPoint与当前温度差值的积分和;IC为积分常数,决定了积分项对当前温度的贡献量。注意,在这个方程中,没有SPC这一设定值修正项了。
比较图3-6中PI控制和图3-5中的P控制的响应曲线。即使利用微软Excel来生成这两幅图,采用相同的设定值、设定修正项、死区和比例常数,我们也会发现PI控制引起的超调更小,且能够更快稳定。虽然图3-6中10分钟的时间轴是大概值,但是与本章中其他温度曲线的时间轴是可比的。
因为积分项反映了实际温度与期望温度随时间的差值,所以在外界温度相对固定的情况下,PI控制最有用。相反,当环境条件持续变化时,增加积分项的用处就不大了。调节PI控制器的工作包括确定比例常数PC和积分常数IC的最优值,通常比调节P控制器更具有挑战性。
- PID控制
与纯P控制器类似,PI控制器也会在某些变量叠加时引起不稳定。为了解决不稳定性,可以用微分项(等同于电源中的平滑电容),来抑制变化率。完整的PID控制方程定义为:
Tempt = Tempt–1 + (SetPoint + Tempt–1–DT) × PC + Integralt–1
+ (Tempt – Integralt–1)× IC – (Tempt–1 –Tempt) ×DC
其中,DC是微分常数,决定了系统对二阶温度变化的敏感程度。与比例和积分项不同,微分项可以从之前的温度值中获得。如图3-7所示,变化率逐渐消失。同时可以看出,与之前的控制器不同,相应曲线没有明显的超调。
之前的四幅图片尽管典型,但都是理想化的,常数都选为适合值,以说明最佳响应曲线。也就是说,控制器是调试过的。调节PID控制器的工作包括确定三个常数(比例常数PC、积分常数IC和微分常数DC)的最优值,对一个复杂系统来说,调试工作量可能非常大。幸运的是,我们的系统相对简单。
尽管PID控制器似乎优于其他简单的控制器,但是使用PID控制器并不能保证快速达到设定值且不会有超调。如果想要获得图3-7所示的曲线,你必须要在调节常数项时足够机灵。另外一个要求就是处于控制之下的系统必须具有重复性,否则常数项必须反复重新定义。采用相同初始条件有利于确保重复性,比如采用相同的储槽温度、储槽容积、外界温度、湿度、储槽和线圈周围的气流等。
除了这些基本方程,PID控制器还有更多变化和增强版本,也有专门为运动控制设计的复杂的PID控制算法。虽然理解前面所说的PID分量的优点和局限性是很关键的,但是我们可以避开具体细节的实施而直接采用Arduino标准的PID库。
这篇关于《仿人机器人原理与实战》一3.2 动态平衡与仿人机器人设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!