do arquivo
Transcrição
do arquivo
Universidade Federal da Bahia Escola Politécnica Programa de Pós-Graduação em Engenharia Elétrica Dissertação De Mestrado Embarcando o Agente Autônomo Concorrente em uma Rede de Microcontroladores de um Robô Móvel Omnidirecional Mestrando: Diego Stéfano Fonseca Ferreira Orientador: Prof. Dr. Augusto Cesar Pinto Loureiro da Costa Salvador Agosto - 2014 Resumo Neste trabalho, uma rede heterogênea de microcontroladores é proposta para embarcar o agente autônomo concorrente. A rede foi projetada para comportar os requisitos de concorrência do modelo cognitivo do supracitado agente. A arquitetura do agente é composta por três nı́veis, a saber, o nı́vel reativo, o nı́vel instintivo e o nı́vel cognitivo, que são executados concorrentemente. O nı́vel reativo foi embarcado em um PSoC 5LP, e consistiu de comportamentos criados sobre um controlador cinemático. O nı́vel instintivo é executado em um mbed, que recebe percepções e seleciona comportamentos do nı́vel reativo através de um barramento CAN. A seleção de comportamentos reativos é realizada por um sistema baseado em conhecimento (SBC) que utiliza lógica de primeira ordem (LPO) e quadros como formalismos de representação do conhecimento. O nı́vel cognitivo, embarcado em um DNP 2486, recebe informações simbólicas do nı́vel instintivo e envia para este último metas locais através de uma rede Ethernet. Também utiliza um SBC para implementar o seu processo decisório, mas pode usar tanto LPO e quadros para representação de conhecimento, como lógica temporal proposicional (LTP). Experimentos com o nı́vel reativo isolado (utilizando um robô real), e com a rede de microcontroladores completa (em um ambiente simulado) validaram a arquitetura de hardware proposta. Uma placa de circuito impresso com a rede de microcontroladores também é apresentada. Palavras Chave: Robótica móvel, Navegação de Robôs, Agentes Autônomos, Sistemas Baseados em Conhecimento, Redes de Microcontroladores. i Abstract In this paper, a microcontroller heterogeneous network is proposed to embed a concurrent autonomous agent. The network was designed to fit the concurrency requirements of the cognitive model of the aforementioned agent. The architecture of the agent comprises three levels, namely, the reactive level, instinctive level and the cognitive level, which runs concurrently. The reactive level is embedded in a PSoC 5LP, consisting of behaviours created over a embedded kinematic controller. The instinctive level runs in a ARM mbed, which receives perceptions from and sends the active behaviour to the reactive level through a CAN bus. The behaviour selection is executed by a knowledge-based system (KBS) that uses first-order logic (FOL) and frames as knowledge representation formalisms. And The cognitive level runs on a DNP/2486 which, in turn, receives symbolic information from and sends new local goals to instinctive level through an Ethernet network. It also uses a KBS to implement its reasoning mechanism, but it can use either FOL and frames or propositional temporal logic (PTL) as knowledge representation method. Experiments with the reactive level isolated (using a real robot), and with the complete network (in a simulated environment) validated the proposed architecture. A printed circuit board with the microcontrollers network is also presented. Keywords: Mobile Robots, Robot Navigation, Autonomous Agents, Knowledge-Based Systems, Microcontrollers Network. ii Índice Resumo i Abstract ii Índice iii Lista de Figuras v Lista de Tabelas vii 1 Introdução 1 2 Representação de Conhecimento 2.1 Lógica de Primeira Ordem (LPO) . . . . . . . . . . . . . . . . . . . . 2.1.1 Sintaxe da LPO . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Semântica da LPO . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Lógica Temporal Proposicional (LTP) . . . . . . . . . . . . . . . . . . 2.2.1 Sintaxe da LTP . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Semântica da LTP . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 O Algoritmo MetateM . . . . . . . . . . . . . . . . . . . . . 2.3 Quadros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Sistemas Baseados em Conhecimento e Sistemas Especialistas . . . . 2.4.1 Sistemas de Produção . . . . . . . . . . . . . . . . . . . . . . 2.4.2 Sistemas Baseados em Conhecimento e Sistemas Especialistas 2.5 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 7 9 10 12 17 20 22 22 24 27 3 O Agente Autônomo Concorrente (AAC) 3.1 Modelo Genérico para Agentes Cognitivos 3.2 Arquitetura Cognitiva do AAC . . . . . . 3.3 Arquitetura do AAC Embarcado . . . . . 3.4 Representação do Conhecimento no AAC . 3.4.1 LPO e Quadros . . . . . . . . . . . 3.4.2 LTP . . . . . . . . . . . . . . . . . 3.5 Conclusão . . . . . . . . . . . . . . . . . . 28 28 29 32 33 33 36 38 iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Arquitetura de Hardware 4.1 Visão Geral do Sistema Embarcado . . . . . . . . . . . . . . . . . 4.2 Protocolos de Comunicação . . . . . . . . . . . . . . . . . . . . . 4.2.1 O Protocolo CAN . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 O Protocolo Ethernet . . . . . . . . . . . . . . . . . . . . . 4.3 Nı́vel Reativo: PSoC 5LP . . . . . . . . . . . . . . . . . . . . . . 4.3.1 O PSoC 5LP . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 O Sistema Operacional de Tempo Real . . . . . . . . . . . 4.3.3 Encapsulamento de Sistema de Controle no Nı́vel Reativo . 4.4 Nı́vel Instintivo: o mbed . . . . . . . . . . . . . . . . . . . . . . . 4.5 Nı́vel Cognitivo: o DNP 2486 . . . . . . . . . . . . . . . . . . . . 4.6 Operação do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Resultados 5.1 Nı́vel Reativo: Controlador Cinemático . . . . . . . . 5.1.1 Configuração dos Experimentos . . . . . . . . 5.1.2 Resultados . . . . . . . . . . . . . . . . . . . . 5.2 Nı́veis Reativo, Instintivo e Cognitivo: Planejamento 5.2.1 Configuração dos Experimentos . . . . . . . . 5.2.2 Resultados . . . . . . . . . . . . . . . . . . . . 5.3 Placa de Circuito Impresso . . . . . . . . . . . . . . . 5.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 39 40 40 43 44 44 45 46 49 52 53 53 . . . . . . . . 55 55 55 56 58 58 60 62 64 6 Conclusão 65 Referências Bibliográficas 67 iv Lista de Figuras 2.1 2.2 2.3 2.4 2.5 2.6 3.1 3.2 3.3 Exemplo de quadros (Bittencourt 2006). . . . . . . . . . . . . . . . Estrutura genérica de um sistema de produção de regras. . . . . . . Formato Geral de um EMT. . . . . . . . . . . . . . . . . . . . . . . Exemplos de Elementos da Memória de Trabalho. . . . . . . . . . . Estrutura de uma regra de produção lógica: “n”, “m” e “k” são interios positivos quaisquer. . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de regra utilizado no Exemplo 2.4.3. . . . . . . . . . . . . . . . . 22 22 24 25 . 25 . 26 29 30 3.15 3.16 O Modelo Genérico de Agentes Cognitivos (Barbosa 2005). . . . . . . Arquitetura do AAC (Costa e Bittencourt 1999). . . . . . . . . . . . Nı́vel reativo do AAC implementado no framework Expert-Coop++ (da Costa et al. 2003). . . . . . . . . . . . . . . . . . . . . . . . . . . Nı́vel instintivo do AAC implementado no framework Expert-Coop++ (da Costa et al. 2003). . . . . . . . . . . . . . . . . . . . . . . . . . . Nı́vel cognitivo do AAC implementado no framework Expert-Coop++ (da Costa et al. 2003). . . . . . . . . . . . . . . . . . . . . . . . . . . Nı́vel reativo embarcado. . . . . . . . . . . . . . . . . . . . . . . . . . Nı́vel instintivo embarcado. . . . . . . . . . . . . . . . . . . . . . . . Nı́vel cognitivo embarcado. . . . . . . . . . . . . . . . . . . . . . . . . Formato de um fato simples (a) e um composto (b). . . . . . . . . . . Exemplo de uma base de fatos. . . . . . . . . . . . . . . . . . . . . . Formato de uma regra de produção. . . . . . . . . . . . . . . . . . . . Exemplo de uma base de regras com 2 regras. . . . . . . . . . . . . . Formato dos quadros na linguagem do AAC. . . . . . . . . . . . . . . Sintaxe completa na forma de Backu-Naur (de Santana Júnior e Costa 2007). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama do SBC do AAC (de Santana Júnior e Costa 2007). . . . Inferência com LTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 4.3 4.4 Diagrama de Blocos da rede de Microcontroladores. . . . . . . . . . . Camadas OSI do protocolo CAN e os elementos que as implementam. Codificação diferencial dos sinais no protocolo CAN (Ranjith 2013). . Barramento CAN (Barrenscheen 1998). . . . . . . . . . . . . . . . . . 40 40 41 41 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 v 30 31 31 32 33 34 34 34 35 35 35 36 36 37 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 Barramento CAN sem transceivers (Barrenscheen 1998). . . . . . . . 42 Quadro de dados do protocolo CAN (Ranjith 2013). . . . . . . . . . . 42 Forma de onda correspondente à sequência de bits “0011110” sob a codificação Manchester (IEEE 2012). . . . . . . . . . . . . . . . . . . 43 Estrutura de um quadro Ethernet (Toulson e Wilmshurst 2012). . . . 43 Arquitetura do PSoC 5LP. . . . . . . . . . . . . . . . . . . . . . . . . 45 Diagrama de estados das tarefas no FreeRTOS. . . . . . . . . . . . . 46 Sistemas de coordenadas no AxéBot para modelagem cinemática (Bitencourt et al. 2008). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Diagrama de blocos do controlador cinemático. . . . . . . . . . . . . . 49 ARM mbed (Toulson e Wilmshurst 2012). . . . . . . . . . . . . . . . 50 Diagrama de blocos do mbed (Toulson e Wilmshurst 2012). . . . . . . 51 DIL/NetPC 2486. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Diagrama de classes do sistema baseado em conhecimento de nı́vel cognitivo com LTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Diagrama de sequência esperado do sistema. . . . . . . . . . . . . . . 54 5.1 5.2 5.3 5.4 5.5 5.6 Resultado para estabilização ponto a ponto. . . . . . . . . . . . . . Resultados para rastreamento de trajetória. . . . . . . . . . . . . . Diagrama de circuito da rede de microcontroladores. . . . . . . . . . Diagrama da Rede Ethernet. . . . . . . . . . . . . . . . . . . . . . . Configuração dos experimentos de planejamento de movimento. . . Segmentação do espaço (a) para a posição relativa da meta e (b) para as localizações relativas dos obstáculos. . . . . . . . . . . . . . . . . 5.7 Base de regras para o nı́vel cognitivo utilizando LPO. . . . . . . . . 5.8 Resultado para planejamento utilizando LPO. . . . . . . . . . . . . 5.9 Resultado para navegação com LTP: em verde o ponto inicial, e em amarelo as metas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10 Placa de circuito impresso da rede de microcontroladores. . . . . . . 5.11 Esquemático do barramento CAN. . . . . . . . . . . . . . . . . . . vi . . . . . 56 57 58 59 59 . 60 . 60 . 61 . 63 . 63 . 64 Lista de Tabelas 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 Sintaxe da LPO na forma de Backu-Naur. . . . . . . . . . . . . . . Sintaxe da LTP na forma de Backu-Naur. . . . . . . . . . . . . . . Modelo em LTP simplificado. . . . . . . . . . . . . . . . . . . . . . Representação de um modelo em LTP. . . . . . . . . . . . . . . . . Representação da semântica do operador de inı́cio. . . . . . . . . . . Representação da semântica do operador de próximo instante. . . . Representação da semântica do operador de eventualidade. . . . . . Representação da semântica do operador de invariância. . . . . . . . Representação da semântica do operador “até que”. . . . . . . . . . Representação da semântica do operador “até que”. . . . . . . . . . Modelo gerado pela execução de uma sentença de próximo instante. Exemplo de regras de produção de um sistema de Post . . . . . . . Exemplo de Execução de um Sistema de Post. . . . . . . . . . . . . 4.1 4.2 Principais caracterı́sticas do PSoC 5LP . . . . . . . . . . . . . . . . 44 Tarefas implementadas. . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.1 5.2 Regras de inı́cio e de eventualidade . . . . . . . . . . . . . . . . . . . 62 Regras de próximo instante . . . . . . . . . . . . . . . . . . . . . . . 62 vii . . . . . . . . . . . . . 6 12 12 13 14 14 15 15 16 16 18 23 23 Lista de Siglas AAC Agente Autônomo Concorrente API Application Programming Interface BC Base de Conhecimento CAN Controller Area Network CPU Central Processing Unit CRC Cyclic Redundancy Check CSMA/CD Carrier Sense Multiple Access with Collision Detection DNP DIL-Net PC EMT Elemento da Memória de Trabalho FNS Forma Normal Separada LLC Logical Link Control LPC Lógica Proposicional Clássica LPO Lógica de Primeira Ordem LTL Lógica Temporal Linear LTP Lógica Temporal Proposicional MAC Medium Access Control MI Motor de Inferência viii MT Memória de Trabalho PC Personal Computer PSoC Programmable System-on-a-Chip RTOS Real-Time Operating System SBC Sistema Baseado em Conhecimento SE Sistema Especialista SO Sistema Operacional SoC System-on-a-Chip SOTR Sistema Operacional de Tempo Real UART Universal Asynchronous Receiver/Transmitter ix Capı́tulo 1 Introdução O homem sempre sonhou com a possibilidade de criação uma máquina que pudesse executar seus afazeres de maneira completamente autônoma. Esse sonho deu origem ao ramo multidisciplinar conhecido como robótica, que se iniciou com máquinas de comando numérico e braços mecânicos teleoperados, e desenvolveu-se a ponto de contemplar máquinas móveis completamente autônomas nos dias atuais. O grau de autonomia conferida a um robô varia de acordo com a complexidade da tarefa que o mesmo deve executar. Em uma linha de montagem industrial, por exemplo, o comportamento do robô pode ser implementado por uma máquina de estados discretos, que determinaria exatamente a(s) ação(ões) disponı́vel(is) para executar em um dado estado. Para tarefas mais complexas, o mecanismo de tomada de decisão utilizado deve ser mais robusto, atribuindo ao robô versatilidade para suficiente para agir eficazmente mesmo em circunstâncias não previstas inicialmente. Neste útlimo caso, a entidade que encarna o mecanismo de ação inteligente é o agente autônomo. Existem diversas arquiteturas de agentes autônomos, oriundas principalmente de estudos da psicologia cognitiva. Essa derivação é explicitada por Murphy (2000), onde o autor afirma que o paradigma reativo de construção de agentes autônomos surgiu exatamente de idéias provenientes da etologia, ciência que estuda o comportamento de animais. Essa influência da psicologia cognitiva no estudo de agentes autônomos é reforçada em (Oudeyer 2010), e ainda a correlação inversa é estudada, isto é, como a robótica cognitiva está ajudando compreender aspectos comportamentais e cognitivos dos animais. Neste trabalho, exemplos paradigmáticos são apresentados, como a modelagem do comportamento de insetos, a auto-organização de linguagens em sociedades robóticas, uso de robôs de forma terapêutica para crianças com problemas de desenvolvimento, entre outros. Em (M. Asada 2001) vê-se o desenvolvimento de um modelo de cognição para robôs móveis humanóides. Neste caso, os autores utilizam a RoboCup como plataforma de desenvolvimento. Um agente autônomo para robôs é proposto em (E. Aguirre 2000), cuja arquitetura utiliza lógica nebulosa para coordenar seus comportamen1 tos, e com isso consegue navegar livre de colisões em um ambiente com obstáculos, alcançando uma meta estabelecida. Bittencourt (1997) propõe um modelo genérico de agentes cognitivos. Esse modelo consiste em uma arquitetura cognitiva geral utilizada para modelar agentes de qualquer natureza. O modelo genérico de agentes cognitivos é utilizado como base por Costa e Bittencourt (1999) para a proposta de uma arquitetura de agente autônomo chamada Agente Autônomo Concorrente (AAC), utilizado na RoboCup. A RoboCup, competição internacional de futebol de robôs, é uma plataforma bastante utilizada para a realização de pesquisas em robótica móvel, conforme visto em (Kitano et al. 1997) e em (Kitano et al. 1998), onde os autores enfatizam a multidisciplinaridade do futebol de robôs e os desafios enfrentados na implementação de um AAI robótico para este escopo de aplicação. Mas o AAC possui uma arquitetura cognitiva composta por nı́veis decisórios que devem executar concomitantemente. Isto implica em uma importante restrição sobre o hardware computacional onde o AAC será executado: uma arquitetura computacional centrada em um único núcleo computacional não é suficiente. Além disso, o AAC utiliza originalmente como método de representação de conhecimento a lógica de primeira ordem (LPO). Mas a adição de capacidade de raciocı́nio temporal traz vantagens importantes, principalmente no que concerne ao planejamento em ambientes dinâmicos, como é o caso do futebol de robôs. Assim, de modo a possibilitar a um robô móvel a execução autônoma de tarefas, a sua inteligência deve ser implementada por meio de um agente autônomo em consonância com as demandas de hardware do mesmo. O objetivo precı́puo deste trabalho é o projeto de uma rede de microcontroladores para o robô móvel omnidirecional AxéBot que possibilite o embarque do Agente Autônomo Concorrente (AAC) e que seja flexı́vel o suficiente para a utilzação de mais de uma forma de representação de conhecimento. Para lograr o supramencionado objetivo geral, os seguintes objetivos especı́ficos são estabelecidos: • desenvolver um controlador cinemático para a movimentação do robô; • projeto de uma rede de microcontroladores com nós dedicados para cada nı́vel do AAC; e • desenvolver uma estratégia de planejamento de movimento utilizando lógica temporal. Este trabalho justifica-se, pois, pela geração de uma arquitetura de hardware dedicada para o AAC, permitindo-o ser utilizado em aplicações de robótica móvel, além de estender o seu arcabouço de métodos de raciocı́nio automático com a utilização de lógica temporal. É verdade também que conceber uma arquitetura de hardware multiprocessada funcional é de grande utilidade acadêmica não só para o embarque do AAC, mas 2 também para fornecer uma plataforma experimental para implementação dos mais diversos algoritmos de inteligência artificial, arquiteturas cognitivas e controle, orientados à robótica móvel, gozando da concorrência e rica instrumentação dessa arquitetura. O restante deste trabalho divide-se da seguinte forma: • o Capı́tulo 2 fornece uma fundamentação teórica sobre os métodos de representação de conhecimento utilizados no AAC; • o AAC é descrito no Capı́tulo 3, onde se explicita como os métodos expostos no Capı́tulo 2 são utilizados no AAC; • no Capı́tulo 4 a arquiteura de hardware proposta é descrita: cada nó computacional utilizado é descrito, assim como os protocolos de comunicação utilizados para conectá-los; • os resultados de experimentos são expostos no Capı́tulo 5; e • o Capı́tulo 6 apresenta uma conclusão, onde constam propostas para trabalhos futuros. 3 Capı́tulo 2 Representação de Conhecimento De acordo com a definição de Barr e Feigenbaum (1981), citados por Bittencourt (1990), chama-se de representação de conhecimento o conjunto de métodos formais compreendendo estruturas de dados e relações interpretativas que, se utilizadas apropriadamente em um programa, levariam-no a apresentar um comportamento inteligente. Bittencourt (2006) cita Furbach et al. (1984) para afirmar que uma representação é composta por três itens, a saber: • o mundo externo; • a representação propriamente dita; e • a relação entre os dois itens acima. O mundo externo e a representação devem possuir operadores que possibilitem a manipulação dos seus elementos, e a relação entre estes corpos de conhecimento, como o autor os denomina, compõe a semântica da representação. Neste capı́tulo, serão abordados os métodos de representação de conhecimento utilizados pelo AAC. A primeira representação abordada será a Lógica de Primeira Ordem (LPO). Em seguida, a Lógica Proposicional Temporal (LTP) é descrita, com uma subseção dedicada ao algoritmo MetateM para execução fórmulas em LTP. Depois, o formalismo de representação de quadros será apresentado. Finalmente, os sistemas especialistas e sistemas baseados em conhecimento serão abordados. 2.1 Lógica de Primeira Ordem (LPO) A Lógica de Primeira Ordem (LPO), ou Lógica de Predicados estende a Lógica Proposicional Clássica (LPC) com a introdução de objetos e relações, permitindo um maior poder de expressão. Assim, o compromisso ontológico (relação entre a linguagem lógica e a estrutura da realidade que a linguagem pretende representar) da LPO passa a ser com objetos e a existência de relações entre eles, enquanto a LPC se compromete ontologicamente apenas com a existência de fatos (Russel e Norvig 2004). 4 2.1.1 Sintaxe da LPO A sintaxe da LPO engloba os operadores da LPC, “∧” (e), “∨” (ou), “¬” (negação), “⇒” (implicação) e “⇔” (equivalência), além das constantes “V” (verdadeiro) e “F” (falso). A LPO também conta com variáveis e com os quantificadores universal “∀” e existencial “∃”. Por fim, a sintaxe da LPO inclui sı́mbolos para representar objetos, relações entre objetos e funções (Bittencourt 2006, Fitting 1996, Russel e Norvig 2004). Uma linguagem LPO L pode então ser definida como consistindo de uma tupla dos seguintes conjuntos (Bittencourt 2006, Fitting 1996): • C, um conjunto finito ou contável de sı́mbolos de constante; • P, um conjunto finito ou contável de sı́mbolos de predicado (ou demrelação), utilizados para representar relações entre os objetos. Todo P ∈ P possui um número inteiro associado, chamado aridade, que determina a quantidade de elementos na relação; • F, um conjunto finito ou contável de sı́mbolos de funções. Todos os F ∈ F também possuem uma aridade, aqui determinando o número de argumentos de F ; e • V, um conjunto de variáveis. Exemplo 2.1.1. Seja uma linguagem Lparentesco composta pelos conjuntos: • C parentesco = {Paulo, Maria, Pedro}; • P parentesco = {Cônjuge, Filho, Avó} (todos com aridade dois); e • F parentesco = {Mãe} (de aridade um). As seguintes sentenças poderiam ser escritas: • Filho(Paulo, Maria) ∧ Filho(Paulo, Pedro); • Cônjuge(Maria, Pedro). • Avó(Mãe(Maria), Paulo) ⇔ Filho(Paulo, Maria) A despeito do fato de as sentenças guardarem alguma semelhança com a linguagem natural e fazerem sentido, nenhuma relação foi feita com a realidade, e portanto, formalmente, ainda não é possı́vel dizer se são verdadeiras ou falsas. Outro conceito importante que emerge das definições até aqui apresentadas é a noção de termo. Segundo Fitting (1996), o conjunto de termos de uma linguagem lógica L é definido recursivamente como o menor subconjunto de L tal que: • todo v ∈ V é um termo de L; 5 • todo C ∈ C é um termo de L; e • dado um F ∈ F com aridade n e um conjunto de termos t1 , t2 , . . . , tn ∈ L, F (t1 , t2 , . . . , tn ) é um termo em L (se um termo não contém variáveis, ele é dito fechado; caso contrário, ele é aberto). Uma sentença na LPO que possui apenas um predicado de aridade qualquer ou que enunciam a igualdade entre dois termos é chamada de sentença atômica, e é a unidade formadora de qualquer sentença em LPO. A sintaxe da LPO é resumida na Tabela 2.1 (Russel e Norvig 2004). Tabela 2.1: Sintaxe da LPO na forma de Backu-Naur. Sentença SentençaAtômica SentençaComplexa Termo OperadorBinário Quantificador Constante Predicado Função Variável → SentençaAtômica | SentençaComplexa → Predicado | Predicado( Termo, ... ) | Termo = Termo → ( Sentença ) | [ Sentença ] | ¬ Sentença | Sentença OperadorBinário Sentença | Quantificador Variável, ... Sentença → Função( Termo, ... ) | Constante | Variável → ∨|∧|⇒|⇔ → ∀|∃ → C∈C → P ∈P → F ∈F → v∈V Quando uma sentença em LPO contém termos abertos aplica-se um mapeamento σ : V 7→ T , onde T denota o conjunto de termos, que substitui uma ou mais variáveis da sentença por termos. Este mapeamento é chamado de substituição. Denota-se a aplicação de uma substituição σ sobre uma sentença S por Sσ. A despeito do fato de ter como domı́nio o conjunto de variáveis, considera-se possı́vel aplicar uma substituição a um sı́mbolo de constante, tendo como resultado o próprio sı́mbolo, isto é, para c ∈ C, cσ = c. Para uma função f de aridade n, [f (t1 , t2 , ..., tn )]σ = f (t1 σ, t2 σ, ..., tn σ). Uma outra notação permite especificar explicitamente as substituições realizadas. Por exemplo, se uma substituição σ substitui as variáveis x1 , x2 , ..., xn pelos termos t1 , t2 , ..., tn , respectivamente, em uma sentença S, denota-se Sσ alternativamente por S{x1 /t1 , x2 /t2 , ..., x3 /t3 }. Quando uma substituição σ deve manter inalterada uma determinada variável x, escreve-se tal substituição como σx (Fitting 1996, Bittencourt 2006). Para a aplicação de substituições a sentenças quaisquer algumas propriedades devem ser obedecidas. São elas: 6 • sejam P ∈ P um predicado de aridade n e t1 , t2 , ..., tn um conjunto de termos, então [P (t1 , t2 , ...tn )]σ = P (t1 σ, t2 σ, ...tn σ); • para os sı́mbolos “V ” e “F ”, V σ = V e F σ = F ; • dada uma sentença S, [¬S]σ = ¬Sσ; • denotando por “” um dos operadores binários “∨”, “∧”, “⇒”, “⇔”, se S1 e S2 são sentenças, então [S1 S2 ]σ = S1 σ S2 σ. • para uma sentença S, [(∀x)S]σ = [(∀x)(Sσx )]; • para uma sentença S, [(∃x)S]σ = [(∃x)(Sσx )]. Exemplo 2.1.2. Considerando a sentença S = Cônjuge(x, y), a aplicação de uma substituição σ = {x/Pedro, y/Maria} nesta expressão (escrita Sσ) produz a sentença atômica Cônjuge(Pedro, Maria). 2.1.2 Semântica da LPO A semântica de uma linguagem lógica corresponde ao estabelecimento de diretrizes para a atribuição de valores-verdade (verdadeiro ou falso) para expressões nessa linguagem de acordo com a sua relação com a realidade. Com este fim, os elementos relevantes da realidade devem ser representados dentro do arcabouço formal da linguagem. A estrututura formal que possibilita esta inclusão na LPO é o modelo. Um modelo consiste de um conjunto de objetos do mundo real e um mapeamento que relaciona os elementos da liguagem lógica desenvolvida com estes objetos. Este mapeamento recebe o nome de interpretação e o conjunto de objeto, de domı́nio (Russel e Norvig 2004). Formalmente, de acordo com Fitting (1996), um modelo é uma tupla M = hD, Ii, onde D é um conjunto não-vazio representando o domı́nio de M e I uma interpretação, que realiza os seguintes mapeamentos: • todo c ∈ C em um cI ∈ D; • todo f ∈ F com aridade n em um mapeamento f I : Dn 7→ D; e • todo p ∈ P com aridade n em uma relação pI ⊆ Dn . Após o estabelecimento do coneceito de modelo, Fitting (1996) prossegue com a construção da semântica da LPO através da definição de atribuições, que são mapeamentos do tipo A : V 7→ D, do conjunto de variáveis sobre o domı́nio do modelo. Cada atribuição A possui um mapeamento B associado chamado de variante-x de A, que executa a atribuição denotada por A mantendo a variável x inalterada. O autor ressalta que as definições de atribuição e substituição são similares, porém geralmente não idênticas, exceto no caso em que o domı́nio D é exatamente o conjunto de termos fechados de L, caso em que o modelo M é denominado modelo de 7 Herbrand. Aqui se considerará este último caso, e portanto, no procedimento de determinação de valores-verdade a seguir, substituições serão utilizadas no lugar das atribuições originalmente utilizadas pelo autor. Assim, se M = hD, Ii é um modelo de Herbrand da linguagem L = hC, P, F, Vi, e σ é uma substituição, então a atribuição de valores verdadeiro ou falso para uma sentença (Sσ)I é realizada de acordo com o seguinte (Fitting 1996): • para as constantes “V ” e “F ”, tem-se, respectivamente, (V σ)I = verdadeiro e (F σ)I = falso; • sejam P ∈ P e t1 , t2 , ..., tn termos de L, {[P (t1 , t2 , ..., tn )]σ}I = verdadeiro se e somente se h(t1 σ)I , (t2 σ)I , ..., (tn σ)I i ∈ P I ; • se S é uma sentença, [¬(Sσ)]I = ¬(Sσ)I ; • se S1 e S2 são sentenças e “” representa qualquer operador binário, [(S1 S2 )σ]I = (S1 σ)I (S2 σ)I ; • [(∀x)(Sσ)]I = verdadeiro se e somente se (Sσx )I = verdadeiro para todo σx em M; • [(∃x)(Sσ)]I = verdadeiro se e somente se (Sσx )I = verdadeiro para algum σx em M; Equivalentemente, dados um modelo M, uma sentença S em LPO e uma substituição σ, pode-se definir um mapeamento da dupla hM, Sσi sobre o conjunto {verdadeiro, falso} chamado de consequência lógica, e escrito como na Equação (2.1). Esta equação (lida “S é consequencia lógica de M” ou ainda “M modela S”) representa uma outra forma de escrever (Sσ)I . M |= S (2.1) Exemplo 2.1.3. Continuando com o Exemplo 2.1.1, onde se definiu a linguagem Lparentesco , agora já se dispõe de recursos para avaliar o valor das sentenças apresentadas naquele exemplo. É importante observar que, pela definição recursiva dos termos, a presença de um sı́mbolo de função gera um domı́nio infinito. Considere-se um modelo de Herbrand M que consiste de um domı́nio D = C parentesco ∪ {Mãe(c) | c ∈ C parentesco } ∪ {Mãe(Mãe(c)) | c ∈ C parentesco } ∪ . . . , e de uma intrepretação I que produz os seguintes conjuntos: • CônjugeI = {(P edro, M aria), (M aria, P edro)}; • FilhoI = {(P aulo, P edro), (P aulo, M aria), (P edro, Mãe(P edro)), (Mãe(P edro), Mãe(Mãe(P edro))), . . . , (M aria, Mãe(M aria)), (Mãe(M aria), Mãe(Mãe(M aria))), . . .}; 8 • AvóI = {(Mãe(M aria), P aulo), (Mãe(P edro), P aulo), (Mãe(Mãe(M aria)), M aria), . . . , (Mãe(Mãe(P edro)), P edro)}. Assim a sentença Avó(Mãe(Maria), Paulo) ⇔ Filho(Paulo, Maria) é verdadeira, pois (Mãe(Maria), Paulo) ∈ AvóI , o que faz o lado esquerdo da equivalência ser verdadeiro, e (Paulo, Maria) ∈ FilhoI fazendo o lado direito também verdadeiro, portanto o resultado da operação bicondicional é verdadeiro. Dadas duas sentenças diferentes tais que pelo menos uma possui uma variável, chama-se de unificação o procedimento utilizado para encontrar uma substituição que, quando aplicada a ambas, as torne logicamente idênticas. Esta substituição, por sua vez, é denominada unificadora das duas sentenças. A unificação pode também falhar, caso não haja uma substituição que torne as sentenças logicamente idênticas. Isso pode ocorrer devido a uma nomeação inadequada de variáveis, conforme o Exemplo 2.1.4 ilustra. Para evitar esta última ocasião deve-se realizar um processo de padronização de variáveis, que renomeia variáveis antes da aplicação da unificação de modo que tenham um nome único (Fitting 1996, Russel e Norvig 2004). Exemplo 2.1.4. Utilizando a notação de Russel e Norvig (2004), tem-se UNIFICAR(Filho(Paulo, x), Filho(y, Pedro)) = {x/Maria, y/Paulo} Caso as variáveis da expressão acima tivessem o mesmo nome, teria-se UNIFICAR(Filho(Paulo, x), Filho(x, Pedro)) = f alha, pois não há uma substituição que atribua um elemento do domı́nio a x e unifique as sentenças. 2.2 Lógica Temporal Proposicional (LTP) A Lógica Temporal Proposicional (LTP) é também uma extensão à LPC. O compromisso ontológico da LTP é com os fatos que são verdadeiros em instantes de tempo tomados relativamente ao tempo atual. A LTP tem sua origem no trabalho de Pnueli (1977), quando este apresentou um sistema formal de raciocı́nio temporal aplicado à verificação de programas. Este sistema formal foi chamado de Lógica Temporal Linear (LTL). Segundo o autor, esta é uma abordagem unificada, uma vez que pode ser aplicada tanto à verificação de programas sequenciais, quanto à de programas paralelos. E para lograr tal unificação, Pnueli introduz duas definições: • Invariância: utilizada para expressar propriedades dos programas que se mantém válidas durante toda a execução. 9 • Eventualidade: definição mais importante, segundo o próprio autor, a eventualidade representa uma implicação temporal, isto é, uma dada situação A assegura que eventualmente uma outra situação B irá ocorrer. No trabalho de Gabbay et al. (1980) a LTP foi proposta como uma forma proposicional da LTL sobre modelos em tempo discreto, contando com os operadores de próximo instante “X” (que permite expressar o que é ou não verdadeiro no próximo instante) e “até que”“U ” (que possibilita escrever expressões do tipo, “a propriedade A é verdadeira até que B torne-se verdadeira”) (Konur 2010). Esta seção se dedicará à descrição da LTP seguindo o formato da seção anterior: primeiro a sintaxe da LTP será definida, e então a semântica. Finalmente, o algoritmo MetateM será apresentado, fornecendo as diretrizes para a execução de fórmulas em LTP. O restante da seção utilzou como referências os trabalhos de Michael Fisher (Fisher 2011), (Fisher 1996) e (Fisher 2006). Para evitar citações repetitivas ao longo do texto, estas foram omitidas. 2.2.1 Sintaxe da LTP A sintaxe da LTP contém os operadores da LPC (“∧”, “∨”, “¬”, “⇒” e “⇔”) e as constantes “V ” e “F ”. Em adição a estes, operadores temporiais estendem a expressividade da LPC, incorporando o tempo na estrutura da linguagem. Estes operadores temporais são: • o operador “inı́cio”; • os operadores unários de próximo instante “ e”, de invariância “” e de eventualidade “♦”; e • os operadores binários “U” e “W”. Um conjunto de sı́mbolos proposicionais P determina o alfabeto disponı́vel para a criação de sentenças proposicionais temporais. Para estabelecer fatos conhecidos no instante inicial (isto é, no tempo t = 0), utiliza-se o operador “inı́cio”. Exemplo 2.2.1. Tomando como exemplo um caso em que as sentenças de LTP a serem desenvolvidas devem descrever as relações temporais entre os dias da semana, o conjunto de sı́mbolos proposicionais é formado por {segunda-feira, terça-feira, quarta-feira, quinta-feira, sexta-feira, sábado, domingo}. O operador de inı́cio pode ser utilizado nesse contexto para estabelecer um dia inicial a ser considerado no restante da análise. Por exemplo, se o dia inicial é segunda-feira, a sentença em LTP correspondente é mostrada na Equação (2.2). inı́cio ⇒ segunda-feira 10 (2.2) O operador de próximo instante (“ e”) é utilizado para se expressar algo sobre o próximo instante de tempo. A base temporal não é determinada na sintaxe da linguagem, isto é, o operador pode se referir tanto ao próximo segundo, como ao próximo ano, dependendo do problema. Exemplo 2.2.2. A expressão“amanhã será domingo”é escrita utilizando o operador de próximo instante conforme a sentença edomingo Exemplo 2.2.3. Pode-se estender o exemplo anterior para ilustrar a criação de regras em LTP. A sentença “se hoje é sábado então amanhã é domingo” pode ser expressa em LTP como na sentença abaixo: sábado ⇒ edomingo A invariância mantém na LTP a sua utilidade original de representar fatos que conservarão um estado lógico ao longo de todos os instantes futuros. Exemplo 2.2.4. Utilizando como base o Exemplo (2.2.3), gera-se a Equação (2.3), que expressa a sentença “sempre que hoje for sábado, amanhã será domingo”. (sábado ⇒ edomingo) (2.3) O operador de eventualidade, conforme mencionado no inı́cio desta seção, é também um operador unário. Ele é utilizado para expressar situações que irão certamente ocorrer em algum instante futuro, mas não se especifica esse instante. Exemplo 2.2.5. Expressa-se “sempre que hoje for quinta-feira então eventualmente será domingo” em LTP como na Equação (2.4). (quinta-feira ⇒ ♦domingo) (2.4) Para completar a descrição da sintaxe da LTP, restam os dois operadores binários “U” (até que) e “W” (a menos que). O operador “U” é utilizado quando uma situação é verdadeira até que uma outra ocorra. O operador “W” difere sutilmente do “U”: o “a menos que” é aplicado em casos onde não é garantido que o segundo operando venha a ser tornar verdadeiro. Assim, “W” pode ser utilizado para substituir “U”, mas a recı́proca não é válida. Exemplo 2.2.6. A expressão “hoje é sábado até que seja domingo”, por exemplo, é escrita com este operador conforme a Equação (2.5). sábado U domingo Um resumo da sintaxe da LTP é mostrado na Tabela 2.2. 11 (2.5) Tabela 2.2: Sintaxe da LTP na forma de Backu-Naur. Sı́mbolo Sentença OperadorUnário OperadorBinário 2.2.2 → → | | | → → Elemento de um conjunto de sı́mbolos proposicionais. ( Sentença ) | [ Sentença ] V | F | inı́cio | Sı́mbolo OperadorUnário Sentença Sentença OperadorBinário Sentença ¬ | | e| ♦ ∨|∧|⇒|⇔|U |W Semântica da LTP Assim como na LPO, a semântica na LTP também depende do conceito de modelo. Um modelo em LTP é dado por uma seqüência de mundos, indexados por instantes discretos, em cada um dos quais um determinado conjunto de sı́mbolos proposicionais (subconjunto de P) é verdadeiro. A Tabela 2.3 ilustra esta definição. Nesta tabela vê-se que no instante i − 1, os sı́mbolos p, s, t e w são verdadeiros. No instante i, apenas s e w são verdadeiros, e em i + 1 nenhum sı́mbolo é verdadeiro. Tabela 2.3: Modelo em LTP simplificado. Índice Temporal Sı́mbolos Verdadeiros ··· ··· i−1 p, s, t, w i s, w i+1 ··· ··· Formalmente, um modelo M consiste de uma tripla, como a mostrada na Equação (2.6), onde S denota o conjunto de ı́ndices temporais, R uma relação de acessibilidade temporal que realize a serialização de S e π uma aplicação de S sobre 2P . M = hS, R, πi (2.6) Uma estrutura deste tipo é chamada Estrutura de Kripke. A relação π : S 7→ 2P deve ser definida para sentenças em LTP de modo a associar um ı́ndice temporal de i ∈ S a um subconjunto de P se, e somente se, este subconjunto for inteiramente composto por sı́mbolos verdadeiros no tempo i. Assim, para a definição da semântica das sentenças em LTP, este mapeamento deve ser definido para cada tipo de sentença presente na Tabela 2.2. Conforme se verificou no desenvolvimento da sintaxe da LTP, os operadores aqui definidos referem-se apenas ao futuro. Portanto, o conjunto S é dado como o conjunto dos números naturais, e a relação de serialização R em S deve ser tal que os ı́ndices temporais sejam serializados em ordem crecente. Todavia, por simplicidade, a relação R é omitida da expressão do modelo, e este é dado, então, pela Equação (2.7). M = hN, πi (2.7) 12 Uma visualização dessa concepção mais formal de um modelo é mostrada na Tabela 2.4. Tabela 2.4: Representação de um modelo em LTP. ··· ··· ··· → i−1 → i → i+1 ↓ π(i − 1) ↓ ↓ π(i) ↓ ↓ π(i + 1) ↓ {p, s, t, w} {s, w} {} → ··· ··· ··· A atribuição efetiva de valores-verdade a sentenças da LTP ocorre então através de um mapeamento similiar ao definido na Equação (2.1) para sentenças da LPO, mas dessa vez o mapeamento é de uma tripla sobre o conjunto {verdadeiro, falso}, isso porque agora um ı́ndice temporal deve ser considerado. Assim, dado um modelo M = hN, πi, um instante i e uma sentença da LTP, o mapeamento |=: hM, i, Si 7→ {verdadeiro, falso} é escrito como na Equação (2.8). hM, ii |= S (2.8) O restante desta subseção será dedicado a construir a semântica das expressões da Tabela 2.2. Sentenças Atômicas Sentenças atômicas em LTP são sentenças compostas por apenas um sı́mbolo proposicional. A semântica de uma sentença atômica p ∈ P é dada pela Equação (2.9). hM, ii |= p se, e somente se, p ∈ π(i) (2.9) Sentenças com Operadores Clássicos Sejam S1 e S2 duas sentenças da LTP. A semântica de sentenças com operadores clássicos é dada na Equação (2.10) (onde “sse” é uma abreviação de “se, e somente se”). hM, ii |= ¬S1 hM, ii |= S1 ∧ S2 hM, ii |= S1 ∨ S2 hM, ii |= S1 ⇒ S2 hM, ii |= S1 ⇔ S2 sse sse sse sse sse hM, ii |= S1 e hM, ii |= S1 ou se hM, ii |= S1 então hM, ii |= S1 sse 13 hM, ii 2 S1 hM, ii |= S2 hM, ii |= S2 hM, ii |= S2 hM, ii |= S2 (2.10) Sentenças com Operadores Temporais Para sentenças com operadores temporais, a atribuição de valores-verdade é realizada através da manipulação do ı́ndice temporal de acordo com a função do operador temporal, seguido da verificação, no instante resultante, de se a sentença é ou não consequência lógica do modelo. A seguir, a semântica de cada operador temporal será apresentada e ilustrada. • Operador de Inı́cio (“inı́cio”) Em qualquer modelo, o operador “inı́cio” é satisfeito apenas no marco zero, conforme a Equação (2.11). hM, ii |= inı́cio sse i = 0 (2.11) A Tabela 2.5 ilustra o exposto acima. Tabela 2.5: Representação da semântica do operador de inı́cio. inı́cio ⇒ φ 0 ↓ π(0) ↓ {φ} → → 1 ↓ π(1) ↓ {} → 2 ↓ π(2) ↓ {} 3 ↓ π(3) ↓ → {} 4 ↓ π(4) ↓ → {} 5 ↓ π(5) ↓ → {} ··· ··· ··· ··· • Operador de Próximo Instante (“ e”) Uma sentença “ eS” é verdadeira em um modelo M se, e somente se, ela for consequência lógica do modelo no próximo instante. Isso está formalmente representado na Equação (2.12) e ilustrado na Tabela 2.6. hM, ii |= eS sse hM, i + 1i |= S (2.12) Tabela 2.6: Representação da semântica do operador de próximo instante. ··· ··· ··· ··· → i−1 → eφ i → i+1 → i+2 ↓ π(i − 1) ↓ ↓ π(i) ↓ ↓ π(i + 1) ↓ ↓ π(i + 2) ↓ {} {} {φ} {} → i+3 ↓ π(i + 3) ↓ {} → ··· ··· ··· ··· • Operador de Eventualidade (“♦”) Uma eventualidade representa um indeterminismo sobre em que instante de tempo o seu operando será satisfeito. Ela representa uma restrição: a sentença 14 do seu único argumento será satisfeita em algum momento do futuro (Tabela 2.7). A Equação (2.13) representa este indeterminismo através do operador “∃”. hM, ii |= ♦S sse, existe j ∈ N tal que (j ≥ i) ∧ hM, ji |= S (2.13) Tabela 2.7: Representação da semântica do operador de eventualidade. ··· ··· ··· ··· ♦φ → i−1 → i ↓ π(i − 1) ↓ ↓ π(i) ↓ {} {} → ··· ··· ··· → i+j → i+j+1 ↓ π(i + j) ↓ ↓ π(i + j + 1) ↓ {φ} {} → ··· ··· ··· ··· Quando a desigualdade da Equação (2.13) é estrita, denota-se o operador de eventualidade por ♦+ , e a sua semântica é levemente alterada, produzindo a Equação (2.14). hM, ii |= ♦+ S sse, existe j ∈ N tal que (j > i) ∧ hM, ji |= S (2.14) • Operador de Invariância (“”) A Equação (2.15) estabelece a semântica do operador de invariância. Em palavras, a expressão “S” é consequência lógica do modelo M no instante i se, e somente se, “S” for consequência lógica de M para todos os instantes posteriores a i (inclusive) (Tabela 2.8). hM, ii |= S sse, para todo j ∈ N, (j ≥ i) ∧ hM, ji |= S (2.15) Tabela 2.8: Representação da semântica do operador de invariância. ··· ··· ··· ··· → i−1 → φ i ↓ π(i − 1) ↓ ↓ π(i) ↓ ↓ π(i + 1) ↓ ↓ π(i + 2) ↓ {} {φ} {φ} {φ} → i+1 → i+2 → i+3 → ↓ π(i + 3) ↓ {φ} ··· ··· ··· ··· De maneira similar ao operador de eventualidade, o operador de invariãncia também possui uma variante para a utilização de uma desigualdade estrita na Equação 2.15. Esta variante é denotada por “+ ”, e é dada pela Equação (2.16). hM, ii |= + S sse, para todo j ∈ N, (j > i) ∧ hM, ji |= S 15 (2.16) • Operador “Até Que” (“U”) Se em um dado modelo certa sentença “S1 ” é verdadeira até que uma outra sentença “S2 ” se torne verdadeira, fazendo a primeira deixar de sê-lo e assim se mantenha (Tabela 2.9), então a expressão hM, ii |= S1 US2 é consequência lógica do modelo (ver Equação (2.17)). hM, ii |= S1 US2 sse, (existe j ∈ N tal que j ≥ i ∧ hM, ji |= S2 ∧ (para todo k ∈ N, se i ≤ k < j então hM, ki |= S1 ) (2.17) Tabela 2.9: Representação da semântica do operador “até que”. ··· ··· ··· ··· → i−1 → φU ψ i ↓ π(i − 1) ↓ ↓ π(i) ↓ ↓ π(i + 1) ↓ ↓ π(i + 2) ↓ {} {φ} {φ} {ψ} → i+1 → i+2 → i+3 → ↓ π(i + 3) ↓ {} ··· ··· ··· ··· • Operador “A Menos Que” (“W”) Muito proximamente relacionado ao operador “U”, o operador “W” tem sua semântica mostrada na Equação (2.18) em termos deste operador. hM, ii |= S1 WS2 sse, (hM, ii |= S1 US2 ∨ S1 ) (2.18) A Tabela 2.10 ilustra dois casos possı́veis para o operador “a menos que”: um em que a expressão do seu segundo argumento nunca se torna verdadeira e outro em que isso ocorre (caso em que a semântica é idêntica à do operador “U”). Tabela 2.10: Representação da semântica do operador “até que”. ··· ··· ··· ··· ··· ··· ··· ··· → i−1 → φWψ i → i+1 → i+2 → i+3 ↓ π(i − 1) ↓ ↓ π(i) ↓ ↓ π(i + 1) ↓ ↓ π(i + 2) ↓ {} {φ} {φ} {φ} → i−1 → {φ} φWψ i → i+1 → i+2 ↓ π(i) ↓ ↓ π(i + 1) ↓ ↓ π(i + 2) ↓ → i+3 ↓ π(i − 1) ↓ {} {φ} {φ} {ψ} 16 ↓ π(i + 3) ↓ ↓ π(i + 3) ↓ {} ··· ··· ··· ··· ··· → ··· ··· ··· → 2.2.3 O Algoritmo MetateM O algoritmo MetateM fornece um procedimento para a execução de uma sentença em LTP. A execução de sentenças em LTP corresponde ao processo de geração de um modelo, isto é, geração de uma sequência de conjuntos de sentenças proposicionais indexados por um ı́ndice temporal discreto. Este processo de construção utiliza a abordagem de futuro imperativo, que consiste na construção iterativa a partir do estado inicial. Forma Normal Separada (FNS) A Forma Normal Separada (FNS) é uma representação de uma sentença complexa da LTP que consiste de uma conjunção invariante de várias fórmulas mais simples. A FNS é escrita conforme a sentença da Equação 2.19. ^ Ri (2.19) i Cada Ri é chamado de regra e possui um dos formatos a seguir: start ⇒ g ^ a=1 g ^ r _ lb b=1 r _ ka ⇒ e (regra de inı́cio); lb (regra de próximo instante); b=1 ka ⇒ ♦l (regra de eventualidade). a=1 Uma sentença na FNS é apresentada, por questões de clareza, com as suas regras listadas sequencialmente. Assim, a sentença na FNS (R1 ∧ . . . ∧ Rn ) é escrita: R1 ··· Rn . Encadeamento Adiante: Regras de Estado Inicial O MetateM utiliza um mecanismo de encadeamento adiante para executar uma sentença em LTP: se o conjunto de sı́mbolos verdadeiros no instante atual tornar verdadeira a sentença do lado esquerdo da implicação de alguma regra Ri da Equação (2.19), então a sentença do lado direito desta regra é executada. O procedimento continua, aplicando uma estratégia passo-a-passo, a partir do estado inicial, para a construção do modelo. Assim, dada uma sentença da LTP escrita na FNP, o primeiro passo é avaliar qual é o estado inicial do modelo, isto é, a partir das regras de inı́cio da sentença definir o que é verdadeiro no intante inicial. 17 Uma vez definido o estado inicial, o encadeamento é iniciado: todas as premissas das regras restantes (de próximo instante e de enventualidade) que são consequências lógicas do modelo no instante inicial têm suas consequências executadas. Encadeamento Adiante: Regras de Próximo Instante Seja uma regra de próximo instante dada por P ⇒ eC. Considerando que o ı́ndice do tempo atual é i, se hM, ii |= P , então hM, ii |= eC, o que, de acordo com a semântica do operador “ e”, equivale a hM, i + 1i |= C. O modelo resultante é mostrado na Tabela 2.11. Tabela 2.11: Modelo gerado pela execução de uma sentença de próximo instante. ··· ··· ··· ··· → i−1 → i ↓ π(i − 1) ↓ ↓ π(i) ↓ → i+1 ↓ π(i + 1) ↓ → i+2 ↓ π(i + 2) ↓ {} {P } P ⇒ eC {C} {} → i+3 ↓ π(i + 3) ↓ {} → ··· ··· ··· ··· Exemplo 2.2.7. Seja a sentença da LTP na FNS inı́cio ⇒ domingo domingo ⇒ esegunda-feira segunda-feira ⇒ eterça-feira. A execução desta sentença produz o estado inicial composto apenas pelo sı́mbolo domingo. Com isso, inicia-se o encadeamento. Tem-se que hM, 0i |= domingo, logo hM, 1i |= segunda-feira. Esta última expressão, por sua vez, implica em hM, 2i |= terça-feira. Encadeamento Adiante: Regras de Eventualidade Um ponto crucial do algoritmo MetateM é o tratamento de regras de eventualidade. A estratégia adotada é uma vez que a premissa de uma regra de eventualidade é satisfeita, a enventualidade na sua consequência também deverá sê-lo 18 tão logo quanto possı́vel. Isto é, dada uma regra P ⇒ ♦C e um modelo hN, πi, se P ∈ π(i), C deverá ser adicionado a π(t) no primeiro t ≥ i em que ¬C ∈ / π(t). O Exemplo 2.2.8, a seguir, demonstra a estratégia do MetateM para a execução de eventualidades. Exemplo 2.2.8. Sejam um modelo hN, πi e as regras a seguir: inı́cio ⇒ domingo inı́cio ⇒ ¬segunda-feira inı́cio ⇒ ¬terça-feira domingo ⇒ ♦segunda-feira domingo ⇒ ♦terça-feira domingo ⇒ e¬terça-feira. No tempo t = 0, tem-se π(0) = {domingo, ¬segunda-feira, ¬terça-feira}, segundo as regras de inı́cio. Assim, ainda em t = 0 as três regras seguintes têm suas premissas satisfeitas (pelo sı́mbolo domingo). As regras de eventualidade estabelecem que eventualmente os sı́mbolos segunda-feira e terça-feira serão verdadeiros. Mas em t = 0, tem-se as restrições ¬segunda-feira e ¬terça-feira, logo as eventualidades não podem ser imediatamente satisfeitas. Devido à regra de próximo instante domingo ⇒ e¬terça-feira, em t = 1, a restrição ¬terça-feira é mantida, mas a restrição sobre segunda-feira não é, possibilitando a satisfação de uma das eventualidades. Portanto: π(1) = {segunda-feira, ¬terça-feira}. Por fim, em t = 2, a restrição sobre terça-feira não é mais mantida (nenhuma regra propaga a negação ¬terça-feira), possibilitando a satisfação da última eventualidade: π(2) = {terça-feira}. (2.20) Verificação de Ciclo Durante a execução de fómulas em LTP pode ocorrer que, a partir de algum i ≥ 0, tenha-se sempre π(i) = π(i + T ), onde T é um inteiro positivo. Isso significa que a execução entrou em um ciclo. Ciclos não são necessariamente indesejáveis: eles podem fazer parte da execução. Em geral, ciclos que impedem a satisfação de eventualidades são considerados indesejáveis, enquanto que ciclos que em algum ponto satisfazem todas as eventualidades são considerados como parte da execução, ou desejáveis. 19 Retrocesso Conforme se vê nas regras de inı́cio e próximo instante da FNS na Equação (2.19), estas podem conter disjunções em seus respectivos lados direitos (consequentes). Estas disjunções representam escolhas que devem ser feitas ao longo da execução de uma fórmula. Assim, ao encontrar uma disjunção no lado direito de uma regra, escolhe-se um dos disjuntos para adicionar ao conjunto de sı́mbolos verdadeiros do instante correspondente. Mas os demais disjuntos são guardados, pois se a escolha inicial conduzir a alguma inconsistência, deve-se retroceder ao ponto da escolha e escolher outro disjunto. Se todas as escolhas falharem, significa que as regras são inconsistentes. Pseudo-Código do MetateM O pseudo-código do MetateM é mostrado no Algoritmo 1. Neste algoritmo aplicase a seguinte simbologia: • E é o conjunto de regras de eventualidade; • P o conjunto de regras de próximo instante; • I o conjunto de regras de inı́cio; • Si denota o conjunto de sı́mbolos verdadeiros em i; e • Ei denota o conjunto de eventualidade não-satisfeitas até i. Considera-se também que as eventualidades não podem ser satisfeitas imediatamente, isto é, utiliza-se a eventualidade estrita, representada pelo sı́mbolo “♦+ ”. 2.3 Quadros Minsky (1974) propôs um método de representação de conhecimento baseado em estruturas de dados cujos nós mantinham entre si relações e informações que ajudavam a decidir como e quando explorar tais relações. Essas estruturas de dados foram denominadas quadros, e foram utilizados pelo autor como descritores de situações estereotı́picas. Exemplo 2.3.1. Conforme o próprio Minsky em um trabalho posterior (Minsky 1984), um exemplo de situação estereotı́pica seria estar em um certo quarto ou um certo tipo de festa: a situação é inicialmente representada por um quadro genérico, estereotı́pico, que possui caracterı́sticas comuns a todos os tipos de quartos ou festas, mas à medida que as percepções vão sendo adquiridas, o quadro é atualizado para descrever aquela situação especı́fica (estar em um quarto especı́fico ou em um tipo de festa especı́fico). 20 Algoritmo 1 Algoritmo MetateM. Entrada: I, um conjunto de regras de inı́cio; Entrada: P, um conjunto de regras de próximo instante; Entrada: E, um conjunto de regras de eventualidade; 1: função MetateM(I,P,E) 2: S0 ← {F | (inı́cio ⇒ F ) ∈ I} 3: Ei ← {} 4: enquanto verdadeiro faça 5: C ← {G | (P ⇒ eG) ∈ P ∧ P ∈ Si } 6: Ei+1 ← Ei ∪ {H | (Q ⇒ ♦+ H) ∈ E ∧ Q ∈ Si } 7: para cada V ∈ Ei+1 faça 8: se V ∧ C é consistente então 9: C ←C ∧V 10: remove V de Ei+1 11: fim se 12: fim para 13: Si+1 ← escolha de atribuição consistente com C 14: se Si+1 ≡ {} ou ∧N k=0 (V ∈ Ei+k ) então 15: Retrocede até escolha anterior 16: fim se 17: fim enquanto 18: fim função Segundo Bittencourt (2006), a estrutura dos quadros é formada por campos que recebem preenchedores (do inglês, “fillers”), que são simplesmente valores que são utilizados para descrever o objeto representado pelo quadro. Os valores dos quadros também possuem algumas propriedades, denominadas facetas, que são usadas para determinar dados default, ou de exceção, o tipo de dados esperado e informações para calcular o valor do atributo. Adicionalmente, os valores dos quadros podem receber outros quadros, gerando uma rede de dependências. Exemplo 2.3.2. Bittencourt (2006) dá um exemplo de um quadro “Sala” que possui uma relação de herança com o quadro “Cômodo”. O autor apresenta os quadros e suas relações de uma forma gráfica, que é apresentada aqui na Figura 2.1. Na figura, o quadro é referido por sua denominação original em inglês: “frame”. O campo super-frame é onde se indica o quadro de onde se herdaram propriedades, estabelecendo um relacionamento do tipo “é-um”; nesse exemplo, uma “Sala” é um “Cômodo”. Assim, a partir do quadro “Sala” um procedimento de inferência pode deduzir o seu formato e altura, por exemplo. Informações na coluna “Se-necessário” estabelecem diretrizes para o cálculo de valores de atributos. Hayes (1979) ressalta que a utilização de quadros, além da utilidade representacional (a que o autor se refere como “metafı́sica”), possui também importância 21 Figura 2.1: Exemplo de quadros (Bittencourt 2006). prática (“heurı́stica” ou “de implementação”, nas palavras do autor), uma vez que a representação através de quadros facilitia o armazenamento e a recuperação do conhecimento em um sistema computacional por já possuir uma estrutura adequada a este fim. 2.4 2.4.1 Sistemas Baseados em Conhecimento e Sistemas Especialistas Sistemas de Produção Os Sistemas de Produção são sistemas que representam o conhecimento por meio de um conjunto de regras chamadas regras de produção. Os sistemas de produção iniciaram-se com Post (1943), que propôs um sistema consistindo de regras de modificação sintática sobre uma memória de trabalho (MT) composta de uma cadeias de caracteres. Um interpretador era responsável pela modificação da memória de trabalho de acordo com as regras de modificação. A estrutura básica de sistemas de produção é ilustrada na Figura 2.2 (Bittencourt 2006). Figura 2.2: Estrutura genérica de um sistema de produção de regras. 22 Exemplo 2.4.1. Para exemplificar a execução de um sistema de produção de Post, sejam uma MT composta pela sequência de caracteres “123” e as regras de modificação sintática mostradas na Tabela 2.121 . Os caracteres “-”, “•” e “*” representam, respectivamente, um caractere nulo, um caractere de fim de sequência e um caractere especial. Tabela 2.12: Exemplo de regras de produção de um sistema de Post Índice da Regra Regra 1 ∗ij → j ∗ i 2 ∗i → i∗ 3 ∗• → -• 4 -→∗ Estas regras propõem modificações sintáticas em cadeias de caracteres. O interpretador é o elemento reponsável pela realização das alterações, atuando da seguinte forma: se o padrão do lado esquerdo de uma regra é encontrado na memória de trabalho, então o trecho da memória de trabalho que correspondeu àquele padrão é modificado para corresponder agora ao lado direito da regra. A Tabela 2.13 mostra algumas etapas da execução do interpretador. Tabela 2.13: Exemplo de Execução de um Sistema de Post. Padrão do Lado Esquerdo Regra Utilizada Memória de Trabalho Corresponde na pelo Interpretador Resultante Memória de Trabalho 1: ∗ i j → j ∗ i Não 123• 2: ∗ i → i ∗ Não 123• 3: ∗ • → - • Não 123• 4: - → ∗ Sim ∗123• 1: ∗ i j → j ∗ i Sim 2 ∗ 13• 1: ∗ i j → j ∗ i Sim 23 ∗ 1• 1: ∗ i j → j ∗ i Não 23 ∗ 1• 2: ∗ i → i ∗ Sim 231 ∗ • 1: ∗ i j → j ∗ i Não 231 ∗ • 2: ∗ i → i ∗ Não 231 ∗ • 3: ∗ • → - • Sim 231• 1 Exemplo extraı́do de http://www1.se.cuhk.edu.hk/ seem5750/Lecture 2.pdf; Acessado a 10/06/2014, às 9:25 23 2.4.2 Sistemas Baseados em Conhecimento e Sistemas Especialistas Utilizando a estrutura funcional dos sistemas de Post, os sistemas de produção ganham generalidade quando passam a utilizar um método de representação de conhecimento como linguagem formal para a criação da sua base de regras e da sua MT. Nesse caso, segundo Bittencourt (2006), tem-se um Sistema Especialista (SE). Segundo o autor, um SE tem o propósito de mimetizar o atuação de um especialista humano em um domı́nio bastante especı́fico. A base de regras e a MT compõem a base de conhecimento (BC) do SE e o interpretador é substituı́do por um Motor de Inferência (MI). Uma linguagem formal tı́pica para representação de conhecimento em SE é a LPO. As regras consistem, nesse caso, de cláusulas definidas da LPO que, segundo Russel e Norvig (2004), são sentenças implicativas do tipo Condição ⇒ Ação. Assim, as premissas (ou condições) das regras devem ser comparadas com a MT a fim de decidir se a MT deve ser alterada de acordo com as consequências da regra. Portanto, o interpretador agora funciona como um mecanismo de inferência lógica. Esse processo de inferência é realizado em um ciclo do MI, que consiste de três etapas (Brachman e Levesque 2004): • reconhecer: encontrar dentre as regras aquelas cujas premissas são satisfeitas pela MT (gerando o conjunto de conflitos); • resolver conflitos: escolher uma regra do conjunto de conflitos; • agir: realizar as alterações na memória de trabalho de acordo com a consequência da regra selecionada. Segundo Brachman e Levesque (2004), os Elementos da Memória de Trabalho (EMT) de um SE consiste de tuplas contendo o tipo do elemento, seus atributos e os valores destes atributos. O formato geral de um EMT é dado na Figura 2.3, onde tipo, atributoi e valori , com 1 ≤ i ≤ n, são sentenças atômicas de LPO. Figura 2.3: Formato Geral de um EMT. O autor ainda complementa afirmando que este formato equivale à sentença complexa de LPO ∃x [tipo(x) ∧ atributo1 (x) = valor1 ∧ . . . ∧ atributo1 (x) = valor1 ], com tipo sendo um predicado unário, os atributos sendo funções unárias e os valores sendo objetos. O formato de EMT apresentado é útil para ilustrar a estrutura genérica de um EMT, similar a uma estrutura de dados utilizada em programação de computadores. Mas diferentes implementações de SEs podem utilizar uma linguagem diferente para expressar esta estrutura. 24 Exemplo 2.4.2. Exemplos de EMT são mostrados na Figura 2.4. Figura 2.4: Exemplos de Elementos da Memória de Trabalho. Ainda conforme Brachman e Levesque (2004), a estrutura de uma regra da BC de um SE é aquela da Figura 2.5. A premissa das regras é mostrada nesta figura como sendo formada por uma conjunção de elementos com estruturas que se assemelham bastante àquela dos EMT. A única diferença está no fato de que aos atributos agora são associadas especificações ao invés de valores. As especificações estabelecem as restrições que os atributos correspondentes nos EMT devem obedecer para que a premissa da regra seja satisfeita e a mesma possa ser incluı́da no conjunto de conflito. Figura 2.5: Estrutura de uma regra de produção lógica: “n”, “m” e “k” são interios positivos quaisquer. As especificações podem consistir de uma sentença atômica, uma variável, uma expressão (escrita entre colchetes), um teste (uma lista de operadores relacionais e valores escrito entre chaves) ou de uma conjunção de especificações. Conforme já foi mencionado anteriormente, o MI, na etapa de reconhecimento, pesquisa a premissa de cada regra na MT, testando se há correspondência com algum EMT. Esta correspondência ocorre quando há algum EMT com o mesmo tipo da premissa, e se os atributos desse EMT obedecem às restrições impostas pelas especificações da premissa em questão. Supondo que houve uma correspondência de tipo entre uma (ou parte de uma) premissa e um EMT, a verificação prossegue de acordo com a natureza da especificação: • se uma especificação consiste de uma sentença atômica ou de uma expressão, uma comparação de igualdade é realizada com os atributos correspondentes do EMT; • caso a especificação consista de um teste, compara-se o valor do atributo do EMT com os valores fornecidos pela especificação de acordo com os operadores relacionais contidos nesta especificação; e • se a especificação contiver uma variável deve-se buscar uma substituição tal que, satisfeitos os itens anteriores, torne a premissa verdadeira após sua aplicação (isto é, na presença de variáveis deve-se executar um processo de unificação, 25 aplicando a substituição resultante na premissa) (Brachman e Levesque 2004, Russel e Norvig 2004). Já a estrutura da conseqüência de uma regra de produção deve conter a alteração a ser realizada na memória de trabalho. Existem três possibilidades de alteração para uma regra: • ADICIONA (tipo atributo1 : valor1 atributo2 : valor2 . . . atributon : valorn ): adiciona um determina elemento à memória de trabalho; • REMOVE i: remove da memória de trabalho o elemento que teve uma correspondência positiva com a condição da i-ésima premissa; • ATUALIZA i (atributon especificaçãon ): atualiza o atributo atributon de acordo com especificaçãon do elemento da memória de trabalho que teve uma correspondência positiva com a condição da i-ésima premissa. Assim, como para os EMTs, as regras também são escritas em diferentes sistemas especialistas de acordo com uma linguagem própria, mas contendo a estrutura e os elementos aqui apresentados. Exemplo 2.4.3. Sejam a MT da Figura 2.4 e a regra da Figura 2.6. Figura 2.6: Exemplo de regra utilizado no Exemplo 2.4.3. A primeira parte da premissa é pesquisada na MT e uma correspondência de tipo é encontrada: robo. Em seguida, a especificação de atributo velocidade (uma expressão), indica que o atributo velocidade do EMT deve ter o mesmo valor da especificação, o que de fato ocorre. Já a especificação para orientação é um teste: o valor deste atributo no EMT deve ser maior que 30o e menor que 90o , o que é obedecido no EMT. Por fim, uma variável é utilizada na especificação de dist obstaculo. A substituição {x/0.5} completa o processo. A segunda premissa também é imediatamente satisfeita. Assim, de acordo com a modificação presente na consequência, a meta é modificada na MT. Este processo executado pelo interpretador corresponde ao algoritmo de inferência em LPO de encadeamento adiante. O Algoritmo 2 apresenta o algoritmo de encadeamento adiante conforme Russel e Norvig (2004). Os SEs foram o primeiro exemplo na história da IA de um conjunto mais abrangente de sistemas inteligentes: os Sistemas Baseados em Conhecimento (SBC). SBCs são sistemas que possuem um conhecimento mais geral sobre o domı́nio de aplicação, e o considera separado do restante do sitema. O SEs geralmente possuem conhecimento bastante especı́fico, baseado no de um especialista, sendo aplicados em domı́nios mais restritos (Mihaguti 1996). Esta distinção, embora não seja muito rigorosa, será aplicada neste trabalho ao se descrever o AAC no Capı́tulo 3. 26 Algoritmo 2 Algoritmo de Encadeamento Adiante. Entrada: BC: base de conhecimento contendo regras e memória de trabalho. 1: função ENCADEAMENTO-ADIANTE(BC ) 2: repita 3: novo ← {} 4: para cada regra ∈ BC faça 5: (p1 ∧ . . . ∧ pn ) ← regra 6: subst ← {σ ∗ |(p∗1 , . . . , p∗n ∈ BC) ∧ (p1 ∧ . . . ∧ pn )σ ∗ = (p∗1 ∧ . . . ∧ p∗n )σ ∗ } 7: para cada σ ∈ subst faça 8: q ∗ ← qσ 9: se (∀S ∈ BC ∪ novo) U N IF ICAR(q ∗ , S) ≡ ∅ então 10: novo ← novo ∪ q ∗ 11: fim se 12: fim para 13: fim para 14: BC ← BC ∪ novo 15: até que novo ≡ {} 16: fim função 2.5 Conclusão O capı́tulo apresentou os métodos de representação de conhecimento utilizados pelo AAC: a LPO, a LTP, os quadros e os SBCs. Além disso, os procedimentos de raciocı́nio automático utilizados pelo agente foram descritos. O encadeamento adiante é utilizado por um sistema especialista com uma base de conhecimento composta por regras da LPO, e o algoritmo MetateM para uma BC que aplica LTP. O capı́tulo seguinte descreverá como o AAC utiliza estas representações e algoritmos para a tomada de decisão em ambientes dinâmicos. 27 Capı́tulo 3 O Agente Autônomo Concorrente (AAC) Este capı́tulo apresentará o Agente Autônomo Concorrente (AAC). Sua arquitetura cognitiva será descrita, inicialmente em termos da sua implementação original, com base no framework Expert-Coop++. Em seguida, serão apresentadas as adequações estruturais realizadas para implementar o agente embarcado na arquitetura de hardware proposta neste trabalho. Por fim, os métodos de representação de conhecimento utilizados pelo agente serão abordados, fazendo sempre uma correlação com o conteúdo do Capı́tulo 2. 3.1 Modelo Genérico para Agentes Cognitivos A arquitetura do AAC foi inspirada no modelo genérico para agentes cognitivos, proposto em (Bittencourt 1997). De acordo com esse modelo, um agente cognitivo é composto por três nı́veis: o nı́vel reativo, o nı́vel instintivo e o nı́vel cognitivo. O modelo é ilustrado na Figura 3.1. O nı́vel reativo, caracterizado por um rápido ciclo percepção/ação, representa um ambiente evolucionário composto por padrões retirados das percepções do ambiente, controles de efetuador utilizados para atuar no ambiente externo e um conjunto de comportamentos reativos atrelando percepção e ação. Este nı́vel modela animais simples, como insetos. O nı́vel instintivo possui uma memória que possibilita perceber quando situações se repetem na natureza e que grupo de agentes reativos pode ser utilizado nessas situações, aplicando-os novamente quando aquela situação de repetir. Este nı́vel, juntamente com o reativo, pode modelar animais mais complexos, como os mamı́feros. O nı́vel cognitivo se baseia no aprendizado de situações relevantes e a subsequente geração de novas estratégias de ação. Segundo esse modelo, cada nı́vel, juntamente com os seus hierarquicamente in28 Figura 3.1: O Modelo Genérico de Agentes Cognitivos (Barbosa 2005). feriores, pode modelar um agente completo, sendo que a complexidade do modelo cresce com o número de camadas. 3.2 Arquitetura Cognitiva do AAC O AAC surgiu para superar as deficiências encontradas no agente utilizado na primeira participação do UFSC-Team na categoria de robôs simulados da RoboCup’98. A arquitetura desse agente apresentava um processo decisório centralizado, o que comprometeu a comunicação em tempo-real com o ambiente (Costa et al. 2011). Com isso, o AAC foi incorporado na implementação do framework Expert-Coop++, que então passou a possibilitar a implementação de agentes cognitivos com processo decisório descentralizado, através de uma abordagem concorrente. A arquitetura do AAC é ilustrada na Figura 3.2, fazendo a correspondência com os processos do Expert-Coop++ “Interface”, “Coordinator ” e “Expert”, onde os nı́veis do AAC foram implementados (Costa e Bittencourt 1999). O nı́vel reativo é responsável pela resposta em tempo-real do agente. Em sua primeira implementação foi executado pelo processo “Interface” do Expert-Coop++ e contém um conjunto de controladores nebulosos que implementam os comportamentos reativos do agente, os quais são ativados em situações especı́ficas. Apenas um controlador nebuloso pode estar ativo por vez. Esse nı́vel faz a leitura dos sensores e executa uma ação (isto é, executa o ciclo percepção-ação do agente). A Figura 3.3 ilustra a estrutura deste nı́vel. O nı́vel instintivo detecta, após cada ciclo percepção-ação, mudanças nos estados do ambiente e do agente, atualiza as informações simbólicas utilizadas pelo nı́vel 29 Figura 3.2: Arquitetura do AAC (Costa e Bittencourt 1999). Figura 3.3: Nı́vel reativo do AAC implementado no framework Expert-Coop++ (da Costa et al. 2003). cognitivo e coordena a seleção de comportamentos reativos. A Figura 3.4 ilustra a atuação desse nı́vel. Este nı́vel executa planos que, se bem sucedidos, levam à satisfação de metas locais. Quando uma meta local é satisfeita, uma mensagem é enviada ao nı́vel cognitivo, avisando ao mesmo. Um SBC, cuja base de regras pode ser selecionada dentre várias, cada uma correspondendo a um plano, executa a seleção de comportamentos reativos. A memória de trabalho desse SBC (que, no contexto do AAC, como se verá adiante neste capı́tulo, é denominada base de fatos) armazena o estado atual do mundo. O nı́vel cognitivo é responsável pela criação das metas locais e globais através um SBC, e a comunicação das mesmas para o nı́vel instintivo (Figura 3.5). Este nı́vel recebe as informações simbólicas do nı́vel instintivo (com a qual gera um modelo ló30 Figura 3.4: Nı́vel instintivo do AAC implementado no framework Expert-Coop++ (da Costa et al. 2003). gico) e as mensagens dos outros agentes. O nı́vel cognitivo não interage diretamente com o reativo. Um importante aspecto do AAC é que enquanto os nı́veis instintivo e reativo trabalham no alcance de uma meta local, o nı́vel cognitivo pode, concomitantemente, se dedicar a tarefas de planejamento, criação de metas, etc. Assim, por possuir um maior tempo de resposta, o sistema baseado em regras do nı́vel cognitivo pode ser bastante mais complexo que o do instintivo. Figura 3.5: Nı́vel cognitivo do AAC implementado no framework Expert-Coop++ (da Costa et al. 2003). Um componente importante presente em todos os nı́veis apresentados acima, o mailbox, tem um papel fundamental no funcionamento do agente. O mailbox consiste de um objeto instanciado em cada processo do Expert-Coop++ que oferece uma 31 interface de comunicação baseada em soquetes UNIX e uma estrutura de dados que funciona como um buffer, armazenando as mensagens em uma fila de tamanho finito. Quando uma mensagem é lida, a mesma é removida da fila (Barbosa 2005). 3.3 Arquitetura do AAC Embarcado Para embarcar o agente, a estrutura dos nı́veis do AAC apresentada na seção anterior foi modificada. No nı́vel reativo os comportamentos serão implementados por um sistema de controle clássico, e consistirão de direções para onde o robô pode seguir. Conforme ilustrado na Figura 3.6, oito comportamentos serão utilizados pelo nı́vel reativo embarcado: norte (N), nordeste (NE), leste (L), sudeste (SE), sul (S), sudoeste (SO), oeste (O) e noroeste (NO). Quando um dos comportamentos listados acima está ativo (na figura, o comportamento NE é mostrado como ativo), o robô deverá seguir na direção correspondente. Adicionalmente, o comportamento “páre sucesso” e “páre falha” (não ilustrados na Figura 3.6) serão implementados para que o robô páre em caso de ter alcançado a meta ou de ter colidido, respectivamente. Figura 3.6: Nı́vel reativo embarcado. A principal modificação estrutural no caso do nı́vel instintivo embarcado será a presença de dois Mailboxes, pois, como se estabelecerá no Capı́tulo 4, a arquitetura de hardware onde o AAC será embarcado consiste de dois protocolos de comunicação diferentes, e decidiu-se dividir o Mailbox para cada barramento para reduzir as chances de problemas decorrentes do acesso a recursos compartilhados. A Figura 3.7 mostra esta arquitetura. 32 Figura 3.7: Nı́vel instintivo embarcado. Finalmente, o nı́vel cognitivo pode ou não sofrer modificações. Isso porque, como se verá no Capı́tulo 4, mesmo em um ambiente embarcado poderá ser utilizada a implementação original do nı́vel cognitivo, isto é, a implementação do processo “Expert” do Expert-Coop++. Mas neste trabalho propõe-se a utilização de LTP neste nı́vel, então uma estrutura atualizada deste nı́vel, levando em consideração ambas as formas de representação de conhecimento, é mostrada na Figura 3.8. 3.4 3.4.1 Representação do Conhecimento no AAC LPO e Quadros A arquitetura original do AAC utiliza a LPO e quadros para compor a base de conhecimento de um sistema baseado em conhecimento. Os EMT, doravante referidos simplesmente como fatos, têm a estrutura mostrada na Figura 3.9 (de Santana Júnior e Costa 2007). A parte “a” da Figura 3.9 mostra um fato simples, que enuncia apenas um atributo de um dado objeto. A parte “b” dessa figura, representa o caso de múltiplos atributos (como aqueles da Figura 2.3). 33 Figura 3.8: Nı́vel cognitivo embarcado. Figura 3.9: Formato de um fato simples (a) e um composto (b). Exemplo 3.4.1. O segundo exemplo da Figura 2.3 (Capı́tulo 2, Seção 2.4) representado conforme a parte “b” da Figura 3.9 é mostrado na Figura 3.10. Figura 3.10: Exemplo de uma base de fatos. As regras no ACC possuem o formato mostrado na Figura 3.11. Na figura, “regra id” denota o identificador da regra, que deve ser único na base de regras. As “condições”, como na Seção 2.4, tem a estrutura dos fatos com os valores dos atributos substituı́dos por especificações. Mas no AAC especificações contendo variáveis são complementadas por filtros, especificados no campo “filter”, que proveem as restrições condicionais às quais os valores das variáveis devem obedecer. As “consequências”, por fim, expressam as ações a serem tomadas (de Santana Júnior e Costa 2007). Estas ações não são apenas locais, isto é, apenas sobre a própria base 34 de fatos, mas também envolvem a troca de mensagens entre os nı́veis do AAC. O formato das mensagens adotado é o da linguagem de comunicação entre agentes cognitivos Parla (da Costa e Bittencourt 1997). Figura 3.11: Formato de uma regra de produção. Exemplo 3.4.2. A Figura 3.12 mostra um exemplo de base de regras para o nı́vel instintivo. A regra “regra 1” verifica se a meta atual foi atingida, isto é, se o robo está a menos de 10cm de distãncia da meta. Caso existam fatos na base de fatos que tornem essa condição verdadeira, o nı́vel instintivo envia para o cognitivo uma mensagem informando que a meta local foi alcançada, e para o reativo uma mensagem contendo o comportamento selecionado. A segunda regra (“regra 2”) verifica se a distância do robô a uma obstáculo é menor que o limiar de 5cm, caso em que o robô é considerado em zona de colisão. Figura 3.12: Exemplo de uma base de regras com 2 regras. Conforme já foi mencionado, o AAC admite também a utilização de quadros na representação do conhecimento do agente. A Figura 3.13 mostra como os quadros são utilizados na linguagem do agente. Os “f rame id” é uma identificador que permite que o quadro seja fornecido como valor de atributo para outros quadros. Figura 3.13: Formato dos quadros na linguagem do AAC. A sintaxe completa da linguagem de representação do conhecimento utilizada pelo AAC é mostrada na Figura 3.14 (de Santana Júnior e Costa 2007). 35 Figura 3.14: Sintaxe completa na forma de Backu-Naur (de Santana Júnior e Costa 2007). O motor de inferência implementa o algoritmo de encadeamento adiante, mostrado no Algoritmo 2. A BC dada como entrada para este algoritmo, neste caso, consiste das bases de fatos e de regras. Assim, a Figura 3.15 ilustra a arquitetura do SBC utilizado nos nı́veis instintivo e cognitivo quando LPO e quadros são os formalismos de representação do conhecimento. Figura 3.15: Diagrama do SBC do AAC (de Santana Júnior e Costa 2007). 3.4.2 LTP Alternativamente, o nı́vel cognitivo pode utilizar a LTP como formalismo de representação de conhecimento. O algoritmo MetateM, utilizado para inferência, consiste de um processo de encadeamento adiante caracterı́stico de sistemas especialistas. Neste contexto, para manter os métodos desta seção e da anterior dentro 36 de um mesmo padrão estrutural, pode-se fazer a correspondência dos termos ali utilizados com a abordagem atual: • dado um modelo hN, πi, o mapeamento π constitui a base de fatos, isto é, o que é conhecido como verdadeiro; • a base de regras consiste do conjunto de regras que formam um sentença na FNS da LTP; e • o motor de inferência implementa o algoritmo MetateM. A dinâmica do sistema muda pelo fato de que agora a base de fatos não muda apenas como resultado dos ciclos de inferência do MI e das mensagens recebidas, mas também ao longo do tempo. Exemplo 3.4.3. A Figura 3.16 ilustra isso. O motor de inferência utiliza o fato A em t − 1 para inferir, com base na (única) regra A ⇒ eB, que B será um fato em t, mas nenhuma regra conclui A. Assim, a própria passagem do tempo faz A “expirar”. Figura 3.16: Inferência com LTP. Segundo Fisher (2011), o algoritmo MetateM pode ser utilizado para tarefas de planejamento através da adequada postergação da satisfação de eventualidades. Mais precisamente, deve-se assumir que as metas serão eventualmente alcançadas, mas também deve-se garantir que isso não ocorra até que os pré-requisito para aquela meta tenham sido alcançados. Isto é, uma meta possui n pré-requisitos, denotando a meta pelo sı́mbolo meta e os pré-requisitos pelos sı́mbolos pr1 , . . . , prn , a base de 37 regras do planejamento é dada por: inı́cio ⇒ ♦meta ¬pr1 ⇒ e¬meta ... ¬prn ⇒ e¬meta. De acordo com as regras acima, enquanto algum dos pré-requisitos não for satisfeito, ¬meta estará na base de fatos, impedindo a satisfação da meta. É possı́vel também, através do uso de eventualidades e do exposto acima sobre postergação das suas satisfações, expressar o ordenamento de metas: se as metas meta1 , . . ., metam devem ser alcançadas nesta ordem, as sentença ♦(meta1 ∧ ♦(...metam−1 ∧ ♦metam ) . . .) captura essa especificação (Fainekos et al. 2009). 3.5 Conclusão Neste capı́tulo viu-se a arquitetura cognitiva do AAC e como esta foi herdada do modelo genérico de agentes cognitivos. Também se explanou como esta arquitetura foi ajustada para ser embarcada em uma rede de microcontroladores, sendo o nı́vel reativo, camada mais baixo do AAC, o nı́vel que mais sofreu modificações. Mostrou-se como o agente utiliza LPO e quadros para representar conhecimento, e mostrou-se como a LTP pode também ser utilizada como método de representação de conhecimento e raciocı́nio (este último procedimento implementado pelo algortimo MetateM). 38 Capı́tulo 4 Arquitetura de Hardware Para suprir a demanda de concorrência do AAC, apresenta-se neste capı́tulo uma arquitetura de hardware composta por uma rede de microcontroladores dedicada à execução deste agente. Este capı́tulo compõe, pois, o núcleo do presente trabalho, trazendo a sua principal contribuição. O propósito da arquitetura é embarcar o AAC no robô móvel omnidirecional AxéBot. A rede embarcada é proposta com o intuito de fazer o AAC funcionar como um sistema distribuı́do em que um comportamento inteligente emerge da interação entre os três nı́veis do agente de forma transparente. 4.1 Visão Geral do Sistema Embarcado Uma rede heterogênea consistindo de três microcontroladores compõe o arquitetura de hardware projetada para comportar o AAC. Os nós computacionais da rede são os seguintes: • o DIL/NetPC (DNP) 2486, da SSV Embedded Systems; • o ARM mbed ; e • o PSoC 5LP, da Cypress Semiconductors. A rede é heterogênea porque utiliza duas interface de comunicação digital diferentes entre seus três nós: uma rede CAN (sigle em inglês de Controller Area Network ) conecta o mbed e o PSoC, e uma rede Ethernet conecta o mbed e o DNP. A rede foi projetada desta forma para permitir que o AAC seja embarcado na mesma. Já foi visto anteriromente neste trabalho que o AAC requer concorrência. Esta concorrência só pode ser alcançada perfeitamente se cada nı́vel tiver um núcleo computacional dedicado à sua execução. Além disso, estes núcleos computacionais devem poder se comunicarem entre si, conforme a demanda de comunicação entre os nı́veis do AAC. A arquitetura da rede é mostrada na Figura 4.1. 39 Figura 4.1: Diagrama de Blocos da rede de Microcontroladores. 4.2 4.2.1 Protocolos de Comunicação O Protocolo CAN O protocolo de comunicação serial Controller Area Network (CAN) foi criado por Robert Bosch na década de 1980 para ser utilizado na comunicação entre diversos subsistemas de um veı́culo automotivo, prescindindo de um sistema de controle central. Desde então, o protocolo CAN passou a ser utilizado amplamente no contexto de automação industrial, até que, em 1993, se tornou um padrão interncaional: o ISO (International Standards Organization) 11898 (Zhang 2010). O protocolo CAN é definido em termos do modelo de sete camadas OSI (Open Systems Interconnected ) como compostos das suas duas camadas mais baixas: as camadas fı́sica e de enlace. A camada fı́sica trata de especificações do meio fı́sico. A camada de enlace é responsável, em termos gerais, pela manutenção de um enlace lógico entre os nós. A Figura 4.2 mostra as camadas OSI acima referidas e os elementos da rede CAN que as implementam (Zhang 2010). Figura 4.2: Camadas OSI do protocolo CAN e os elementos que as implementam. No caso da camada fı́sica, o protocolo CAN não define um meio de transmissão, 40 apenas que os sinais devem ser transmitidos utilizando uma codificação diferencial, o que significa que os valores lógicos no barramento serão codificados de acordo com a diferença de tensão entre duas linhas - CANH e CANL - conforme o ilustrado na Figura 4.3. Nessa figura vê-se que o nı́vel lógico alto é classificado como recessivo, e o baixo, como dominante. Isto significa que se um nó tentar impor o nı́vel lógico alto sobre o barramento, enquanto outro, ao mesmo tempo, tentar impor o nı́vel lógico baixo, o último prevalecerá (Ranjith 2013). Figura 4.3: Codificação diferencial dos sinais no protocolo CAN (Ranjith 2013). A comunicação em uma rede CAN ocorre por meio da difusão (broadcasting) de mensagens em um barramento. A taxa de transmissão de dados numa rede CAN pode chegar a 1 Mbps. A topologia deste barramento é ilustrada na Figura 4.4. Nesta figura é ressaltado o papel do transceiver como o elemento que é fisicamente conectado ao barramento. Além disso, fica explı́cito que cada nó deve possuir um transceiver. O que a figura não mostra é o controlador CAN, que também deve estar presente em cada nó. O controlador CAN é mais frequentemente integrado ao hardware dos nós da rede, enquanto que os transceivers são geralmente externos a estes últimos. Figura 4.4: Barramento CAN (Barrenscheen 1998). No entanto, quando o barramento é suficientemente curto (menor que 10cm), como em projetos em que este barramento é embarcado, a presença dos transceivers pode ser prescindida em prol de uma topologia simplificada. Mas a velocidade máxima de transmissão em barramentos sem transceivers é limitada a 500 kbps (Barrenscheen 1998). Esta configuração é mostrada na Figura 4.5. 41 Figura 4.5: Barramento CAN sem transceivers (Barrenscheen 1998). Qualquer nó conectado ao barramento, detectando que este último se encontra livre, pode iniciar a transmissão de mensagens. Estas mensagens são organizadas em pacotes de dados denominados quadros. O protocolo CAN conta com quatro tipos de quadros: o quadro de dados, utilizado para transferir dados entre nós, o quadro remoto, utilizado para os nós fazerem requisições de dados, o quadro de erro, que pode ser transmitido por qualquer nó quando um erro é detectado no barramento, e o quadro de sobrecarga, utilizado entre dois quadros de dados ou remotos para prover um atraso adicional. O quadro de dados é mostrado na Figura 4.6. O Figura 4.6: Quadro de dados do protocolo CAN (Ranjith 2013). campo de arbitração carrega o significado da mensagem, e cada nó do barramento decide, ao ler este campo, se deve aceitar essa mensagem. Também é utilizado para arbitrar o acesso ao meio: em caso de colisão, o nó cuja mensagem possui o menor identificador de 11 bits tem a prioridade. O campo de controle contém o tamanho da mensagem, o campo de dados contém os dados da mensagem e o campo CRC (Cyclic Redundancy Check ) é utilizado pelos nós do barramento para verificar erros no quadro (Ranjith 2013). Se referindo à Figura 4.2, a camada de enlace divide suas responsabilidades entre a subcamada de controle da ligação lógica (do inglês, Logical Link Control, LLC) e a subcamada de controle de acesso ao meio (do inglês, Medium Access Control, MAC). A subcamada LLC executa a aceitação de mensagens através de um mecanismo de filtragem, notificação de sobrecarga e gestão de recuperação. Já as tarefas de detecção de erros, encapsulamento de dados em pacotes, confirmação e gestão de acesso ao meio são atribuições da subcamada MAC (Zhang 2010). 42 4.2.2 O Protocolo Ethernet O protocolo Ethernet (IEEE 802.3) especifica uma camada de enlace de dados, que possui (a exemplo do protocolo CAN, abordado na seção anterior) as subcamadas LLC e MAC, e uma camada fı́sica (abreviada como PHY) (IEEE 2012). A camada fı́sica especifica que os sinais elétricos são transmitidos através de dois sinais diferenciais: um de recepção, com linhas rotuladas de RX+ e RX-, e um de transmissão, com linhas TX+ e TX-, com valocidade máxima de transmissão de dados de 100 Gbits/s. A codificação utilizada para estabelecer os nı́veis lógicos do sinal elétrico é a codificação Manchester, que atribui um valor lógico a uma transição de estados dentro de um tempo de bit: uma transição ascendente produz um nı́vel lógico alto, e uma transição descendente, um nı́vel lógico baixo, conforme a Figura 4.7 exemplifica (IEEE 2012). Figura 4.7: Forma de onda correspondente à sequência de bits “0011110” sob a codificação Manchester (IEEE 2012). A codificação Manchester é utilizada sobre os quadros de dados do protocolo Ethernet para torná-los apropriados à trasnmissão. Os quadros Ethernet têm a estrutura mostrada na Figura 4.8. Figura 4.8: Estrutura de um quadro Ethernet (Toulson e Wilmshurst 2012). O padrão IEEE 802.2 também especifica que a comunicação com o protocolo Ethernet pode ocorrer nos modos half-duplex (apenas um nó pode utilizar o meio por vez) ou full-duplex (os dois nós podem utilizar o meio concomitantemente, mas somente para comunicações ponto-a-ponto entre dois nós). No primeiro caso um mecanismo de contenção é necessário para detectar quando dois nós estão transmitindo ao mesmo tempo. O mecanismo especificado no padrão é o algoritmo Carrier Sense Multiple Access with Collision Detection (CSMA/CD). Este algoritmo consiste em fazer os nós “escutarem” o meio enquanto transmitem para detectar colisões com mensagens de outros nós. Se uma colisão é detectada, os nós mantêm a colisão por mais algum tempo para que os demais nós a percebam, e então cessam a transmissão, tentando novamente depois de um intervalo de tempo aleatório (IEEE 2012). 43 4.3 4.3.1 Nı́vel Reativo: PSoC 5LP O PSoC 5LP O PSoC (Programmable System-on-Chip) 5LP é o microcontrolador que compôe o nó da rede onde o nı́vel reativo do AAC foi embarcado. As principais caracterı́sticas do PSoC 5LP são mostradas na Tabela 4.1. Tabela 4.1: Principais caracterı́sticas do PSoC 5LP Recurso CPU Flash SRAM EEPROM PSoC 5LP ARM Cortex-M3, 1.25 DMIPS/MHz 256KB 64KB 2KB A Figura 4.9 mostra a arquitetura do PSoC 5LP. Nesta figura pode ser notado que o PSoC 5LP tem quatro subsistemas principais: • o subsistema da CPU, que utiliza o processador ARM Cortex-M3, com periféricos de comunicação dedicados; • o subsistema digital, consistindo de blocos digitais denominados UDBs (Universal Digital Blocks), que implementam recursos digitais no hardware, independentes da atuação da CPU; • o subsistema analógico, que provê recursos analógicos também de maneira independente da CPU; e • o subsistema de roteamento programável, que permite determinar funções de pinos em tempo de projeto. Ressalta-se a conveniência de se utilizar o PSoC 5LP como plataforma para embarcar o nı́vel reativo, devido ao fato de que este microcontrolador possui uma arquitetura adequada ao caráter evolutivo do nı́vel reativo proposto no modelo genérico para agentes cognitivos. Ou seja, a versão embarcada do nı́vel reativo apresentada aqui pode, em implementações futuras, ser estendida para mimetizar a arquitetura do nı́vel reativo mostrado na Figura 3.1 através do uso mais intenso dos subsistemas digital e analógico do PSoC nas tarefas de aquisição e controle. Os controladores difusos, por exemplo, poderiam ser implementados nos UDBs do PSoC, liberando o processador para tarefas de comunicação e computação evolutiva. 44 Figura 4.9: Arquitetura do PSoC 5LP. 4.3.2 O Sistema Operacional de Tempo Real Para a correta performance do nı́vel reativo, o PSoC deve realizar uma série de tarefas: • comunicação CAN com o mbed (nı́vel instintivo); • comunicação UART com um PC para supervisão e simulação; • executar o controle cinemático; e • executar o controle dos atuadores. O gerenciamento destas tarefas foi realizado com a utilização de um Sistema Operacional de Tempo Real (SOTR), dado que, conforme (Stankovic e Rajkumar 2004), um SOTR é capaz de gerenciar é capaz de gerenciar múltiplas tarefas através de mecanismos de sincronização envolvendo priorização de tarefas e escalonamento, provendo uma camada de abstração no projeto do software. O SOTR utilizado aqui foi o FreeRTOS. No FreeRTOS as tarefas podem estar em um dos seguintes estados: • executando, quando a tarefa está executando; • bloqueada, quando a tarefa não está apta a executar até que algum evento ocorra; • pronta, quando não está executando, mas pode estar; e • suspensa, quando não está executando e não pode estar. A Figura 4.10 mostra os estados listados acima e as possı́veis transições entre eles. Quando uma tarefa é criada o estado dela é “pronta”, e um escalonador de tarefas decide se ela pode ou não estar no estado “executando” com base na sua 45 prioridade: se alguma tarefa com prioridade superior já está executando, a tarefa recém criada espera (no estado “bloqueada”) até que a tarefa que está executando seja bloqueada ou suspensa; se a tarefa executando tem prioridade inferior à criada, esta última passa a executar e a primeira vai para o estado “bloqueada”. Caso não haja uma tarefa no estado “executando”, a nova tarefa passa automaticamente para este estado. Figura 4.10: Diagrama de estados das tarefas no FreeRTOS. As tarefas criadas no nı́vel reativo são mostradas na Tabela 4.2. Nesta tabela, a terafa inativa corresponde à tarefa que é posta no estado “executando” pelo escalonador de tarefas quando não há tarefas neste estado, nem no estado “pronta”. Tabela 4.2: Tarefas implementadas. Tarefa Prioridade Controle Cinemático 3 Controle de Atuadores* 2 Recepção de Mensagens CAN 2 Envio de Mensagens CAN 3 Tarefa Inativa 1 * = Inativa em alguns experimentos (ver Capı́tulo 5) 4.3.3 Encapsulamento de Sistema de Controle no Nı́vel Reativo Na Figura 3.6 (Capı́tulo 3, Seção 3.3) é mostrado o conjunto de comportamentos reativos a serem implementados na versão embarcada do nı́vel reativo do AAC. Mencionou-se, quando da apresentação da supracitada figura, que um sistema de controle clássico seria utilizado para a construção dos comportamentos no nı́vel reativo, e nesta seção se descreverá como o modelo cinemático do robô móvel omnidirecional AxéBot será utilizado no nı́vel reativo para o desenvolvimento de um controlador cinemático que, por sua vez, deverá servir de base para a implementação dos comportamentos. 46 Modelo Cinemático O modelo cinemático de uma robô móvel omnidirecional é dado pela relação matemática entre as velocidades angulares dos seus atuadores e a velocidade do seu centro de massa. É obtido a partir da relação geométrica entre sistemas de referência locais (aqueles “fixados” na base móvel do robô) e um sistema de referência global (com relação ao qual os sistemas de referência locais se movem). A Figura 4.11 mostra estes sistemas de referência para o robô AxéBot. Nesta figura, SR é o sistema de referência da base do robô e os SC i são sistemas de coordenadas fixados a cada roda i, com i = 1, 2 e 3 (Bitencourt et al. 2008). Figura 4.11: Sistemas de coordenadas no AxéBot para modelagem cinemática (Bitencourt et al. 2008). A Equação (4.1) apresenta a matriz da cinemática direta do AxéBot. 2 cos θ − 3 2 sin θ P (θ) = − 3 1 3l √ √ 3 cos θ−3 √ sin θ 3 3 3 sin θ+3 √ cos θ 3 3 √ √ 1 3l 3 cos θ+3 √ sin θ 3 3 3 sin θ−3 √ cos θ 3 3 1 3l (4.1) O modelo cinemático direto completo é apresentado na Equação (4.2). vxI φ̇1x v = P (θ) φ̇ . yI 2x θ̇ φ̇3x 47 (4.2) Na Equação (4.2), vxI , vxI e θ̇ representam, respectivamente, as velocidades nas direções x e y, e a velocidade angular do centro de massa do robô no sistema de coordenadas SI , φ̇ix representa a velocidade angular da roda i com relação ao eixo x do sistema de coordenadas SCi e R é o raio das rodas. Controlador Cinemático Uma vez de posse do modelo cinemático do robô é possı́vel utilizar este modelo para projetar um controlador que o possibilite estabilizar em uma dada posição desejada (ponto-a-ponto) ou seguir uma trajatória dada (rastreamento de trajetória). A este controlador, por se basear em um modelo cinemático, dá-se o nome de controlador cinemático. Com o controlador cinemático é possı́vel implementar controle de posição ou de velocidade. Aqui será descrito o controle de posição, apontando no final como modificar este controlador para executar o controle de velocidade. A entrada do controlador de posição é a posição ou trajetória desejada, isto é, o set-point. O controlador então calcula o vetor de diferença entre a posição de R R referência (xR I , yI e θ ) e a posição real do centro do robo (xI , yI e θ). Esta operação produz o vetor de erro, como na Equação (4.3). (4.3). xI (t) xR I e(t) = yIR − yI (t) θ(t) θR (4.3) Este vetor de erro é utilizado para calcular uma ação de de controle ProporcionalIntegral (PI). Para o controle ponto-a-ponto, segundo Tsai et al. (2005), a ação de controle é calculada de acordo com a Equação (4.4), onde KP e KI são matrizes 3 × 3 simétricas e positivamente definidas. Zt u(t) = KP e(t) + KI e(τ ) dτ (4.4) 0 R R Para o rastreamento de trajetória o vetor referência pT (t) = xR I (t) yI (t) θ (t) é agora dependente do tempo, e a ação de controle é modificada pela adição da derivada do vetor de referência, conforme a Equação (4.5). Zt u(t) = KP e(t) + KI e(τ ) dτ + ṗ(t) (4.5) 0 O vetor da ação de controle é então aplicado na Equação (4.6) (cinemática inversa) para a obtenção das velocidades angulares desejadas dos atuadores. Estas 48 Figura 4.12: Diagrama de blocos do controlador cinemático. velocidades angulares, por sua vez, são os set-points de outro controlador, em um nı́vel mais baixo: o controlador dos atuadores. As velocidades das rodas devem ser ajustadas aos valores dados para que a posição da base seja corrigida. Ribeiro (2010) projetou e implementou este controlador de baixo nı́vel para os atuadores do AxéBot, e os seus resultados serão utilizados aqui. φ̇1x φ̇ = 1 P −1 (θ) u(t). 2x R φ̇3x (4.6) Por fim, a velocidade real das rodas é lida através de encoders e aplicadas na Equação (4.2) (cinemática direta), tendo como resultado as velocidades lineares e angular da base. A integração deste resultado provê a posição da base, que é realimentada no controlador para novo cálculo de erros e continuar o laço. A Figura 4.12 mostra um diagrama do controlador. O controlador cinemático foi utilizado no PSoC 5LP para implementar os comportamentos do nı́vel reativo. Estes comportamentos consistiram simplesmente do movimento nas direções cardeais: norte, nordeste, leste, sudeste, sul, sudoeste, oeste e noroeste. Nessa caso um controlador de velocidades é mais adequado, pois pode-se fixar uma velocidade linear e alterar apenas a orientação para intercambiar entre os comportamentos. A mudança com relação ao expostos até aqui, no entanto, é mı́nima. Primeiro, o set-point agora é um vetor de velocidades, na mais uma posição ou uma trajetória. Depois, realimenta-se a velocidade da base (obtida pelo aplicação da valocidade real das rodas na cinemática direta), isto é, não executa a integração mencionada no parágrafo anterior. 4.4 Nı́vel Instintivo: o mbed O mbed é na realidade um módulo microcontrolado, baseado no microcontrolador NXP LPC1768. Este último, por sua vez, também utiliza o micriprocessador ARM Cortex-M3 como CPU, a exemplo do PSoC 5LP. O mbed é mostrado na Figura 4.13(a) com os seus 40 pinos dispostos em duas linhas de 20. Na parte (b) da mesma figura, os elementos do módulo são apontados, e um diagrama completo dos seus recursos de comunicação constam na parte (c). 49 Figura 4.13: ARM mbed (Toulson e Wilmshurst 2012). A Figura 4.14 apresenta um diagrama de blocos do mbed. As entradas e saı́das digitais do mbed, assim como os periféricos que este disponibiliza, são os do microcontrolador LPC 1768. Mas devido ao fato de o LPC 1768 possuir mais de 100 pinos e o mbed só possuir 40, limita este último à utilização de apenas um subconjunto das funções do primeiro. O mbed utiliza um microcontrolador de interface para gerenciar a comunicação USB com o PC. Este microcontrolador faz o PC reconhceer o mbed como um dispositivo de armazenamento, e gerencia a transferência do arquivo executável para uma memória flash de 16 MBits. Quando o botão de reset é pressionado, o microcontrolador de interface transfere para a memória flash do LPC 1768 o arquivo executável mais recente, e inicia a execução (Toulson e Wilmshurst 2012). Uma das interfaces CAN é utilizada para a comunicação com o PSoC 5LP. Este último envia para o mbed informações referentes ao estado do ambiente e do agente, e recebe comandos de seleção de comportamentos. A interface Ethernet é utilizada para comunicação com o nó computacional correspondente ao nı́vel cognitivo (o DNP 2486 ). O mbed possui uma API (Application Program Interface) que consiste em uma abstração da CMSIS (do inglês, Cortex Microcontrollers System Interface Standard ), que por sua vez é um padrão de interface de software em linguagem C, desenvolvida pela ARM, para a programação de microcontroladores baseados em microprocessadores da famı́lias Cortex. A abstração utilizada pelo mbed corresponde a uma API 50 Figura 4.14: Diagrama de blocos do mbed (Toulson e Wilmshurst 2012). desenvolvida em C++ que encapsula uma implementação da CMSIS para o LPC 1768, abstraindo-a do desenvolvedor. A partir da sua versão 3, a CMSIS passou a contar com a CMSIS RTOS, que oferece uma API padronizada para SOTR. Assim, a API do mbed implementa o mbed RTOS, totalmente baseado na CMSIS RTOS. Este é o SOTR utilizado para a implementação do nı́vel instintivo. AS tarefas neste SOTR são chamadas de threads, e possuem estados similares às tarefas do FreeRTOS (Figura 4.10). As cinco tarefas utilizadas na implementação do nı́vel instintivo foram: • Envio de mensagens pela rede CAN; • Recepção de mensagens pela rede CAN; • Envio de mensagens pela rede Ethernet; • Recepção de mensagens pela rede Ethernet; • Motor de inferência. Neste nó, um sistema baseado em conhecimento com regras em LPO teve que ser implementado, pois o mbed mostrou-se incapaz de executar o processo “Interface” do Expert-Coop++ (responsável por executar o nı́vel instintivo) mesmo para pequenas bases de regras. Assim, utilizou-se estruturas de dados estáticas para armazenar as 51 regras. Além disso, um mailbox foi implementado para a comunicação CAN com o PSoC 5LP e outro separado para a comunicação Ethernet. 4.5 Nı́vel Cognitivo: o DNP 2486 O nı́vel cognitivo é implementado no DIL/NetPC 2486 : um módulo baseado no microcontrolador Vortex86SX SoC (System on Chip) de 300MHz, com 1GB de memória Flash NAND e 64MB de memória SDRAM DDR2. O DNP 2486 utiliza uma distribuição embarcada do sistema operacional Linux, o que faz com que o nı́vel cognitivo embarcado nesta plataforma corresponda a uma aplicação de usuário executando neste sistema. Este nó tinha que ser bastante robusto computacionalmente pois executará as tarefas mais complexas de raciocı́nio simbólico do AAC. A Figura 4.15 mostra o DNP 2486 juntamente com um diagrama de blocos simplificado do mesmo. Figura 4.15: DIL/NetPC 2486. Conforme mencionado no Capı́tulo 3, o nı́vel cognitivo implementa um sistema baseado em conhecimento com um motor de inferência que pode utilizar tanto o algoritmo de encadeamento adiante da LPO, como o algoritmo MetateM da LTP. No primeiro caso, uma implementação do processo “Expert” do framework ExpertCoop++ é utilizada para o nı́vel cognitivo embarcado. Isso porque este framework se mostrou portável para o sistema operacional do DNP. No caso da base de conhecimento utilizando LTP, com execeção do mailbox, que também utilizou a implementação do Expert-Coop++, um novo sistema baseado em conhecimento teve que ser desenvolvido. O diagrama de classes da Figura 4.16 mostra as classes implementadas e o relacionamento entre elas. A classe “Symbol ” representa um sı́mbolo proposicional, que pode ser positivo ou negativo (sem ou com negação, respectivamente), e possui um rótulo identificador. Um conjunto de um ou mais objetos da classe “Symbol ” interconectados por conjunções ou disjunções, passados como argumentos para um operador temporal unário compõe um objeto da classe “Logic”. A base de fatos é representada pela classe “FactsBase”, que pode conter uma lista de objetos da classe “Logic” desprovidos de operadores temporais (isto é, sentenças clássica conjuntivas ou disjuntivas) que, por sua vez, representam 52 Figura 4.16: Diagrama de classes do sistema baseado em conhecimento de nı́vel cognitivo com LTP. os fatos. Uma regra é um objeto da classe “Rule”, e contém dois objetos da classe “Logic” para representar a sua premissa e a sua consequência. A classe “RulesBase” permite instanciar uma base de regras com um ou mais objetos da classe “Rule”. Um objeto da classe “InferenceEngine”, então, implementa o algoritmo MetateM, que consulta as bases de regras e de fatos, atualizando o modelo lógico proposicional contido nesta última. 4.6 Operação do Sistema Na Figura 4.17 o diagrama de sequência do sistema é mostrado, ilustrando como o mesmo funciona. Esta figura mostra a troca de mensagens entre os nı́veis do AAC e entre este útimo e o ambiente. O agente inicia com um comportamento B1 ativo no nı́vel reativo, e este envia ao instintivo as leituras dos sensores. Este nı́vel converte as percepções recebidas em informação simbólica a respeito dos estados do agente e do ambiente. A informação simbólica é usada pelo motor de inferência do nı́vel instintivo, para decidir se deve mudar o comportamento ativo no reativo, e enviada ao nı́vel cognitivo. Este, por sua vez, utiliza a informação simbólica no seu motor de inferência para gerar uma nova meta local, caso necessário. Toda vez que o nı́vel instintivo decide que o comportamento atual não deve ser mudado, ele simplesmente não envia nenhuma mensagem ao reativo, como se vê em I2. De maneira similar, o nı́vel cognitivo pode decidir não atualizar a meta local (especialmente se a informação simbólica recebida do nı́vel instintivo não informa que a meta local atual foi cumprida). Isso é mostrado em C2 e C3, e é independente da decisão do nı́vel instintivo de mudar ou não o comportamento reativo atual. 4.7 Conclusão Neste capı́tulo apresentou-se uma rede de microcontroladores concebida especialmente para embarcar o AAC no robô móvel omnidirecional AxéBot. Os três nós da 53 Figura 4.17: Diagrama de sequência esperado do sistema. rede (um para cada nı́vel da arquitetura do AAC), isto é, o PSoC 5LP (nı́vel reativo), o mbed (nı́vel instintivo) e o DNP 2486 (nı́vel cognitivo), se comunicam através de dois protocolos de comunicação: CAN (entre o PSoC e o mbed ) e Ethernet (entre o mbed e o DNP ). Conforme discorreu-se no Capı́tulo 3, o nı́vel cognitivo do AAC pode executar um sistema baseado em regras com LPO e quadros para representar o conhecimento simbólico do agente, de acordo com a sua implementação original (com o ExpertCoop++), como também pode utilizar LTP e o algoritmo MetateM para este fim. Mas a utilização de LTP pelo cognitivo é uma extensão à arquitetura original do AAC, e o fato de que a arquitetura de hardware proposta permite a utilização de ambas mostra que, não obstante o seu propósito especı́fico, a arquitetura proposta ainda permite o desenvolvimento de outras técnicas no AAC. 54 Capı́tulo 5 Resultados Os resultados de experimentos realizados com a arquitetura de hardware descrita no Capı́tulo 4 são agora apresentados. Inicialmente um esquemático da arquitetura resultante é mostrado. Depois os experimentos são descritos e seus resultados expostos. O primeiro experimento utiliza apenas o nı́vel reativo, e os dois experimentos seguintes com todos os nı́veis, apenas alterando a estratégia de representação de conhecimento e inferência no nı́vel cognitivo. 5.1 Nı́vel Reativo: Controlador Cinemático Nesta seção serão apresentados resultados referentes a experimentos de estabilização ponto-a-ponto e rastreamento de trajetória utilizando o controlador cinemático embarcado no microcontrolador PSoC 5LP. 5.1.1 Configuração dos Experimentos A configuração do experimento com o controlador cinemático difere da dos experimentos subsequentes, pois neste caso foi possı́vel utilizar o robô AxéBot real, por utilizar apenas um microcontrolador (nos demais experimentos, como se constatará, utilizou-se um simulador). Assim, utilizou-se a arquitetura da Figura 4.12 completa. O loop do controlador cinemático foi implementado com um perı́odo TCin = 50ms. Para realizar esse ciclo, uma interrupção de um temporizador do PSoC 5LP foi utilizada, liberando a cada 50ms, um semáforo para a tarefa do controlador cinemático que, por sua vez, executa o correspondente ao ramo direto do diagrama de blocos da Figura 4.12. As matrizes KP e KI são dadas conforme Tsai et al. (2005): KP = 3 I[3x3] e KI = 0.002 I[3x3] , onde I[3x3] é a matriz identidade de 3x3. Já a tarefa de controle proporcional-integral de velocidade dos motores (os controladores de baixo nı́vel) foi executado em um perı́odo mais curto de TM ot = 10ms. Isto significa que este controlador executará cinco iterações a cada iteração do controlador cinemático, o que é suficiente para estabilização com erro pequeno segundo 55 ?. Destes trabalhos foram também retirados os valores das constantes proporcional e integral: kp = 0.239 e ki = 0.051, respectivamente. 5.1.2 Resultados Estabilização Ponto-a-Ponto Como foi dito anteriormente, na estabilização ponto-a-ponto uma pose desejada ou de referência é dada como entrada ao controlador e o robô precisa estabilizar naquela T pose. No presente experimento, a pose de referência foi dada por xR yIR θIR = I T 2 m 3 m 4 rad . A Figura 5.1 mostra o resultado. Figura 5.1: Resultado para estabilização ponto a ponto. 56 Rastreamento de Trajetória No problema de rastreamento de trajetória a referência é dinâmica. A referência utilizada neste experimento foi uma circunferência com raio de 2m, cujos pontos foram gerados internamente pela tarefa do controlador cinemático através da equação paramétrica do cı́rculo, enquanto a orientação foi fixada em π/2 rad e a velocidade . A Equação 5.1 dá a expressão angular da trajetória de referência foi ω R = 0.2 rad s paramétrica da trajetória. (t) 2 cos (θIR (t) + ω R t) xR I y R (t) = 2 cos (θR (t) + ω R t) I I θIR (t) π/2 Os resultados são mostrados na Figura 5.2. Figura 5.2: Resultados para rastreamento de trajetória. 57 (5.1) 5.2 Nı́veis Reativo, Instintivo e Cognitivo: Planejamento Os resultados doravante apresentados correspondem a experimentos realizados com a rede de microcontroladores completa, isto é, contendo os três nós correspondentes aos nı́veis do AAC. A arquitetura dos experimentos, conforme será mencionado logo em seguida, difere da do anterior. 5.2.1 Configuração dos Experimentos Um diagrama de circuito da rede é mostrado na Figura 5.3. Neste diagrama vê-se que o barramento CAN, entre o PSoC e o mbed, não utilizou transceivers, o que é aceitável para barramentos com comprimento inferior a 10cm. Figura 5.3: Diagrama de circuito da rede de microcontroladores. A topologia da rede Ethernet é mostrada na Figura 5.4, onde nota-se que todos os nós possuem um conector RJ45 com isolamento magnético, exceto o mbed. Isto ocorre porque o mbed não possui uma interface fı́sica RJ45 nem o isolamento magnético em sua placa, então optou-se por implementar o isolamento magnético através de um banco de capacitores, conforme Ben-Josef (2011), e fazer a conexão pino-a-pino com um cabo CAT5 (par trançado e sem blindagem). Reiterando o que se afirmou no inı́cio desta seção, os experimentos com a rede completa utilizaram uma configuração diferente daquela dos experimentos com o controlador cinemático: não se utilizou o robô AxéBot real, mas sim um simulado nos softwares Player 3.0.2 e Stage 3.2.2. O Player é um servidor para robôs que fornece interfaces para sensores e atuadores, permitindo uma maior abstração no desenvolvimento de aplicações envolvendo robôs equipados com estes elementos. O simulador, na realidade, é apenas o Stage, que funciona sobre o Player simulando robôs, sensores e objetos. 58 Figura 5.4: Diagrama da Rede Ethernet. A despeito da utilização de um simulador, o raciocı́nio automático do AAC se dá inteiramente embarcado na rede de microcontroladores. A arquitetura é aquela da Figura 5.5. Assim, o simulador recebe os comandos do controlador cinemático e envia as leituras do ambiente de acordo com os seus sensores. Figura 5.5: Configuração dos experimentos de planejamento de movimento. No Capı́tulo 3.2 viu-se que o nı́vel cognitivo do AAC pode utilizar tanto a LPO quanto a LTP como mecanismos de representação de conhecimento e inferência. Sendo assim, dois experimentos serão realizados, cada um utilizando uma dessas variantes de representação no nı́vel cognitivo. Um aspecto comum a ambos os experimentos é a estratégia de redução do número de estados do mundo (ambiente), que consiste de uma leve modificação daquela apresentada por Cerqueira et al. (2013). Esta representação é mostrada na Figura 5.6. Os estados do ambiente são caracterizados pela posição relativa dos obstáculos e da meta com relação ao robô. Segmentase o espaço, no referencial do robô, em regiões: 4 para a meta (parte (a) da Figura 5.6) e 8 para os obstáculos (parte (b) da Figura 5.6). Dessa forma, o estado do 59 ambiente resume-se à determinação das regiões onde estão a meta (r1, r2, r3 ou r4) e os obstáculos (r1, ... , r7 ou r8). Figura 5.6: Segmentação do espaço (a) para a posição relativa da meta e (b) para as localizações relativas dos obstáculos. 5.2.2 Resultados Planejamento com LPO Com o nı́vel cognitivo utilizando LPO, a tarefa utilizada no experimento foi: iniciando na posição (−7, −4), o robô deve ir à posição (3, −3), passando pelo ponto (2, 2). Tem-se, pois, duas metas locais: • ir do ponto (−7, −4) ao ponto (2, 2); • ir do ponto (2, 2) ao ponto (3, −3). Na Figura 5.7 aparece a base de regras utilizada para este experimento. Nesta figura nota-se a utilização da sintaxe da linguagem do sistema de produção do AAC (que consta na Figura 3.14). Figura 5.7: Base de regras para o nı́vel cognitivo utilizando LPO. 60 O único objeto presente é o “meta local”, cujos atributos e respectivos possı́veis valores são listados abaixo: • o atributo “atual” pode receber os valores “ir para ponto1”, correspondente à execução da primeira meta local, “ir para ponto2”, correspondente à execução da segunda meta local ou “nenhuma”; e • o atributo “status”, por sua vez, tem como possı́veis valores “ativa” (indicando uma meta em execução), “sucesso” (indicando uma meta alcançada) ou “f alha” (para uma meta que não pôde ser alcançada). O resultado é mostrado na Figura 5.9. Figura 5.8: Resultado para planejamento utilizando LPO. Planejamento com LTP No caso do nı́vel cognitivo utilizando a LTP como mecanismo de representação de conhecimento, alterou-se apenas a meta global, que agora é chegar ao ponto (6, −2). O alfabeto de sı́mbolos proposicionais utilizado foi o seguinte: • G1 : alcançou meta 1. • G2 : alcançou meta 2. • going to none: agente não está indo a nenhuma meta. • going to G1 : agente em direção à meta 1. 61 • going to G2 : agente em direção à meta 2. • x1 and x2: variáveis auxiliares para deixar as regras na FNS. As regras utilizadas são listadas nas Tabelas 5.1 (regras de inı́cio e de eventualidade) e 5.2 (regras de próximo instante), acompanhadas por uma descrição. Tabela 5.1: Regras de inı́cio e de eventualidade Regra inı́cio ⇒ going to none inı́cio ⇒ ¬G1 ∧ ¬G2 inı́cio ⇒ x1 ∧ x2 x1 ⇒ ♦G1 x2 ⇒ ♦G2 going to none ⇒ going to G1 Descrição Inicialmente o robô não está indo a nenhuma meta. Inicialmente nenhuma meta foi alcançada. Inicialmente as variáveis auxiliares são verdadeiras x1 faz ♦G1 válida inicialmente. x2 faz ♦G2 válida inicialmente. Vai para G1 . Tabela 5.2: Regras de próximo instante Regra ¬G1 ⇒ e(¬G2 ) Descrição G2 não pode ocorrer se G1 não ocorreu. Mantém-se indo a G1 se meta 1 não foi alcançada Se ainda está indo a G1 neste instante, não terá alcançado no próximo. Se não está mais indo a G1 , deve estar indo a G2 . Mantém-se indo a G2 se meta 2 não foi alcançada. Se ainda está indo a G2 neste instante, não terá alcançado no próximo. ¬G1 ∧ going to G1 ⇒ egoing to G1 going to G1 ⇒ e(¬G1 ) ¬going to G1 ⇒ egoing to G2 going to G2 ∧ ¬G2 ⇒ egoing to G2 going to G2 ⇒ e(¬G2 ) O resultado é mostrado na Figura 5.9. 5.3 Placa de Circuito Impresso O presente trabalho também produziu como resultado o projeto de uma placa de circuito impresso com a rede de microcontroladores para o AxéBot. O projeto é 62 Figura 5.9: Resultado para navegação com LTP: em verde o ponto inicial, e em amarelo as metas. mostrado na Figura 5.10. Esta placa encontra-se em processo de confecção e por isso não foi utilizada para a realização dos experimentos. Figura 5.10: Placa de circuito impresso da rede de microcontroladores. Nessa placa, o barramento CAN completo (isto é, com os transceivers) foi utilizado. O circuito resultante é mostrado na Figura 5.11, onde “IC4” e “IC5” cor63 respondem aos CIs (Circuitos Integrados) dos transceivers do lado do PSoC e do mbed, respectivamente. O CI escolhido para a função foi o SN65HVD255D da Texas Instruments, que possui tensão nominal de entrada de 5V e suporta taxas de transmissão de até 1Mbps. Figura 5.11: Esquemático do barramento CAN. O diagrama de blocos da rede Ethernet na placa se assemelha àquele da Figura 5.4, com a diferença que o transceiver Ethernet do mbed é também ligado a uma porta RJ45 com isolamento magnético na placa. Além disso, a placa conta com interfaces para os seguintes sensores: • CMPS03 (compasso magnético): possui uma precisão de 0,1o , e a leitura do valor medido pode ser feita via I2C (Inter-Integrated Circuit) ou PWM (Pulse Width Modulation); • GP2D02 (sensor de distância infravermelho): muito bom para medidas entre 10 e 80cm, e a leitura do valor medido é realizada de através do envio de uma sequência de pulsos para o sensor, o qual retorna sincronamente os 8 bits do valor medido; • DE-ACCM5G (acelerômetro): acelerômetro com dois eixos e uma saı́da analógica para cada eixo; possui escala completa de ±5g. 5.4 Conclusão No presente capı́tulo foram descritos os resultados de exprimentos utilizando o AAC embarcado em uma rede de microcontroladores. Os experimentos com o nı́vel reativo utilizaram o robô AxéBot, enquanto que os demais foram realizados com um robô simulado. Adicionalmente, uma placa de circuito impresso contendo esta rede é mostrada no final da seção. Esta placa encontra-se em processo de confecção. Com os resultados apresentados neste capı́tulo, mostrou-se que o AAC pode utilizar a arquitetura de hardware proposta para tarefas de navegação e planejamento em robótica móvel. 64 Capı́tulo 6 Conclusão Neste trabalho uma rede de microcontroladores foi projetada para comportar a arquitetura cognitiva do AAC. A rede foi concebida mimetizando a estrutura funcional do AAC: os três nı́veis deste último (a saber, o nı́vel reativo, o nı́vel instintivo e o nı́vel cognitivo) foram embarcados em cada nó da rede, cujas interfaces de comunicação foram utilizadas para implementar a troca de mensagens entre estes nı́veis. O nı́vel reativo, responsável pela resposta em tempo real do agente, foi embarcado no PSoC 5LP, e consistiu basicamente de um controlador cinemático de posição baseado no modelo do robô omnidirecional AxéBot. Este nó se comunica através de um barramento CAN com o mbed, um módulo microcontrolado onde foi embarcado o nı́vel instintivo. Um sistema baseado em conhecimento com uma base de regras em LPO foi implementado neste nı́vel para coordenar a seleção de comportamentos no nı́vel reativo. O nı́vel cognitivo do AAC foi embarcado no DIL-Net PC 2486. Este nó se comunica com o mbed através de uma rede Ethernet. Na implementação original do AAC, o nı́vel cognitivo implementou um sistema baseado em conhecimento como método de raciocı́nio automático que utilizava LPO e quadros como formalismos para a composição da base de conhecimento. Outrossim, neste trabalho foi implementado um motor de inferência baseado no algoritmo MetateM para execução de uma base de regras em LTP. Os primeiros experimentos para validação desta arquitetura de hardware envolveram apenas o nı́vel reativo, onde se comprovou o correto funcionamento do controlador cinemático de posição, seja para estabilização em um ponto ou para rastreamento de trajetórias. Em seguida, experimentos com a rede completa confirmaram a performance do sistema completo, com o nı́vel cognitivo utilizando LPO e em seguida LTP como formalismos de representação do conhecimento. Com isso, este trabalho mostrou que a arquitetura de hardware concorrente proposta atende satisfatoriamente às demandas de concorrência e comunicação do AAC. Adicionalmente, a arquitetura mostrou-se flexı́vel e modular, pois permitiu que um novo método de inferência pudesse ser utilizado em um dos nı́veis da arquitetura cognitiva, fato este importante para pesquisas posteriores em IA que utilizem o AAC. 65 Não obstante o sucesso obtido nos experimentos, o mbed mostrou severas limitações em termos de recursos computacionais, o que sugere que em pesquisas posteriores este seja substituı́do por um nó computacional mais robusto. Além disso, para usufruir inteiramente das vantagens de se utilizar uma lógica temporal, a LTP pode ser substituı́da pela lógica temporal de primeira ordem, para a qual o algoritmo MetateM possui uma extensão. Por fim, os experimentos que fizeram uso da arquitetura completa utilizaram um robô simulado; a placa de circuito impresso projetada neste trabalho possibilitará testes futuros com robôs reais, o que deve fortalecer ainda mais o uso desta arquitetura de hardware com o AAC. 66 Referências Bibliográficas Ainsworth, M. (n.d.). Application Note 61290: PSoC 3 and PSoC 5 Hardware Design Considerations. 1 ed.. Cypress Semiconductor. Barbosa, L. (2005). Um sistema multiagente para monitoramento atmosférico. Dissertação de Mestrado, UNIFACS. Barr, A. e E. Feigenbaum (1981). (1982) the handbook of artificial intelligence. Vol. II. Pitman, London. Barrenscheen, Jens (1998). AP2921 - On Board Communication Using CAN Without Transceiver. Siemens. Barringer, Howard, Michael Fisher, Dov Gabbay, Graham Gough e Richard Owens (1990). Metatem: A framework for programming in temporal logic. Em: Stepwise Refinement of Distributed Systems Models, Formalisms, Correctness. Springer. pp. 94–129. Barry, Richard (2010). Using the FreeRTOS(tm) Real Time Kernel. Real Time Engineers Ltd. Ben-Josef, Ofir (2011). TLK100 - Ethernet PHY Transformerless Operation. Texas Instruments. Bitencourt, Andrea C. P., Alexandre da C. e S. Franco, Marcelo E. de Souza, Cristiano H. de O. Fontes e Augusto C. P. L. da Costa (2008). Internal model control for trajectory tracking of an omni-directional robot. 3, 363–372. Bittencourt, G. (1990). An architecture for hybrid knowledge representation. Tese de Doutorado, Universidade de Karlsruhe. 67 Bittencourt, G. (1997). In the quest of the missing link. International Joint Conference of Artificial Intelligence. Bittencourt, G. e A. L. da Costa (2001). Hybrid cognitive model. Em: The Third International Conference on Cognitive Science ICCS’2001 Workshop on Cognitive Angents and Agent Interaction. Bittencourt, Guilherme (2006). Inteligência artificial: ferramentas e teorias. Editora da UFSC. Brachman, Ronald e Hector Levesque (2004). Knowledge representation and reasoning. Elsevier. Cerqueira, R. G., A. L. da Costa, S. G. McGill, Daniel Lee e G. Pappas (2013). From reactive to cognitive agents: Extending reinforcement learning to generate symbolic knowledge bases. Em: Simpósio Brasileiro de Automação Inteligente 2013. Costa, A. L. da e G. Bittencourt (1999). From a concurrent architecture to a concurrent autonomous agents architecture. Lecture Notes in Artificial Inteligence 1856, 85–90. Costa, P. J., A. G. S. Conceição, T. T. Ribeiro e J. Junior (2011). Embarcando o agente autônomo concorrente no robô móvel omnidirecional axébot: Nı́vel reativo. Em: X Simpósio Brasileiro de Automação Inteligente (SBAI), 2011. Proceedings of the 2011. Vol. X. Córdoba-Montiel, F., S. F. Hernández-Machuca e D. Hernández-Ventura (2004). Hybrid microcontrollers network for distributed instrumentation. Journal of Applied Research and Technology 2(2), 179–188. R 5LP Architecture TRM (Technical Refrence Manual). Cyp (2013). PSoC da Costa, Augusto Cesar Pinto Loureiro e Guilherme Bittencourt (1997). Parla: A cooperation language for cognitive multi-agent systems. Em: Progress in Artificial Intelligence. pp. 207–215. Springer. 68 da Costa, Augusto Loureiro, Guilherme Bittencourt, Luciano Rottava da Silva e Eder Mateus Nunes Gonçalves (2003). Expert–coop++: Ambiente para desenvolvimento de sistemas multiagente.. ENIA-Encontro Nacional de Inteligência Artificial. da Costa, Augusto Loureiro e Guilherme Bittencourt (2000). From a concurrent architecture to a concurrent autonomous agents architecture. Em: RoboCup99: Robot Soccer World Cup III. pp. 274–285. Springer. da Costa; G. Bittencourt; L. R. Silva; E. M. N. Gonçalves, A. L. (2003). Expert-coop++: Ambiente para desenvolvimento de sistemas multiagente. http://www.expert-coop.ufba.br/,. de Santana Júnior, OV e AL Costa (2007). Mecateam 2006: Um sistema multiagente reativo para futebol de robôs simulados. VII Escola Regional de Computaçao Bahia-Alagoas-Sergipe. Dixon, Clare, Michael Fisher e Mark Reynolds (2000). Execution and proof in a horn-clause temporal logic. Em: Advances in Temporal Logic. pp. 413–433. Springer. E. Aguirre, A. Gonzales (2000). Fuzzy behaviors for mobile robot navigation: design, coordination and fusion. International Journal of Approximate Reasoning. Fainekos, Georgios E, Antoine Girard, Hadas Kress-Gazit e George J Pappas (2009). Temporal logic motion planning for dynamic robots. Automatica 45(2), 343– 352. Fainekos, Georgios E, Hadas Kress-Gazit e George J Pappas (2005). Temporal logic motion planning for mobile robots. Em: Robotics and Automation, 2005. ICRA 2005. Proceedings of the 2005 IEEE International Conference on. IEEE. pp. 2020–2025. Fisher, Michael (1991). A resolution method for temporal logic.. Em: IJCAI. Vol. 91. pp. 99–104. Fisher, Michael (1996). An introduction to executable temporal logics. The Knowledge Engineering Review 11(01), 43–56. 69 Fisher, Michael (2006). Metatem: The story so far. Em: Programming multi-agent systems. pp. 3–22. Springer. Fisher, Michael (2011). An Introduction to Practical Formal Methods Using Temporal Logic. John Wiley and Sons, Ltd. Fitting, Melvin (1996). First-order logic and automated theorem proving. Springer. R 5lp. Fosler, Ross M. (2012). An77759 - getting started with psoc Furbach, Ulrich, Gerhard Dirlich e Christian Freksa (1984). Towards a theory of knowledge representation systems. Em: Artificial Intelligence: Methodology, Systems and Applications. pp. 77–84. Gabbay, Dov, Amir Pnueli, Saharon Shelah e Jonathan Stavi (1980). On the temporal analysis of fairness. Em: Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages. ACM. pp. 163–173. Hayes, Patrick J (1979). The logic of frames. Frame conceptions and text understanding 46, 61. IEEE (2012). IEEE Standard for Ethernet. IEEE. Section 1. Kitano, H., Asada M., I. Noda e H. Matsubara (1998). Robocup: robot world cup. IEEE Robotics Automation Magazine 5(3), 30–36. Kitano, H., Asada M., K. Kunyioshi, E. Osawa, I. Noda e H. Matsubara (1997). Robocup: A challenge problem for artificial intelligence. AI Magazine. Konur, Savas (2010). A survey on temporal logics. arXiv preprint arXiv:1005.3199. Lamport, Leslie (1983). What good is temporal logic?. Em: IFIP congress. Vol. 83. pp. 657–668. M. Asada, Karl F. MacDormanb, Hiroshi Ishiguro Yasuo Kuniyoshi (2001). Cognitive developmental robotics as a new paradigm for the design of humanoid robots. Robotics and Autonomous Systems. Micrel (n.d.). Application Note 120: Capacitive Coupling Ethernet Transceivers Without Using Transformers. 1 ed.. Micrel. 70 Mihaguti, Eliza Hitomi Fukushigue (1996). Sistemas baseados em conhecimentos: aplicações, tendências e implicações - um estudo exploratório em empresas brasileiras. Dissertação de Mestrado, EAESP/FGV. Minsky, Marvin (1974). A framework for representing knowledge. Minsky, Marvin (1984). Jokes and the logic of the cognitive unconscious. Springer. Mohan, A. (2009). Implementing CAN Bus Communication using PSoC. 1 ed.. Cypress Semiconductor. Mohan, A. (2013). Application Note 52701: Implementing CAN Bus Communication using PSoC 3 and PSoC 5. 1 ed.. Cypress Semiconductor. Murphy, Robin R. (2000). Introduction to AI Robotics. Massachussets Institute of Technology Press. Nascimento, T. P. (2009). Controle de trajetória de robôs omni-direcionais: Uma abordagem multivariável. Dissertação de Mestrado, UFBA. Oudeyer, P. Y. (2010). On the impact of robotics in behavioral and cognitive sciences: From insect navigation to human cognitive development. IEEE Transactions On Autonomous Mental Development 2(1), 2–16. Pnueli, Amir (1977). The temporal logic of programs. Em: Foundations of Computer Science, 1977., 18th Annual Symposium on. IEEE. pp. 46–57. Post, Emil L (1943). Formal reductions of the general combinatorial decision problem. American journal of mathematics pp. 197–215. Prado, S. (2012). Mbed - Integrando o FreeRTOS em um Cortex-M3. Ranjith, M. (2013). Application Note 52701: Getting Started with Controller Area Network (CAN). Cypress Semiconductor. Ribeiro, T. T. (2010). Sistema de controle em tempo real aplicado à robótica móvel. Trabalho Final de Graduação, UFBA. Ribeiro, Tiago T., Jovelino T. dos Santos, André G. S. Conceição e Augusto L. da Costa (2011). Sistema microprocessado para controle em tempo real de robôs 71 móveis ominidrecionais. Em: X SBAI Simpósio Brasileiro de Automação Inteligente. Russel, Stuart e Peter Norvig (2004). Inteligência Artificial. Elsevier. Santos, J. T. (2010). Projeto e desenvolvimento de um sistema microprocessado aplicado à robótica móvel. Trabalho Final de Graduação, UFBA. Stankovic, John A. e A. Rajkumar (2004). Real-Time Operating Systems. Vol. 28. Kluwer Academic Publishers. Systems, SSV Embedded (2009). The DNP/2486 MIN-Linux Features. 1 ed.. SSV Embedded Systems. Thagard, Paul (1984). Frames, knowledge, and inference. Synthese 61(2), 233–259. Toulson, Rob e Tim Wilmshurst (2012). Fast and effective embedded systems design: applying the ARM mbed. Elsevier. Tsai, Ching-Chih, Li-Bin Jiang, Tai-Yu Wang e Tung-Sheng Wang (2005). Kinematics control of an omnidirectional mobile robot. Em: Proceedings of 2005 CACS Automatic Control Conference. Wiznet (n.d.). WIZ610wi User’s Manualt. 1.7 ed.. Wiznet. Zhang, Peng (2010). Advanced Industrial Control Technology. William Andrew. 72