嵌入式
返回首页

利用专家系统构建智能家居的研究与设计

2013-10-10 来源:eefocus

1 引言

智能家居(Smart Home)的概念最早出现于美国,它利用先进的计算机技术、嵌入式技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起。随着科学技术的发展,智能家居的智能化、人性化一直是人们追求的目标,在此基础上,本文提出了“AI-IA”的设想,将人工智能领域中专家系统控制方法应用于智能家居控制软件的构建中,并给出了合理的设计方案。

2 关于智能家居的研究

2.1智能家居未来发展方向

智能家居是在信息技术的发展和人类对居住环境的要求不断提高的基础上产生的,由Home Automation Association(HAA,家庭自动化协会)所定义的智能家居是:一个使用不同的方法或设备的过程,以此来提高人们生活的能力,使家庭变得更舒适、安全和有效。科技以人为本,智能家居向着智能化、人性化的方向逐步发展,它可以在没有或很少有人干预的情况下,对室内或室外可能发生的事情按预先设定的内容做出反应。如今,家电自动化的条件已经具备,如:电饭煲可定时煮饭煲汤,空调可以定时开关,但家居智能化还刚刚起步。
2.2 AI-IA构想

目前的智能家居均实现了三表抄送、家庭安全监控等功能,家电的自动化较以前有了很大的提高,但家电之间没有太大联系,仅仅是单一的“机械式”模式。信息家电之间若不能相互识别、相互通信、相互协作,那它所提供的功能是十分有限的,既不能实现服务的相互调用,更不能根据主人的生活习惯自我调节,只能按照事先设定好的模式周而复始的独立运行。为了适应智能家居的发展,本文设计了一个类似“人脑”一样的控制器软件,它存储了主人大量生活习惯的规则,在外界环境发生变化时调用、触发相关设备,这个过程可简单描述为:记录、识别、控制、响应、反馈等。

AI-IA(Artificial Intelligence-Information Appliance)是人工智能与信息家电的融合,它将人工智能领域中的专家系统引入智能家居,实现了信息家电之间的智能协作。信息家电智能协作模型可简单描述为:人们根据自己的意愿将家电所能产生的事件按照因果关系组织起来,当某一事件产生时,系统会按照预先设定的信息自动触发其它设备,使之产生相关的事件,哪些设备参与协作以及什么时候参与协作,都是按照用户事先设定的规则完成的。

2.3 家庭网关软件体系结构

家庭网关的设计采用模块化分层的体系结构,每层软件各司其职,并通过接口函数的调用来实现各层之间的功能交互。整个软件系统具有良好的可操作性和可移植性,自上而下分为应用程序层、网络协议层、操作系统层、硬件驱动层。AI-IA智能控制模块是家庭网关的一部分,实现规则的采集、设备的监控、智能推理、智能控制等功能,在linux操作系统下用C语言编写,通过应用程序接口供其它功能模块调用。家庭网关体系结构如图1所示。



图1 家庭网关体系结构图

3 AI-IA智能控制模块的设计

AI-IA智能控制模块实质上是一个在家庭网关中起到协作功能的专家系统,其目的是监控设备所发生的各种事件,用户事先设定的某条规则一旦得以满足,便会驱动其它设备引发相应事件。此系统的设计模拟了生物的“刺激-反应”机制,位于智能家居中的信息家电除了联网和实时通信外,还能够根据主人的意愿,对外界的信息做出恰当的反映,极大程度地增强了信息家电的实时、智能性能。USB2.0

3.1 AI-IA智能控制模块体系结构

在家庭网关中添加的AI-IA智能控制模块,是实现信息家电智能协作的关键,其核心思想就是将专家系统引入控制领域。其整体结构如图2所示。

(1)服务的注册

服务是设备所能提供某种功能的抽象,而设备所达到的某种状态即可构成一个事件,设备所提供的服务只有在完成注册后,用户才能对这些事件进行处理。服务的注册就是把设备所具有的功能在家庭网关上进行登记,以便其它设备需要某种服务时,可以通过网关查询,并按照指定的接口调用服务。由于用户使用的各种电器可能来自于不同的厂商,因此必须有一种能够描述设备的属性、服务等信息的描述语言来解决设备间的异构性。在此引入了Information Appliance Interface Definition Language(IAIDL, 信息家电接口定义语言),它是一种用来定义信息家电的说明性语言,只描述设备的资源信息,不直接用于编写可执行程序。IAIDL文件记录了设备的可用信息,通过编译该文件将这些信息提取出来,以数据的形式存储到嵌入式数据库SQLite中,完成家电设备的注册。IAIDL的引入实现了设备的互通、互联,成功地解决了信息家电“即插即用”问题。



图2 基于专家系统的AI-IA智能控制模块图

(2)知识库的形成

知识库是专家系统重要组成部分。用户通过Graphical User Interface (GUI,图形用户接口)查看设备在数据库中的注册信息,将设备提供的事件以产生式规则的形式联系起来,以此形成知识库。系统的GUI具有多样性,可以是遥控器、PDA、web网页或其它方便用户使用的方式。知识库及知识的表达是建立专家系统的关键,它们的形式、内容、组织方式直接影响到专家系统描述问题特性的能力,同时也会影响到推理机制、解释机制等其它部分的结构和实现方法。

(3)推理机的应用

