• No results found

Kapittel 4: Planskyggen

4.1 Planskygge

4.1.1 Mulige virkninger av planskygge

Um dos pontos chave no desenvolvimento de qualquer sistema distribuído é o estabelecimento de um meio de comunicação eficiente e eficaz, que permita aos módulos intercambiar informações. Num sistema robótico, os dados de saída de um módulo podem ser os dados de entrada de um ou mais módulos; ademais, alguns dados podem ser relevantes apenas no momento de sua criação – como uma leitura de um sensor – ou em qualquer momento – como um mapa do ambiente. Para responder estes requisitos, foi proposto o espaço de memória, módulo central da arquitetura, inspirado nos modelos psicológicos da memória humana e baseado em sistemas computacionais. Por um lado, os modelos da Psicologia oferecem ideias de como a mente humana processa os vários

2.5 Organizando a Arquitetura de Controle

estímulos e os organiza em nossa memória. Por outro lado, os sistemas computacionais, tais como os bancos de dados e os sistemas de quadro negro ou quadro branco, fornecem um conjunto de ferramentas para implementar essas ideias.

O modelo que tem dominado o entendimento psicológico sobre a memória humana, ainda que impreciso ou incompleto em alguns aspectos (GAZZANIGA et al., 2012, cap. 7), foi proposto por Richard Atkinson e Richard Shiffrin em 1968 (ATKINSON; SHIFFRIN, 1968), sendo chamado de modelo de memória modal. Neste modelo, a memória humana é dividida em três: memória sensorial; memória de curto prazo, ou memória de trabalho; e memória de longo prazo. Conforme (GAZZANIGA et al., 2012, cap. 7), um estímulo sensorial é capturado pela memória sensorial, mas será logo esquecido caso não receba atenção. Ao receber atenção, a informação do estímulo adentra à memória de curto prazo, ou memória de trabalho, onde deve ser repetida para ser lembrada. Quando um conjunto de informações é codificado, ele é gravado na memória de longo prazo, onde as informações são mantidas por tempo indeterminado, pois podem ser esquecidas. É possível, também, que uma informação da memória de longo prazo seja recuperada para a memória de curto prazo. A Figura 2.8 ilustra o fluxo de informação dentro deste modelo.

Figura 2.8 – Modelo de memória modal, adaptado de (GAZZANIGA et al., 2012, cap. 7).

O modelo de memória modal contribui para a organização de um sistema robótico distribuído, pois sua abstração permite definir três categorias de dados: voláteis, temporários e permanentes:

 Dados voláteis seriam aqueles gravados na memória sensorial, possuindo um “tempo de vida” (TTL, do termo inglês time to live). Estes dados são disponibilizados para leitura a todos os módulos até atingirem seu TTL, quando são apagados. Quando um módulo lê um dado volátil, ele o copia como um dado temporário. Conforme ilustra a Figura 2.7, dados voláteis podem ser gerados por módulos de interface para hardware (dados sensoriais), por processadores de dados (informações), e pelo controlador (variáveis de controle).

2.5 Organizando a Arquitetura de Controle

 Dados temporários são os dados voláteis que, na linguagem do modelo modal, “receberam atenção” e, portanto, foram copiados para a memória de curto prazo dos módulos “interessados”. O resultado do processamento dos dados temporários pode gerar novos dados voláteis ou dados permanentes.

 Dados permanentes referem-se à memória de longo prazo e são, portanto, gravados para consultas posteriores pelos módulos da arquitetura de controle. Eventualmente, alguns dados deixarão de ser necessários e poderão ser apagados.

É importante ressaltar que os dados voláteis e os dados permanentes são acessíveis a todos os módulos da arquitetura de controle, existindo, portanto, numa memória global. Contudo, os dados temporários são acessíveis apenas aos módulos que os copiaram. Durante a execução, cada módulo constitui-se de um processo que possui memória local – equivalente à memória de trabalho, ou de curto prazo – para a qual os dados são copiados a fim de serem processados. Embora seja possível manter os dados temporários acessíveis a todos os demais processos, isso não é interessante do ponto de vista prático, pois acarretaria em gargalos de comunicação para a atualização da memória global sem contribuir para acelerar o processamento dos dados. Institui-se, portanto, dois níveis de memória: global, onde os módulos se comunicam criando dados voláteis e permanentes; e local, presente em cada módulo. Por praticidade, a memória global é tratada neste trabalho como espaço de memória, enquanto a memória local é referida como memória de curto prazo, conforme explicitado na Figura 2.7.

O sistema de comunicação descrito possui semelhança ao sistema computacional de quadro branco (whiteboard system), que por sua vez é uma extensão do conceito de quadro negro (blackboard system) da Inteligência Artificial. Em um sistema de quadro negro, diferentes softwares especialistas, chamados de “fontes de conhecimento”, atualizam iterativamente as informações num mesmo espaço de dados (o quadro negro) até que as soluções parciais de um problema fornecidas por cada fonte de conhecimento levem à solução final (CHU et al., 2013; CRAIG, 1995). Os quadros brancos, no entanto, servem como um meio de comunicação e armazenamento de dados, onde vários agentes podem colaborar para criar e coletar dados durante a solução de um problema (REILENT, 2012; THÓRISSON et al., 2005). De certa forma, o espaço de memória pode ser considerado um sistema de quadro branco.

Para compor o espaço de memória, foi utilizado um banco de dados (BD) NoSQL, do inglês “not only structured query language” (“não somente linguagem de busca estruturada”), nomenclatura dada à BDs não-relacionais, distribuídos, de código-aberto e horizontalmente

2.5 Organizando a Arquitetura de Controle

escaláveis (EDLICH, 2014). Muito embora os BDs NoSQL ainda possuam desempenho inferior aos BDs relacionais (FLORATOU et al., 2012; HAN et al., 2011), eles tendem a aceitar modelos de dados mais flexíveis (FLORATOU et al., 2012), além de oferecer uma alternativa à SQL, que pode gerar códigos complexos que não atendem as necessidades do desenvolvimento ágil moderno (LEAVITT, 2010). A flexibilidade de projeto e acesso aos dados em um BD NoSQL foram as razões que levaram à sua adoção para compor o espaço de memória, conforme será detalhado na Seção 3.4.