《仿人机器人原理与实战》一3.4 热平衡实验进阶

简介: 本节书摘来华章计算机《仿人机器人原理与实战》一书中的第3章 ,第3.1节,作者布莱恩·伯杰伦(Bryan Bergeron) 托马斯B. 塔尔博特(Thomas B. Talbot) 王伟 魏洪兴 刘斐 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

本节书摘来华章计算机《仿人机器人原理与实战》一书中的第3章 ,第3.1节,作者布莱恩·伯杰伦(Bryan Bergeron) 托马斯B. 塔尔博特(Thomas B. Talbot) 王伟 魏洪兴 刘斐 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 热平衡实验进阶

3.4.1 泵速分段控制

你应该能够依据真实温度和目标温度差值的函数来改变泵速,以避免setPoint的值明显超调。

  1. 编程
    如清单3-2所示,系统的Arduino代码使用标准map()变换函数给变量pumpSpeed赋值。需要修改map函数中的变量值,以便符合你的系统。例如,在我们的实验系统中,从热水管中得到的热水温度变量hotTemp对应的热电偶读数值为760。你选定的值取决于热水加热设定值和热电偶传感器的响应。类似地,注意变量pumpSpeedMax,即最大泵速。如果你对管路连接有些不确定,那么刚开始请使用较小值。

清单3-2 利用分段响应的热平衡控制
q1

注意,分段响应的变化性受限于热电偶的水温响应变量T1Temp高于变量setPoint的次数,否则泵速设定为0。

  1. 操作
    系统组建和操作与开关控制实验相同。要么往储槽中加入确定量的热水,要么使用浸入式电加热器将储槽内的水温升高到超过setPoint值。理想情况下,泵速分段控制的超调量小于开关控制。

3.4.2 PID控制

你应该能否发现分段速度控制的结果优于开关控制。问题在于,它是否足够优秀?如果不是,我们能改进吗?对这个简单的应用来说,简单的分段控制可能是足够的,但当我们面对更加复杂的系统和与PID控制相关的资源需求时,这种想法就很有价值。
假设我们没有使用Arduino监视多个传感器,那么RAM(Random Access Memory,随机存取存储器)和处理器资源就可以节省下来,但是通常情况下并不总是这样的。现在,我们假定简单的分段控制不够好,而且有足够的计算资源。

  1. 编程
    如清单3-3所示,PID系统的Arduino代码比清单3-2中的代码要稍微复杂一下,这还多亏我们使用了Arduino Playground中的PID库。这个库中包含了许多我们之前讨论的具体实施细节,可着重关注修正量PC、积分常数IC和微分常数DC等参数的最优值,并可关注整个系统的操作。

清单3-3 基于PID控制器的热平衡
q2
q3

这段代码的关键在于myPID()函数,它可在已知输入Input(热电偶读数)的情况下确定输出变量Output(马达转速)。调节PID算法必须要给PC、IC和DC三个常数赋新的值。清单中这些常数值是我们开始调试的最佳位置。

  1. 操作
    系统操作与之前的两个例子相同,但是在确定初始条件时我们要做得更明确一些。不再是简单地加入热水或者插上电加热器直到温度超过setPoint值,而是或者向储槽中加入定量且定温的热水,或者接通电加热器并维持确定的时间。搅拌储槽中的水,跟踪热电偶读数变量Input和水泵的输出电平变量Output。为了达到调试目的,我们暂时在主回路中增加一个延时声明,以便实时读取变量Input和变量Output的值,这个延时会改变PID控制器的响应。

如果实验结果不如简单控制好,即快速达到设定温度而几乎没有超调,那么可能需要调节PID。Arduino中自带PID调节资源,而且本系统足够简单,多次尝试和错误是可以接受的。Arduino中常用的PID调节资源命名为PID autotune library,在Arduino Playground中可以获得。
另一种可能性是你的系统对于PID控制器来说很不稳定。在多次重复实验中,可能的情况有:水温和容积不同,储槽绝热性能不好,外界温度变化,热辐射器的转换效率低或者管路泄露。不管何种原因,如果基本系统不支持可重复的实验结果,那你永远都不能确定常数的值。
另外,回顾我们讨论PID微分分量的内容,系统整个微分项是常数DC的函数。在清单3-3中将DC设为0,便得到PI控制器。即使你拥有完整的PID控制器,但是调试一下PI控制器也是很不错的,以便感受只有PC和IC常数的系统。