推理机负责控制并执行问题的求解,它从已有的事实出发,根据知识库中给定的规则推导出最终结论。例如,IF<门打开,室内光线过暗> THEN<灯亮>,这一规则按照特定的形式存储于知识库中。当传感器检测到门已经打开,以及室内光线低于设定值时,推理机即可识别这两个事件与知识库中用户事先设定的某条规则相匹配,从而按照指定的接口调用开灯这一服务。

 

3.2 知识库的设计

用户通过友好的人机界面将大量规则存储于知识库中,例如,主人回家开门时,客厅里的电灯会因室内的光线过暗自动打开;主人外出关门时,室内的监控系统会因家中无人而自动开启。电灯的打开这个操作会与门打开、室内亮度过低这两个事件联系在一起,我们用产生式规则来表示描述这条知识:

IF< 门打开,室内光线过暗> THEN< 灯亮 >

产生式描述了事物之间的一种对应关系(包括因果关系和蕴含关系),这种基于规则的符号化模型特别适于反应人们对家电设备的调度,由一台设备的某一事件或状态作为条件,引发对另一设备的使用。此系统中的知识库实际上是一个能够表达用户主观意愿的产生式规则库,在系统中以动态数据结构进行组织。

知识的表示是描述客观事物的一组规定,是知识的符号化过程。规则主要包含规则的前提和规则结论部分,前提部分说明规则可以被引用的条件,而结论部分则说明当前提成立时可进行的操作或引起的领域行为。根据需要,一条规则可以有多个前提和多个结论。在具体用C语言实现时,直接以IF<前提条件>THEN<动作>语句形式编程是行不通的,为了实现事件的驱动,必须利用C语言强有力的字符串处理能力将抽象的符号变成一个个表单元。根据实际情况我们可以将智能家居监控下的设备看成一个对象,C语言定义为:

struct object{
char *name; /*设备的名称*/
float val; /*设备的特性值*/
enum events {high,middle,low,open,close};USB2.0
/*事件类型的抽象*/
};

这些对象通过规则联系起来,每定义一条规则,都要把它们存放到规则库Rule_Base中,以方便推理机获取有用的规则。在规则表达中,通过rule()函数把规则的外部语言形式转换成内部的特性表的形式,它的Clause和Action特性分别存放了该规则的前提和结论。推理时若要用到某条规则rule_X(X=1,2...n),就直接从它的特性表中取出相应的前提和结论,Clause和Action可以是一个函数调用、常量或变量,每条规则的特性表组织成如下形式:

(Clause(条件1 条件2…)Action (结论1 结论2…))

3.3 推理机的设计

推理机设计采用事件驱动正向推理方式,其基本思想是:推理机通过网关管理模块读取信息家电的当前状态,从中获取由设备产生的事件,这些事件构成了基本事实;从基本事实出发引用规则库中的规则,若某些规则的前提被满足,则执行这些规则的结论,若这些规则的结论部分形成新的事件,则用同样的方法以这些逻辑结果为基础再次进行正向推理。推理过程中的冲突消解采用最先匹配策略,将所有符合当前求解条件的知识放在一张表中,在问题求解过程中一旦找到匹配的规则即采用该规则。

事件驱动是数据驱动的发展形式,所谓事件驱动是指当事件集合中所有的事件都已发生,才能引发另一种操作。在产生式规则中,IF后面的条件便可当作一个事件集合,当用户所设定的条件都满足时,即可得出THEN后的结论或触发相应的操作,本系统通过Event_driven()函数实现了基于事件驱动的正向推理。

Event_driven()算法:

Kbase-Load() /*知识库的装载*/USB2.0
for(所有的事实fact)
{
event=fact中的事件;
for(所有在rulebase中的规则rule)
{
rule_event=出现在规则rule中的所有事件;
if(rule_event至少有一个变量没有值)
continue; /*取规则库中的下一条规则*/USB2.0
else
{
for(规则rule中每一前提clause)
match(clause);/*匹配clause中的条件*/
if(match(clause))
{
do(action); /*执行规则rule中所有action结论*/
value(action); /*用value保存每一个操作结果*/
if(rule(action))/* action产生的事件构成一个新的事实*/USB2.0
Add_Kbase(action) /*将产生的事件加入到知识库中*/
}
}
}
}

4 结束语

本文作者创新点:从智能家居未来发展方向出发,分析了利用专家系统构建AI-IA智能控制模块的必要性和合理性,建立了智能协作模型,并给出了设计专家系统的具体方法,为智能软件的优化以及在嵌入式开发板上的移植奠定了基础。

参考文献:

[1]杜玉清,王新伟.信息家电中实时智能技术的应用研究[J].计算机工程,USB2.0-CY7C68013-128S开发板2003.3:147-165.

[2]伍欣,刘自伟.提高基于规则专家系统效率的技术和方法[J].微计算机信息,2006.4-2:270-272.

[3]史济建,俞瑞钊.专家系统实现技术[M].浙江:浙江大学出版社,USB2.0-CY7C68013-128S开发板 1995

[4] Christos Douligeris,Intelligent Home Systems,IEEE Communications Magazine,1993.10

进入嵌入式查看更多内容>>
相关视频
  • PX4固件二次开发课程

  • RISC-V嵌入式系统开发

  • NuttX Workshop 2024

  • 自己动手写操作系统

  • SOC系统级芯片设计实验

  • 自己动手做一台计算机

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章