3.4.3 四肢温度响应

通过使核心体温setPoint响应四肢温度,我们给系统增加一些生物学模拟。对于这次改进,我们增加第二个热电偶探头,并利用它的读数来修改变量setPoint。

  1. 器材清单
    除了基本的PID系统外,我们还需要以下器材:
  • 10kΩ热电偶
  • 10kΩ、1/4W电阻
  • 台灯、电吹风或其他热源
  • 压缩空气罐或者散热器
  1. 电路
    如图3-14所示,电路由之前的电路和第二套热电偶–电阻对T2-R2组成,用来监视人体模特头部和其他支撑件的温度。10kΩ电阻R2用来构造分压回路,使得温度上升时Arduino中的读数更大。


14

  1. 构造
    将双绞线与第二个热电偶连接,并将热电偶缠绕或固定在人体模特的脖子或其他部位。在恰当的位置安装热电偶,以便其能够很容易地感受冷热变化。
  2. 编程
    适用于两个热电偶电路的Arduino代码如清单3-4所示。再次重申,因为我们使用了Arduino的PID库,所以编程的工作量不大。如果热电偶T2的读数增加,变量setPoint的值就减小,这意味着泵马上就要开始工作,提前启动了冷却过程。相反,如果向热电偶T2喷射压缩空气,降低T2的温度,那么变量setPoint将会增大,水泵直到热电偶T1给出一个相对更高的读数时才会启动。

清单3-4 适用于两个热电偶热平衡系统的Arduino代码
q4
q5

上述代码与之前单热电偶探头代码的最大区别在于,系统组成和评估两个热电偶返回值的方法不同。注意,在这段代码中变量SetPointHigh、SetPointMid和SetPointLow的间距是不对称的。你可以也应该尝试一下等间距、增大或者减小赋给这些变量的值的间距。

  1. 操作
    到现在为止,你应该知道操作规范了。仔细加入热水或者将电加热器按特定方式加热,以便在多次实验中能够重复这些初始条件。然后运行实验并跟踪输出数据。在模拟人的生理反应时,使用动态setPoint值会干扰PID控制器。如果过度修改变量setPoint的值,你可能需要立即利用PID库中的SetTunings()函数来为PID算法设定新的常数。
相关文章
|
6月前
|
算法 机器人 Python
动态规划法在扫地机器人中的实战应用(基于动作值函数的策略迭代 python 附源码)
动态规划法在扫地机器人中的实战应用(基于动作值函数的策略迭代 python 附源码)
82 0
|
3月前
|
人工智能 搜索推荐 安全
从零到一:微信机器人开发的实战心得
从零到一:微信机器人开发的实战心得
248 2
|
3月前
|
监控 前端开发 安全
RPA机器人的工作原理?
【8月更文挑战第4天】RPA机器人的工作原理?
137 1
|
6月前
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
739 10
|
6月前
|
自然语言处理 机器人 数据库
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
198 3
|
6月前
|
传感器 机器人 C++
ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目
ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目
632 0
|
6月前
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
90 1
|
6月前
|
人工智能 算法 机器人
【Python数据结构与算法】--- 递归算法的应用 ---[乌龟走迷宫] |人工智能|探索扫地机器人工作原理
【Python数据结构与算法】--- 递归算法的应用 ---[乌龟走迷宫] |人工智能|探索扫地机器人工作原理
70 0
|
6月前
|
机器学习/深度学习 存储 算法
强化深度学习中使用Dyna-Q算法和优先遍历算法在机器人实战中的对比分析(超详细 附源码)
强化深度学习中使用Dyna-Q算法和优先遍历算法在机器人实战中的对比分析(超详细 附源码)
65 0
|
6月前
|
机器学习/深度学习 算法 数据可视化
强化深度学习中使用Dyna-Q算法确定机器人问题中不同规划的学习和策略实战(超详细 附源码)
强化深度学习中使用Dyna-Q算法确定机器人问题中不同规划的学习和策略实战(超详细 附源码)
91 0

热门文章

最新文章