• Nenhum resultado encontrado

Implementação, simulação e verificação formal de um agente racional condutor de um veículo autônomo

N/A
N/A
Protected

Academic year: 2021

Share "Implementação, simulação e verificação formal de um agente racional condutor de um veículo autônomo"

Copied!
130
0
0

Texto

(1)

DEPARTAMENTO ACADÊMICO DE INFORMÁTICA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

CARLOS EDUARDO ABADE

PRISCILLA DORADO GAERTNER ALONZO

IMPLEMENTAÇÃO, SIMULAÇÃO E VERIFICAÇÃO FORMAL DE

UM AGENTE RACIONAL CONDUTOR DE UM VEÍCULO

AUTÔNOMO

TRABALHO DE CONCLUSÃO DE CURSO

PONTA GROSSA 2018

(2)

PRISCILLA DORADO GAERTNER ALONZO

IMPLEMENTAÇÃO, SIMULAÇÃO E VERIFICAÇÃO FORMAL DE

UM AGENTE RACIONAL CONDUTOR DE UM VEÍCULO

AUTÔNOMO

Trabalho de Conclusão de Curso apresentado como requisito parcial à obtenção do título de Bacharel em Ciência da Computação, do Departamento Acadêmico de Informática, da Universidade Tecnológica Federal do Paraná.

Orientador: Prof. MSc. Geraldo Ranthum Coorientador: Prof. Dr. Gleifer Vaz Alves

PONTA GROSSA 2018

(3)

Diretoria de Graduação e Educação Profissional Departamento Acadêmico de Informática Bacharelado em Ciência da Computação

TERMO DE APROVAÇÃO

IMPLEMENTAÇÃO, SIMULAÇÃO E VERIFICAÇÃO FORMAL DE UM AGENTE RACIONAL CONDUTOR DE UM VEÍCULO AUTÔNOMO

por

CARLOS EDUARDO ABADE

Este Trabalho de Conclusão de Curso (TCC) foi apresentado em 20 de Junho de 2018 como requisito parcial para a obtenção do título de Bacharel em Ciência da Computação. O candidato foi arguido pela Banca Examinadora composta pelos professores abaixo assinados. Após deliberação, a Banca Examinadora considerou o trabalho aprovado.

__________________________________ Prof. MSc. Geraldo Ranthum

Orientador

___________________________________ Prof(a). Dra. Helyane Bronoski Borges

Membro titular

___________________________________ Prof. Dr. Andre Pinz Borges

Membro titular

________________________________ Prof(a). Dra. Helyane Bronoski Borges Responsável pelo Trabalho de Conclusão de

Curso

_____________________________ Prof. MSc. Saulo Jorge Beltrão de Queiroz

(4)

Câmpus Ponta Grossa

Diretoria de Graduação e Educação Profissional Departamento Acadêmico de Informática Bacharelado em Ciência da Computação

TERMO DE APROVAÇÃO

IMPLEMENTAÇÃO, SIMULAÇÃO E VERIFICAÇÃO FORMAL DE UM AGENTE RACIONAL CONDUTOR DE UM VEÍCULO AUTÔNOMO

por

PRISCILLA DORADO GAERTNER ALONZO

Este Trabalho de Conclusão de Curso (TCC) foi apresentado em 20 de Junho de 2018 como requisito parcial para a obtenção do título de Bacharel em Ciência da Computação. A candidata foi arguida pela Banca Examinadora composta pelos professores abaixo assinados. Após deliberação, a Banca Examinadora considerou o trabalho aprovado.

__________________________________ Prof. MSc. Geraldo Ranthum

Orientador

___________________________________ Prof(a). Dra. Helyane Bronoski Borges

Membro titular

___________________________________ Prof. Dr. Andre Pinz Borges

Membro titular

________________________________ Prof(a). Dra. Helyane Bronoski Borges Responsável pelo Trabalho de Conclusão de

Curso

_____________________________ Prof. MSc. Saulo Jorge Beltrão de Queiroz

(5)

ABADE, Carlos Eduardo, ALONZO, Priscilla Dorado Gaertner. Implementação, simulação

e verificação formal de um agente racional condutor de um veículo autônomo. 2018. 128

f. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná. Ponta Grossa, 2018.

Tecnologias autônomas vem sendo implementadas para aumentar a segurança nos veículos. A redução no número de fatalidades devido a essas tecnologias abrem novas oportunidades para melhoria do tráfego urbano. Veículos autônomos serão uma realidade em um futuro não muito distante auxiliando nessa melhoria e gerando novos modelos de mobilidade, pois são capazes de serem controlado sem intervenção humana. O controlador de um veículo autônomo cuida de vários elementos no qual a condução está inclusa. Apesar de ser uma tecnologia promissora, testes onde o controlador assumia a condução total do veículo causaram acidentes levando ao cancelamento temporário de alguns projetos na área. Para que os veículos autônomos possam re-almente ajudar na melhoria do tráfego e diminuir a quantidade de acidentes no trânsito é preciso garantir que seu funcionamento está correto, de acordo com a implementação do controlador, e buscar mapear e solucionar cenários críticos não pensados durante a programação do sistema. Para isso técnicas de simulação e verificação formal são utilizadas gerando novos conhecimen-tos sobre esta tecnologia e corrigindo erros que, em testes urbanos, seriam fatais. Neste trabalho um agente racional é modelado como condutor de um veículo autônomo em um ambiente onde deverá realizar ações quanto ao desvio de obstáculos, obedecer a regra de não ultrapassar um se-máforo no estado vermelho e aguardar a travessia de um pedestre na faixa de pedestres. Para isso a implementação foi feita com uso da linguagem Gwendolen para agentes racionais. O ambiente, desenvolvido em Java, é simulado a fim de reconhecer as escolhas do agente durante sua rota. O simulador utilizado é uma melhoria de um sistema desenvolvido para a simulação específica de um ambiente em Gwendolen. A linguagem Gwendolen é utilizada porque permite verificar formalmente o comportamento de um determinado agente usando o framework MCAPL. Em um trabalho anterior, um agente racional foi implementado e formalmente verificado usando o algoritmo MCAPL, Gwendolen e Java. Neste trabalho foi desenvolvido um novo ambiente simu-lado buscando modelar o comportamento de um agente em um ambiente mais próximo de um tráfego urbano real usando pistas, semáforos e pedestres. Como resultado, este trabalho mostra que é possível modelar, implementar e verificar formalmente um agente racional como condutor de um veículo autônomo usando o framework MCAPL, Gwendolen e Java.

(6)

ABADE, Carlos Eduardo, ALONZO, Priscilla Dorado Gaertner. Implementation, simulation

and formal verification of a rational agent as a driver on an autonomous vehicle. 2018.

128 p. Work of Conclusion Course (Master Degree in Computer Science) - Federal University of Technology - Paraná. Ponta Grossa, 2018.

Autonomous technology has been implemented to increase the vehicles’ safety. The reduction in the numbers of fatalities due to these technologies opens new opportunities for improvement of the urban traffic. Autonomous vehicles will be a reality soon, aiding in this improvement and generating new movability models, since it is able to be controlled without no human interven-tion. The autonomous vehicle’s controller takes care of several elements which the conduction is included. Despite of being a promising technology, tests where the controller assumed the total conduction of the vehicle caused accidents leading to temporary cancelling of some projects in the area. In order to autonomous vehicle could really help in the improvement of the traffic and diminish the quantity of accidents in the transit, it is needed to assure that its operation is correct according to the implementation of the controller, and seek to map and solve critical scenarios unthought during the system’s programming. For that, simulation techniques and formal verifi-cation are used, creating new knowledge about this technology and checking errors that, in urban tests, would be fatal. In this work, a rational agent is modeled as an autonomous vehicle’s driver in an environment where it should perform actions related to obstacles’ detour, obey the rule of not go over the traffic light when the same is red, and wait the crossing of some pedestrian on the crosswalk. For this, the implementation was made through the language Gwendolen for rational agents. The environment, developed in Java, is simulated in order to acknowledge the agent’s choices during its route. The used simulator is an improvement of a system developed to the specific simulation of an environment in Gwendolen. We have used Gwendolen because it allows one to formal verify the behaviour of a given agent using MCAPL framework. On a previous work a rational agent has been implemented and formal verified using algo MCAPL, Gwendolen and Java. Here we have create a new simulated environment trying to model the behaviour of an agent in an environment closer to a real urban traffic by using lanes, traffic lights, and pedestrians. As a result, our work shows that it is possible to model, implement and formal verify a rational agent as a driver on an autonomous vehicle using MCAPL framework, Gwendolen and Java.

(7)

Figura 1 – SAE: táxi ... 16

Figura 2 – SAE: tráfego urbano ... 16

Figura 3 – Sensores da plataforma DRIVE AV - NVIDIA ... 20

Figura 4 – Arquitetura funcional do sistema para veículos autônomos ... 21

Figura 5 – Situações críticas de um veículo autônomo ... 22

Figura 6 – Veículo autônomo - Udacity ... 23

Figura 7 – Sistema de reconhecimento de gestos - Apple ... 24

Figura 8 – Sistema de reconhecimento de gestos - Apple ... 25

Figura 9 – Uber ATC car ... 25

Figura 10 – Mini van Chrysler Pacifica Hybrid ... 26

Figura 11 – Desvio de um ciclista com Waymo ... 27

Figura 12 – Pacote de hardware do Autopilot ... 28

Figura 13 – Interação de um agente com o ambiente... 31

Figura 14 – Interação de um agente no contexto de veículos autônomos ... 32

Figura 15 – Interação de um agente reativo com o ambiente ... 33

Figura 16 – Representação do raciocínio meio-e-fim em agentes de raciocínio prático .. 35

Figura 17 – Interação de um agente híbrido com o ambiente ... 35

Figura 18 – Representação do controle de fluxo horizontal e vertical em agentes híbridos .36 Figura 19 – Diagrama genérico do modelo BDI ... 38

Figura 20 – Ciclo de raciocínio em Gwendolen ... 40

Figura 21 – Espectro de técnicas de verificação ... 44

Figura 22 – Esquema da verificação de um sistema ... 45

Figura 23 – Visão esquemática do model checking ... 47

Figura 24 – Abordagens para Model Checking de linguagens de programação de agentes 48 Figura 25 – Operadores da lógica temporal linear ... 49

Figura 26 – Ferramentas utilizadas no trabalho ... 51

Figura 27 – Diagrama de Classes do SAE: tráfego urbano ... 54

Figura 28 – Diagrama de Sequência: Comunicação Ambiente-Simulador ... 55

Figura 29 – Tela inicial do simulador ... 57

Figura 30 – Exemplo de execução do sistema com sensores habilitados ... 57

Figura 31 – Exemplo de execução do sistema com sensores desabilitados ... 58

Figura 32 – Exemplos de execução do sistema ... 58

Figura 33 – Obstáculo do simulador ... 59

Figura 34 – Diferentes estados do semáforo ... 59

Figura 35 – Diferentes estados do pedestre ... 61

Figura 36 – Diferentes vizualizações do VA ... 63

Figura 37 – Diagrama de Sequência do método runTime() ... 66

Figura 38 – Diagrama de Sequência do método aroundTrafficLight() ... 68

Figura 39 – Fragmento do Diagrama de Sequência do método aroundCar() ... 70

Figura 40 – Diagrama de Sequência do método aroundCrosswalk() ... 72

Figura 41 – Fragmento do Diagrama de Sequência referente a detecção de obstáculos pelo wide sensor ... 74

Figura 42 – Fragmento do Diagrama de Sequência referente a detecção de semáforos e faixa de pedestres ... 75

Figura 43 – Diagrama de Sequência da troca de faixa pela esquerda ... 78

(8)

Figura 47 – Cenário 01 ... 88

Figura 48 – Cenário 02 ... 88

Figura 49 – Cenário 03 ... 89

(9)

Quadro 1 – Escopo do trabalho ... 17

Quadro 2 – Relação entre AOP e OOP ... 39

Quadro 3 – Exemplo de estrutura da intenção "limpar um quarto" em Gwendolen ... 42

Quadro 4 – Exemplo de estrutura da intenção "limpar um quarto" estendida ... 42

Quadro 5 – Comparativo entre simulação e verificação formal ... 45

Quadro 6 – Distribuição dos planos do agente implementado ... 81

(10)

Código 1 – Exemplo básico de um agente em Gwendolen ... 42

Código 2 – Exemplo básico de um agente robô em Gwendolen ... 43

Código 3 – Exemplo de um agente robô em Gwendolen ... 44

Código 4 – Loop principal do simulador ... 56

Código 5 – Método checkState() do TrafficLight.java ... 60

Código 6 – Método addtTime() do TrafficLight.java ... 60

Código 7 – Método addtTime() do Pedestrian.java ... 61

Código 8 – Método checkState() do Pedestrian.java ... 62

Código 9 – Função que inicia simulador junto ao construtor do ambiente ... 64

Código 10 – Informando ao agente que o sistema foi iniciado... 65

Código 11 – Método runTime() ... 66

Código 12 – Método aroundTrafficLight() ... 67

Código 13 – Fragmento do método aroundCar() ... 69

Código 14 – Método aroundCrosswalk() ... 71

Código 15 – Fragmento do método check_env() para encontrar obstáculos ... 73

Código 16 – Fragmento do método check_env() para encontrar semáforo e faixa de pedestres ... 74

Código 17 – Troca de faixa para a pista da esquerda ... 77

Código 18 – Troca de faixa para a pista da direita ... 77

Código 19 – Ações para acelerar o veículo ... 79

Código 20 – Arquivo de configuração AIL ... 80

Código 21 – Arquivo de configuração MCAPL ... 81

Código 22 – Início da execução do agente ... 82

Código 23 – Término da execução do agente ... 82

Código 24 – Plano para acelerar o veículo ... 83

Código 25 – Plano para trafegar em velocidade constante ... 83

Código 26 – Planos caso haja uma faixa de pedestre ... 84

Código 27 – Planos caso haja um semáforo ... 85

Código 28 – Planos caso haja três obstáculos próximos ... 86

Código 29 – Arquivo de configuração do AJPF... 90

(11)

ABS Antilock Brake System

AGV Veículo de condução automática AIL Agent Infrastructure Layer

AJPF Agent JPF

AOP Programação Orientada a Agentes

AVIA Autonomous Vehicles with Intelligents Agents BDI Belief, Desire and Intention

CNI Confederação Nacional da Indústria CPU Central Processing Unit

IDE Integrated Development Environment GPAS Grupo de Pesquisa em Agentes de Software

JPF Java PathFinder

LTL Lógica Temporal Linear

MCAPL Model Checking Agent Programming Languages OOP Programação Orientada a Objetos

RAM Random Access Memory

SAE Simulated Automotive Environment

(12)

1 INTRODUÇÃO . . . 12 1.1 OBJETIVOS . . . 14 1.1.1 Objetivo Geral . . . 14 1.1.2 Objetivos Específicos. . . 14 1.2 JUSTIFICATIVA . . . 15 1.3 DELIMITAÇÕES DO TRABALHO . . . 15 1.4 ORGANIZAÇÃO DO TRABALHO. . . 18 2 VEÍCULOS AUTÔNOMOS . . . 19

2.1 SIMULAÇÃO E VERIFICAÇÃO DE VEíCULOS AUTÔNOMOS . . . 21

2.2 PRINCIPAIS PROJETOS DA ÁREA . . . 23

2.2.1 Carro autônomo de código aberto - Udacity . . . 23

2.2.2 Projeto Titan - Apple . . . 24

2.2.3 Uber ATC car - Uber . . . 25

2.2.4 Waymo - Google . . . 26 2.2.5 Autopilot - Tesla . . . 27 2.3 CONSIDERAÇÕES FINAIS . . . 29 3 AGENTES INTELIGENTES . . . 30 3.1 AGENTES . . . 30 3.2 CLASSIFICAÇÃO DE AGENTES . . . 32 3.2.1 Agente Reativo. . . 32 3.2.2 Agentes Racionais . . . 33 3.2.3 Agentes Híbridos . . . 35 3.3 AGENTES BDI . . . 36

3.4 LINGUAGENS DE PROGRAMAÇÃO DE AGENTES . . . 39

3.4.1 Gwendolen . . . 40

3.4.2 Exemplos de agentes em Gwendolen . . . 42

3.5 VERIFICAÇÃO FORMAL DE AGENTES . . . 44

3.6 MODEL CHECKING AGENT PROGRAMMING LANGUAGES . . . 47

3.6.1 Agent Infrastructure Layer . . . 47

3.6.2 Agent JPF . . . 48 3.7 CONSIDERAÇÕES FINAIS . . . 49 4 DESENVOLVIMENTO . . . 51 4.1 AMBIENTE DE SIMULAÇÃO . . . 51 4.1.1 Simulador . . . 55 4.1.1.1 Obstáculos . . . 58 4.1.1.2 Semáforo . . . 59 4.1.1.3 Faixa de pedestre . . . 60 4.1.1.4 Veículo Autônomo . . . 62 4.1.2 Ambiente . . . 63 4.1.2.1 Método 𝑟𝑢𝑛𝑇 𝑖𝑚𝑒() . . . 65 4.1.2.2 Método 𝑎𝑟𝑜𝑢𝑛𝑑𝑇 𝑟𝑎𝑓 𝑓 𝑖𝑐𝐿𝑖𝑔ℎ𝑡() . . . 66 4.1.2.3 Método 𝑎𝑟𝑜𝑢𝑛𝑑𝐶𝑎𝑟() . . . 69 4.1.2.4 Método 𝑎𝑟𝑜𝑢𝑛𝑑𝐶𝑟𝑜𝑠𝑠𝑤𝑎𝑙𝑘() . . . 71 4.1.2.5 Método 𝑐ℎ𝑒𝑐𝑘_𝑒𝑛𝑣() . . . 73

4.1.2.6 Ações para troca de faixa. . . 76

(13)

4.2.1 Implementação do Agente em Gwendolen . . . 81

4.2.2 Executando SAE - tráfego urbano . . . 86

4.2.3 Verificação Formal do agente implementado . . . 87

4.3 VERIFICAÇÃO FORMAL DO DESVIO PELA ESQUERDA . . . 90

4.4 VERIFICAÇÃO FORMAL DA AÇÃO AO DETECTAR UM OBSTÁCULO . . . 92

4.5 VERIFICAÇÃO FORMAL DO DESVIO PELA DIREITA . . . 93

4.6 VERIFICAÇÃO FORMAL DA AÇÃO AO DETECTAR TRÊS OBSTÁCULOS . . . . 93

4.7 VERIFICAÇÃO FORMAL DA AÇÃO AO DETECTAR UM SEMÁFORO 01 . . . 93

4.8 VERIFICAÇÃO FORMAL DA AÇÃO AO DETECTAR UM SEMÁFORO 02 . . . 94

4.9 VERIFICAÇÃO FORMAL DA AÇÃO AO DETECTAR UM PEDESTRE ATRA-VESSANDO A FAIXA . . . 94

4.10 VERIFICAÇÃO FORMAL DA VELOCIDADE . . . 94

5 CONCLUSÃO . . . 96

5.1 TRABALHO FUTUROS. . . 97

REFERÊNCIAS . . . 99

APÊNDICE A - Log da verificação formal do desvio pela esquerda . . . 105

APÊNDICE B - Log da verificação formal da ação ao detectar um obstáculo . . . 107

APÊNDICE C - Log da verificação formal do desvio pela direita . . . 110

APÊNDICE D - Log da verificação formal da ação ao detectar três obstáculos . . . 113

APÊNDICE E - Log da verificação formal da ação ao detectar um semáforo 01 . . . 116

APÊNDICE F - Log da verificação formal da ação ao detectar um semáforo 02 . . . 119

APÊNDICE G - Log da verificação formal da ação ao detectar um pedestre atraves-sando a faixa . . . 123

(14)

1 INTRODUÇÃO

Os custos de congestionamento somaram quase US$ 300 bilhões para os motoristas norte-americanos em 2016. Um morador de Los Angeles, por exemplo, gasta em média 104 horas por ano em congestionamentos, liderando a posição de cidades mais congestionadas do mundo. São Paulo encontra-se em 6o lugar, com 77 horas (INRIX, 2017). De acordo com a Confederação Nacional da Indústria (CNI) “a dificuldade para se locomover está no topo dos problemas urbanos vividos nas grandes cidades brasileiras” (FIEB, 2012).

Esses problemas tendem a aumentar pois o número de veículos vem crescendo. Em 2004 havia um automóvel para cada 7,4 pessoas. Essa proporção passou para um a cada 4,4 pessoas em 2014, totalizando 45,2 milhões de automóveis registrados no Brasil (REIS, 2014). Esse crescimento faz com que a emissão de Dióxido de Carbono (CO2) aumente todo ano, assim como os congestionamentos e acidentes no trânsito.

Uma possível solução para esses problemas são os veículos autônomos. A substituição de um quarto dos veículos atuais por veículos autônomos poderia diminuir significativamente o número de acidentes no trânsito (GILLIN, 2016). Isso ocorre devido ao cuidado em programar um software que, na tomada de decisão, evite situações perigosas. É possível que acidentes no trânsito se tornem raros tendo, como consequência, uma diminuição nos gastos atrelados a eles (TITLOW, 2015).

Uma vez que acidentes se tornem raros, os fabricantes conseguirão diminuir o peso dos veículos com a remoção de equipamentos como, por exemplo, freio ABS, Airbags e vidros lami-nados (WORLAND, 2016). Segundo Brodbeck (2014) "A cada 100 quilos de redução de peso de um automóvel, cerca de 400 a 900 litros de combustível podem ser economizados durante todo o ciclo de vida do veículo". Além disso, os carros poderiam ser programados para executar a rota com a melhor eficiência de gasolina disponível (WORLAND, 2016).

Além destas, veículos autônomos também trazem novas possibilidades:

∙ Diferentes modelos de mobilidade: em um cenário onde não será necessário apren-der a dirigir (ou mesmo comprar um carro), apenas se utilizará um serviço de trans-porte que o levará ao destino desejado. Este e outros modelos são as expectativas para a implantação de veículos autônomos em larga escala (BERTONCELLO; WEE, 2015);

∙ Aceleração no desenvolvimento de robôs: Reconhecimento de Imagens e Inteligên-cia ArtifiInteligên-cial são dois pilares importantes para o desenvolvimento de veículos autô-nomos. Tais áreas podem fazer parte do desenvolvimento de robôs fazendo com que o investimento em uma tecnologia contribua para outra. Também será possível compartilhar a infraestrutura que os veículos autônomos trarão, como: estações de recarga, empresa de reparo, entre outras (BERTONCELLO; WEE, 2015);

(15)

estruturados mudaria completamente. Os passageiros são deixados na frente do es-tabelecimento e o veículo autônomo dirigirá sozinho até o estacionamento (BER-TONCELLO; WEE, 2015);

∙ Crescimento do mercado de entretenimento: Sem a necessidade de dirigir o auto-móvel, o passageiro terá tempo para fazer outras atividades durante a viagem como: trabalhar, estudar, assistir filmes, conectar-se em redes sociais, entre outras (FRAGA; CARVALHO, 2016).

Silberg et al. (2012) afirmam que uma revolução na indústria automobilística está pres-tes a acontecer pelo advento dos veículos autônomos. A ênfase dada a essa tecnologia fez com que, em setembro de 2015, houvessem 25 empresas trabalhando com veículos autônomos. Em novembro de 2016 esse número aumentou para 33 empresas (CBINSIGHTS, 2016) e em maio de 2017 um novo levantamento listou 44 empresas desenvolvendo projetos na área (CBINSIGHTS, 2017). As que se destacam são: Apple, Uber, Google e Tesla (FRAGA; CARVALHO, 2016).

Um veículo autônomo é capaz de tomar decisões em um perímetro urbano ou rodovia utilizando algoritmos e softwares na condução do veículo. Seus softwares controlam diversos elementos, entre eles: rede, visão computacional, reconhecimento de objetos, sensores, con-dução, troca (e/ou cruzamento) de vias e ainda tomada de decisão. Dentre esses componentes desenvolvidos por software, alguns como: condução, planejamento, troca de vias e tomada de decisão podem ser representados por meio de uma arquitetura de agentes racionais. “Um agente racional é aquele que age para alcançar o melhor resultado ou, quando há incerteza, o melhor resultado esperado” (RUSSELL; NORVIG, 2004).

O agente está inserido em um ambiente (WOOLDRIDGE, 2009) que pode ser simu-lado, assim como a sua tomada de decisão. Isso faz com que a implementação e o comportamento possam ser observados e avaliados, mas para assegurar o funcionamento do sistema é necessá-ria uma verificação formal. A verificação formal baseia-se na lógica matemática e analisa se o sistema atende seus requisitos e especificações (BAIER; KATOEN; LARSEN, 2008).

O presente trabalho propõe a implementação de um agente racional condutor de um veículo autônomo. O sistema é desenvolvido por meio da linguagem de programação Gwendolen projetada para agentes racionais, que permite o uso do framework MCAPL (Model Checking

Agent Programming Languages) onde é possível definir um ambiente em Java no qual o agente estará inserido para tomar decisões sobre a condução (DENNIS; FARWER, 2008).

Fazem parte desse framework o AIL (Agent Infrastructure Layer), que possibilita a programação em diferentes linguagens de programação de agentes e o AJPF (Agent Java

Path-Finder) para verificação formal do sistema. A escolha da linguagem Gwendolen foi feita por permitir a verificação formal dos programas desenvolvidos através do AJPF.A simulação do sis-tema será feita com a ferramenta SAE: tráfego urbano, apresentada e desenvolvida neste trabalho fazendo parte das ferramentas do projeto AVIA.

(16)

agentes inteligentes na representação de veículos autônomos. No momento a principal ferra-menta do AVIA é o SAE (Simulated Automotive Environment). A primeira versão da ferraferra-menta é o SAE: táxi, a qual lida com rotas de um táxi, desvio de obstáculos estáticos e níveis de coli-são quando há obstáculos inevitáveis (FERNANDES, 2017). O trabalho aqui apresentando visa criar uma nova versão da ferramenta: SAE: tráfego urbano, onde um agente racional representa a condução de um veículo autônomo com a implementação básica de sensores em um ambiente urbano com faixas, troca de faixas, semáforos, pedestres, bem como outros veículos.

Após a implementação do agente as simulações permitirão observar os comportamen-tos além de construir novos conhecimencomportamen-tos sobre veículos autônomos. A etapa de verificação formal permite validar a tomada de decisão do agente racional considerando o ambiente urbano do simulador.

1.1 OBJETIVOS

Este trabalho deve cumprir o objetivo geral e os objetivos específicos descritos a seguir.

1.1.1 Objetivo Geral

Implementar, simular e verificar formalmente um agente racional condutor de um veí-culo autônomo.

1.1.2 Objetivos Específicos

Os objetivos específicos deste trabalho são:

∙ Implementar um agente racional como condutor de um veículo autônomo por meio da linguagem Gwendolen;

∙ Desenvolver a ferramenta SAE: tráfego urbano com um ambiente contendo faixas, troca de faixas, semáforos, pedestres, outros veículos e valores proporcionais a rea-lidade, para simular as ações do agente;

(17)

1.2 JUSTIFICATIVA

Tecnologias autônomas já foram ou estão sendo implementadas para aumentar a segu-rança nos veículos e vem apresentando resultados positivos. Lembretes inteligentes de cinto de segurança, por exemplo, contribuíram para uma redução de cerca de 20% no número de mortes no trânsito (PEDEN et al., 2004). Silberg et al. (2012) afirma que os veículos autônomos serão uma realidade em um futuro não muito distante.

Um relatório detalhando dados sobre o projeto de condução autônoma Waymo da Goo-gle foi disponibilizado no início de 2017 pelo Departamento de Veículos Motorizados da Califór-nia. De acordo com o relatório, a necessidade de intervenção humana na condução do veículo em situações críticas, como colisões iminentes, vêm diminuindo (SCHONBERGER, 2017). Nesse cenário de aumento da autonomia do veículo é necessário que o mesmo funcione corretamente, o que significa agir conforme a sua implementação. Para analisar se o sistema corresponde a suas especificações ele deve ser verificado formalmente.

Este trabalho propõe implementar um agente racional como condutor de um veículo autônomo, bem como fazer a simulação e verificação formal do mesmo. Com os resultados obtidos, será possível contribuir com o projeto AVIA (Autonomous Vehicles with Intelligents

Agents) do câmpus Ponta Grossa da UTFPR, que realiza estudos sobre veículos autônomos com a abordagem de agentes inteligentes. Este trabalho busca acrescentar informações aos resultados obtidos em trabalhos anteriores do projeto, construindo novos conhecimentos na área de veículos autônomos.

1.3 DELIMITAÇÕES DO TRABALHO

Este trabalho é uma continuidade de estudos realizados no grupo de pesquisa AVIA da UTFPR câmpus Ponta Grossa. O trabalho de Fernandes (2017) apresenta a ferramenta SAE: táxi, Figura 1, desenvolvida inicialmente para representar o comportamento de um agente racional na condução de um táxi capaz de desviar obstáculos e tentar minimizar os danos quando uma colisão é inevitável.

(18)

Figura 1 – SAE: táxi

Fonte: Fernandes (2017)

A segunda versão da ferramenta: SAE: tráfego urbano é apresentada neste trabalho, Fi-gura 2, onde um agente racional condutor de um veículo autônomo está em um ambiente urbano com faixas, troca de faixas, semáforos, pedestres, bem como outros veículos. Valores reais foram aplicados na ferramenta nas dimensões do carro, sensores e pistas. Com essas mudanças, novos planos do agente foram criados para regra de parar no sinal vermelho do semáforo, desviar de obstáculos estáticos e pedestres.

Figura 2 – SAE: tráfego urbano

Fonte: Autoria própria

O trabalho de Fernandes (2017) concluía que, a partir dos resultados obtidos, trabalhos futuros poderiam acrescentar:

(19)

1. Expansão dos cenários de atuação do agente implementado;

2. Simulação de cenários reais do tráfego e ajustar o simulador para representá-los; 3. Adaptação do AJPF para outras linguagens de agentes em Java para o uso da

veri-ficação formal;

4. Extensão do simulador para lidar com obstáculos dinâmicos;

5. Extensão do simulador para lidar com veículos trafegando em faixas; 6. Verificação formal de obstáculos dinâmicos;

7. Integração do Gwendolen e do ambiente Java com outros tipos de simuladores, específicos para simulação veicular;

8. Criação de um sistema multiagente onde veículos autônomos cooperem entre si; As sugestões 1, 2 e 5 fazem parte do escopo deste trabalho. O Quadro 1 apresenta as principais diferenças entre as duas versões da ferramenta.

Quadro 1 – Escopo do trabalho

Escopo SAE: táxi SAE: tráfego urbano

Agentes Racionais SIM SIM Verificação Formal SIM SIM Veículos Autônomos SIM SIM Simulação SIM SIM Planos para desvio de obstáculos estáticos SIM SIM Planos para colisões inevitáveis SIM NÃO Aplicação de valores reais na simulação NÃO SIM Implementação de um semáforo NÃO SIM Implementação de uma faixa de pedestre NÃO SIM

Fonte: Autoria própria

É esperado que, na condução do veículo, o agente seja capaz de desviar de obstáculos na pista, obedecer a regra de não ultrapassar o sinal amarelo ou vermelho do semáforo e, ao perceber um pedestre atravessando a faixa de pedestre, aguardar sua travessia. A fim de esclarecer possíveis ambiguidades no sistema, os seguintes itens devem ser considerados:

1. No início de sua execução, o agente não possui nenhuma crença sobre o ambiente; 2. Por padrão, um conjunto de obstáculos que deverão ser ultrapassados é gerado

ale-atoriamente no início de cada execução do sistema.

3. Os obstáculos são estáticos e não possuem diferenças entre si;

4. O semáforo e a faixa de pedestre foram iniciados em uma posição específica no sistema;

5. O pedestre foi programado para realizar a travessia na faixa de pedestre;

6. Um pedestre que realiza a travessia fora da faixa de pedestre não é percebido pelo sistema;

7. O agente pode executar desvios pela direita ou pela esquerda, aguardar a mudança de estado de um elemento para prosseguir o trajeto, acelerar e parar o veículo; 8. O trabalho não contém estudos ou implementação prática de velocidade e

(20)

A fim de definir a ferramenta SAE: tráfego urbano, vale esclarecer que o ambiente desenvolvido é uma matriz onde cada posição representa dez centímetros da realidade e possui:

∙ Um veículo autônomo controlado pelo agente, descrito no Capítulo 4;

∙ Implementação básica de dois sensores para detecção dos elementos do ambiente; ∙ Uma pista com duas faixas de mão única onde o veículo autônomo irá trafegar; ∙ Um semáforo iniciado em uma posição fixa;

∙ Uma faixa de pedestre iniciada em uma posição fixa;

∙ Um pedestre iniciado em uma posição fixa referente ao meio da faixa de pedestres; ∙ Um conjunto de obstáculos, de tamanho mínimo 1 e máximo 50, iniciados em uma

posição aleatória.

1.4 ORGANIZAÇÃO DO TRABALHO

A estrutura deste trabalho consiste em cinco capítulos. No Capítulo 2 são apresentados conceitos relacionados a veículos autônomos e as principais empresas desenvolvendo projetos na área. Definições sobre agentes, linguagens de programação orientadas a agentes e verificação formal são apresentados no Capítulo 3. Na sequência, o Capítulo 4 apresenta o desenvolvimento deste trabalho. Por fim o Capítulo 5 trata sobre as conclusões e resultados obtidos.

(21)

2 VEÍCULOS AUTÔNOMOS

Este Capítulo aborda os principais conceitos na área de veículos autônomos como: definição, níveis de autonomia e arquiteturas de software e hardware para desenvolvimento dessa tecnologia. A Seção 2.1 aborda a importância da simulação e verificação formal do sistema desenvolvido para utilização nesse tipo de veículo e os principais projetos sendo desenvolvidos na área são apresentados na Seção 2.2. A Seção 2.3 resume dos conceitos apresentados quais foram utilizados no trabalho desenvolvido.

Um veículo com autonomia é capaz de tomar decisões na sua condução sem intervenção humana (OZGUNER; ACARMAN; REDMILL, 2011).

Então, um veículo de condução automática ou AGV (Automated Guided

Vehi-cle) pode ser definido como um sistema capaz de movimentar-se através de um ambiente dependente apenas de sua capacidade de interpretar o mundo que o cerca e agir de acordo para alcançar seu destino.

(VANCIN, 2016)

A autonomia de um veículo pode variar de dispositivos de segurança inteligentes até a condução completa. A NHTSA (National Highway Traffic Safety Administration) classificou a autonomia de veículos em cinco níveis (ADMINISTRATION et al., 2013):

∙ Nível 0: sem autonomia. O condutor humano possui o controle completo e exclusivo além de ser o responsável por monitorar e analisar o ambiente e garantir a operação segura do veículo;

∙ Nível 1: autonomia específica de funções. O veículo possui uma ou mais funções automatizadas e independentes entre si. O condutor possui o controle total do veículo e pode permitir que as funções autônomas disponíveis operem ou não. A operação segura do veículo é de responsabilidade do motorista;

∙ Nível 2: autonomia combinada de funções. Deve haver pelo menos duas funções autônomas projetadas para trabalharem em conjunto. O motorista humano e o au-tomóvel compartilham a direção do veículo e a operação segura do veículo é de responsabilidade do motorista;

∙ Nível 3: autonomia de direção limitada. O motorista humano pode ceder o controle total das funcionalidades ao veículo, mas a operação segura do veículo é de respon-sabilidade do motorista;

∙ Nível 4: autonomia de direção total. O veículo executa todas as funções na condução e monitora o ambiente sem necessidade de um motorista humano podendo, inclu-sive, fazer a direção enquanto estiver desocupado. A operação segura do veículo é de responsabilidade de seu sistema autônomo.

Surmenok (2018) explica a complexidade de construir um veículo autônomo de nível quatro pois ele é responsável pela segurança tanto dos possíveis passageiros quanto dos

(22)

ele-mentos externos ao carro que compõem o ambiente no qual está inserido. O fundador e diretor executivo da NVIDIA, Jensen Huang, afirmou que "A segurança é a característica mais impor-tante de um carro autônomo. É imperativo que ele funcione com segurança, mesmo quando as coisas dão errado". A empresa então anunciou uma arquitetura denominada NVIDIA DRIVE afirmando garantir essa segurança (NVIDIA, 2018).

Entre as plataformas desta arquitetura está o DRIVE AV que consiste em um sistema composto por vários elementos, como RADAR, LIDAR e câmeras, conforme a Figura 3.

Figura 3 – Sensores da plataforma DRIVE AV - NVIDIA

Fonte: Surmenok (2018)

DRIVE AV é capaz de executar funções como ego-motion (para estimar a posição de elementos em movimento em relação a componentes estáticos do ambiente), percepção, locali-zação e planejamento do trajeto. Para isso utiliza algoritmos de aprendizagem e visão computa-cional com informações obtidas por sensores como radar, lidar e câmeras de alta definição com o objetivo de obter um veículo de autonomia total (NVIDIA, 2018).

Neste ponto o que é esperado que um veículo com o mais alto nível de autonomia con-siga alcançar é "o melhor de um computador, que é capaz de processar grandes quantidades de dados, e a capacidade humana de ser adaptável em um ambiente novo ou conhecido"(PULLEN, 2015). O DRIVE AV vem como uma plataforma para obtenção e processamento dos dados ne-cessários na tomada de decisão que torna o veículo capaz de ser adaptável ao meio.

Para utilizar, tratar e tomar decisões com as informações obtidas do ambiente, Ulbrich

et al. (2017) propuseram uma arquitetura funcional de um sistema para veículos autônomos. Essa arquitetura é exemplificada na Figura 4.

(23)

Figura 4 – Arquitetura funcional do sistema para veículos autônomos

Fonte: Adaptado de Ulbrich et al. (2017)

As informações obtidas pelos sensores servem como entrada para os subsistemas de localização e ambiente e percepções. Na localização (primeiro subsistema) são tratadas as infor-mações sobre a localização do caminho (estrada, rua, entre outros) em que o veículo se encontra e sobre a faixa específica onde trafega.

O ambiente e percepções (segundo subsistema) modela o ambiente no nível do caminho onde o veículo está localizado. Ele infere conhecimentos sobre o estado atual do veículo no ambiente e trata informações sobre o fluxo do tráfego e topologia da estrada, por exemplo.

Os dois subsistemas trocam informações entre si para atualização do estado atual do veículo e ambiente, porém, é no segundo subsistema que as informações específicas para to-mada de decisão são obtidas de forma mais detalhada, pois utiliza as informações do primeiro subsistema e acrescenta novas percepções.

O terceiro subsistema é o planejamento e controle. Ele possui como entrada as infor-mações do ambiente e percepções e, a partir desses conhecimentos, planeja trajetórias e decide sobre a navegação e guia do veículo. É nessa etapa que o sistema avalia a situação do ambi-ente, planeja o comportamento do veículo e a ação a ser feita no cruzamento ou mudança de faixa, na condução ou estacionamento e envia as decisões aos atuadores (os componentes que concretizam a ação no ambiente).

A área de estudo deste trabalho é o subsistema de planejamento e controle e engloba partes da condução, cruzamento e mudança de faixa. A escolha veio por tratar-se da implemen-tação de um agente racional condutor de um veículo autônomo que irá tomar decisões baseadas no estado atual do veículo e do ambiente e enviar as ações a serem executadas pelos atuadores. Assume-se que as informações obtidas pelos sensores estão tratadas e modeladas (o que faz parte do primeiro e segundo subsistema) e servem como entrada para o agente proposto.

2.1 SIMULAÇÃO E VERIFICAÇÃO DE VEÍCULOS AUTÔNOMOS

Existem discussões envolvendo veículos autônomos que tratam do dilema ético no qual sua utilização em larga escala está envolvida. Trata-se de situações onde o veículo precisa decidir

(24)

uma de ao menos duas situações críticas, conforme a Figura 5. Figura 5 – Situações críticas de um veículo autônomo

Fonte: Rodrigues (2017)

São três situações em que o veículo precisa decidir entre:

a) manter sua rota e atingir vários pedestres ou desviar e atingir apenas um pedestre; b) manter sua rota e atingir um pedestre ou efetuar um desvio potencialmente fatal

para seus passageiros;

c) manter sua rota e atingir vários pedestres ou efetuar um desvio potencialmente fatal para seus passageiros;

Estando em uma velocidade que impossibilite ao veículo parar antes de causar um aci-dente, ele deverá tomar uma decisão rapidamente que irá depender de sua programação e dos conhecimentos que possui sobre o ambiente. Após sua inserção na sociedade, um veículo autô-nomo pode se deparar com situações, como exemplificadas, ou outras não previstas em sua pro-gramação, podendo agir de forma incoerente e inesperada (RODRIGUES, 2017). A segurança é fundamental para a utilização e aceitação dessa tecnologia na sociedade, sendo necessário en-contrar e corrigir situações críticas para diminuir sua ocorrência durante a condução do veículo. Os métodos utilizados para verificar se o sistema age de forma coerente, encontrar e observar cenários de risco geralmente envolvem quantidades substanciais de simulações e testes (CAMPBELL et al., 2010). O projeto Waymo utiliza simulação para aprendizagem e observação do comportamento de seus veículos possuindo mais de 4,3 bilhões de quilômetros percorridos em simulações virtuais (FITZSIMMONS, 2018), sendo essa uma forma de verificar de o sistema age de forma coerente.

A simulação é eficaz para observar o comportamento de um sistema autônomo em um subconjunto finito de cenários, podendo desconsiderar situações críticas não simuladas. Para aumentar a confiança no sistema é necessária uma verificação formal do mesmo, pois por meio da exaustão (capacidade de observar todos os cenários de entrada possíveis) garante o funcio-namento do sistema de acordo com sua programação. Detalhes sobre as técnicas citadas serão descritas no capítulo 3.

(25)

2.2 PRINCIPAIS PROJETOS DA ÁREA

A CB Insights é uma plataforma de inteligência de mercado que identificou 44 empre-sas desenvolvendo projetos sobre veículos autônomos em maio de 2017 (CBINSIGHTS, 2017). Entre as principais estão a Apple, Uber, Google e Tesla. Além das empresas com projetos comer-ciais, a Udacity iniciou em 2016 o desenvolvimento de um veículo autônomo de código aberto. Equipes ou indivíduos resolvem problemas propostos e a solução pode ser aceita para execução em um veículo real (UDACITY, 2016).

2.2.1 Carro autônomo de código aberto - Udacity

O projeto, iniciado em 2016, conta com um carro Lincoln MKZ 2016 conforme a Figura 6. Foram instalados sensores e peças para o funcionamento autônomo do veículo e lançados desafios onde a comunidade pode contribuir na resolução. O objetivo é alcançar o nível quatro de autonomia (CAMERON, 2016e).

Figura 6 – Veículo autônomo - Udacity

Fonte: Cameron (2016e)

A empresa afirma que a segurança é a prioridade absoluta nesse projeto e, para que isso ocorra, subdividiram o problema, justificando a criação dos desafios lançados. Cada parte visa otimizar a segurança e as contribuições mais eficazes podem ser executadas no veículo. Já foram lançados quatro desafios:

1. Modelo 3D para montagem de câmera: projetar a montagem do suporte para câmera padrão GoPro, pois os suportes convencionais não são estáveis em ambientes irre-gulares e imprevisíveis, podendo afetar as imagens recebidas (CAMERON, 2016a). 2. Uso de Deep Learning para prever ângulos de direção: usar imagens da câmera do para-brisa para prever o ângulo de direção apropriado usando redes neurais e Deep

(26)

Learning(CAMERON, 2016b).

3. Localização baseada em imagens: utilizar processamento de imagens em tempo real para comparar com conhecimentos anteriores da mesma área e obter a localização baseada em pontos de referência (CAMERON, 2016c).

4. Painel de controle para carro com motorista autônomo: a construção de um painel para o carro autônomo. O veículo foi equipado com um tablet Android que executará o aplicativo Android para controlar e monitorar as principais funções (CAMERON, 2016d).

O projeto possui um repositório no GitHub com últimas atualizações realizadas em abril de 2018 (UDACITY, 2018).

2.2.2 Projeto Titan - Apple

O projeto Titan, anunciado em 2015, visava um veículo elétrico avançado. Em 2016 o projeto passou a priorizar o desenvolvimento de um sistema de direção autônoma (CBIN-SIGHTS, 2017). A empresa vêm solicitando patentes de sistemas de reconhecimento de gestos tanto dos passageiros do veículo quanto dos pedestres que desviam do tráfego (OWEN, 2018).

Figura 7 – Sistema de reconhecimento de gestos - Apple

Fonte: Owen (2018)

A Figura 7 representa parte do sistema de reconhecimento de gestos que possui uma área de interação onde o passageiro pode selecionar ações do veículo com poses e movimentos específicos da mão e do dedo (OWEN, 2018).

(27)

Figura 8 – Sistema de reconhecimento de gestos - Apple

Fonte: Owen (2018)

Tratando do reconhecimento de gestos de pedestres a Figura 8 ilustra como sensores externos do veículo autônomo podem detectar a presença de um pedestre direcionando o transito para reconhecer o gesto que está sendo executado. A partir do reconhecimento do comando uma ação poderia ser tomada e, além disso, a informação poderia ser transmitida aos veículos próximos para ajustes de rota e desvios (OWEN, 2018).

2.2.3 Uber ATC car - Uber

Inicialmente o centro de tecnologias avançadas (ATC) do Uber em Pittsburgh na Pen-silvânia realizava testes na área com uma frota de veículos autônomos. Em 2015 a frota incluía vinte Ford Fusion (JOHNSON, 2018), entre eles o veículo exibido na Figura 9, trafegando au-tonomamente pelas ruas de Pittsburgh (UBER, 2016).

Figura 9 – Uber ATC car

Fonte: Uber (2016)

O veículo coletava dados de mapeamento por meio de sensores incluindo radares,

(28)

do Uber era composta de duzentas minivans automatizadas e vinte e quatro mil veículos uti-litários esportivos comprados da empresa Volvo. Em seus testes era verificada a habilidade de condução em modo autônomo (autonomia nível quatro) e foram percorridas mais de um mi-lhão e meio de quilômetros em quatro cidades (Tempe, São Francisco, Pittsburgh e Toronto) (JOHNSON, 2018).

Em 2017 ocorreram alguns acidentes envolvendo veículos autônomos do Uber, mas as causas encontradas foram erros humanos (JOHNSON, 2018). Entre os acidentes envolvendo os testes da Uber está o do veículo autônomo que tombou devido a uma colisão com outro no qual o motorista humano não cedeu o direito de passagem (G1, 2017).

O primeiro acidente fatal envolvendo um veículo autônomo em modo autônomo ocor-reu em março de 2018, quando um pedestre que caminhava fora da faixa foi atingido. Devido a isso a empresa suspendeu os testes públicos de direção autônoma nas quatro cidades onde atuava sem previsão de retorno (JOHNSON, 2018).

2.2.4 Waymo - Google

O projeto da Google começou em 2009 como Google Self-Driving Car Project e se tornou o Waymo em 2016. Na Figura 10 a mini van Chrysler Pacifica Hybrid, projetada com a finalidade de autonomia nível quatro, foi adicionada à frota de veículos da Waymo (GOOGLE, 2017).

Figura 10 – Mini van Chrysler Pacifica Hybrid

Fonte: Google (2017)

Os veículos são projetados e programados para detecção precisa de elementos externos a uma distância de até dois campos de futebol em todas as direções. As informações obtidas são utilizadas para seguir um ciclo de pensamento. Para explicar o ciclo de pensamento do software a empresa utiliza um exemplo de desvio de ciclista, ilustrado na Figura 11.

(29)

Figura 11 – Desvio de um ciclista com Waymo

Fonte: Google (2017)

Ao trafegar em uma pista é detectado um ciclista estendendo o braço esquerdo. O sis-tema prevê que o ciclista irá se mover para o lado esquerdo da pista e cede espaço para que ele se movimente com segurança à frente do veículo. Basicamente o sistema detecta e prevê comportamentos externos para tomar decisões (GOOGLE, 2017).

A frota da Waymo é composta por seiscentas minivans. Em sua expansão a empresa anunciou adicionar vinte mil I-Paces (primeiro carro elétrico da empresa Jaguar), que serão construídos nos dois primeiros anos de produção do veículo, e milhares de minivans compradas da Fiat Chrysler Automobiles (FITZSIMMONS, 2018).

Em testes em vias públicas foram percorridos mais de nove milhões de quilômetros em vinte e cinco cidades dos Estados Unidos. Em testes virtuais, o sistema já percorreu mais de 4,3 bilhões de quilômetros (FITZSIMMONS, 2018).

Na conferência anual Google I/O a empresa Waymo anunciou novos avanços em detec-ção de pedestres com execudetec-ção em tempo real independente das condições climáticas (GREENE, 2018). Tais avanços vem cumprindo com a missão da empresa de tornar a tecnologia autônoma segura e, com o aumento da frota, dirigir cerca de um milhão de viagens por dia (GOOGLE, 2017).

2.2.5 Autopilot - Tesla

O Autopilot possui um pacote de hardware capaz de habilitar capacidades de condução autônoma nível quatro nos veículos da Tesla (CBINSIGHTS, 2017). As informações recebidas pelo hardware são utilizadas por um pacote de ferramentas denominado Tesla Vision, que faz o processamento das imagens com Redes Neurais. Os resultados obtidos são utilizados pelo piloto automático que faz a condução do veículo (TESLA, 2018).

(30)

Exibido na Figura 12, o pacote de hardware é composto por: seis câmeras diferentes, sensor ultrassônico ao redor do veículo e um radar frontal necessários para a condução autônoma.

Figura 12 – Pacote de hardware do Autopilot

Fonte: Tesla (2018)

Cada elemento do pacote Autopilot possui uma função (TESLA, 2018):

∙ Wide Forward Camera: captura os semáforos, obstáculos e objetos a uma distância máxima de 60 metros;

∙ Main Forward Camera: utilizada em um amplo espectro de casos de uso detecta a uma distância máxima de 150 metros;

∙ Narrow Forward Camera: fornece uma visão focada de longo alcance a uma distân-cia de 250 metros;

∙ Forward Looking Side Cameras: para detecção de carros que entrem inesperada-mente na pista do veículo e auxílio em cruzamentos com visibilidade limitada; ∙ Rearward Looking Side Cameras: monitoram pontos cegos traseiros em ambos os

lados do carro;

∙ Rear View Camera: utilizada em manobras complexas de estacionamento;

∙ Radar: com comprimento de onda que passa através do nevoeiro, poeira, chuva, neve e sob os carros, o radar atua na detecção de objetos a frente do veículo; ∙ Ultrasonic Sensors: utilizados para detectar carros próximos e fornecer orientação

durante o estacionamento.

Apesar da possibilidade de habilitar o nível quatro de autonomia e empresa afirma que o "motorista é responsável por permanecer alerta e ativo ao utilizar o Autopilot e deve estar preparado para agir a qualquer momento"(TESLA, 2018). Desta forma, os veículos Tesla com

(31)

2.3 CONSIDERAÇÕES FINAIS

Este trabalho visa apresentar um veículo autônomo de nível 4 de autonomia. A área de estudo deste trabalho é o subsistema de planejamento e controle e engloba partes da condução e mudança de faixa. A escolha veio por tratar-se da implementação de um agente racional condutor que irá tomar decisões baseadas no estado atual do carro e ambiente e enviar as ações a serem executadas pelo veículo autônomo. Assume-se que as informações obtidas pelos sensores estão tratadas e modeladas (o que faz parte do primeiro e segundo subsistema) e servem como entrada para o agente proposto.

Para isso foi feita a implementação básica de dois sensores: Ultrasonic Sensor e Wide

Forward Cameraconforme disponibilizado pelo projeto Autopilot da Tesla na Seção 2.2.5. Esses sensores não tratam ou modelam as informações, pois em sua implementação não há reconhe-cimento de imagen. Eles apenas detectam elementos do ambiente e enviam as percepções para o agente tomar uma decisão quanto a condução do veículo.

O projeto Autopilot disponibiliza informações de alcance e aplicação dos sensores que foram utilizadas como referência na construção do ambiente e simulador do SAE: tráfego ur-bano. Vale ressaltar que não há qualquer tentativa de simular o modelo Tesla, apenas os dados disponibilizados pela empresa são utilizados como referência de um valor usado na realidade.

(32)

3 AGENTES INTELIGENTES

Este Capítulo trata do conceito de agentes, Seção 3.1, bem como linguagens para sua implementação, Seção 3.4. A Seção 3.2 apresenta uma maneira de classificá-los e a Seção 3.3 trata do agente racional no modelo BDI utilizado no desenvolvimento. Tópicos sobre verificação formal são abordados na Seção 3.5, mais especificamente o framework MACPL, Seção 3.6, aplicado neste trabalho. Por fim um resumo dos conceitos apresentados é apresentado na Seção 3.7.

Um veículo autônomo é definido no Capítulo 2, mas, para os propósitos deste capítulo, é possível dizer sucintamente que ele é capaz de tomar decisões para que a sua condução alcance um objetivo como, por exemplo, chegar no destino esperado, estacionar, fazer um cruzamento, trocar de faixa ou desviar de um obstáculo.

O processo de tomada de decisão é controlado por um software que pode ser implemen-tado utilizando uma arquitetura de Agentes Inteligentes. De acordo com Wooldridge (2009) um agente é um sistema de computador capaz de agir em nome de seu usuário. Aplicando essa defi-nição ao contexto de veículos autônomos pode-se afirmar que o agente, no processo de tomada de decisão, irá realizar ações para alcançar os objetivos propostos por seu usuário, no lugar do motorista humano que faria a condução do veículo.

Este capítulo tem como objetivo discutir conceitos como: agentes e suas possíveis clas-sificações, a arquitetura BDI (Belief, Desire and Intention) e formas de implementação para compreensão de como um agente inteligente pode ser utilizado neste contexto.

3.1 AGENTES

Segundo Russell e Norvig (2004) um agente é algo que executa uma ou mais ações. Ele é capaz de perceber o ambiente que se encontra por meio de sensores e agir no ambiente utilizando atuadores. O verbo perceber significa "adquirir, por meio dos sentidos, conhecimento de" (FIGUEIREDO et al., 1913). Na Figura 13 os sensores seriam os sentidos que permitem ao agente adquirir percepções sobre o ambiente.

(33)

Figura 13 – Interação de um agente com o ambiente

Fonte: Adaptado de Russell e Norvig (2004)

A partir das percepções adquiridas é possível ao agente tomar uma decisão. A esco-lha de ação desse agente pode depender do seu histórico de percepções (RUSSELL; NORVIG, 2004). Tomada uma decisão com base neste histórico uma ação será executada no ambiente.

Ferber (1999) afirma que o agente é uma espécie de "organismo vivo" e seu comporta-mento pode ser resumido em comunicação, atuação e, talvez, reprodução, para satisfazer as suas necessidades e atingir os seus objetivos. Wooldridge e Jennings (1995) definem um agente como um sistema computacional situado em um ambiente capaz de agir no ambiente para atingir seus objetivos. De maneira geral, os autores listam tipos de capacidades que pode-se esperar de um agente para ser considerado inteligente:

∙ Habilidade social: interagir com outros agentes (incluindo humanos) a fim de satis-fazer os seus objetivos;

∙ Reatividade: perceber e reagir a mudanças no ambiente para satisfazer o seu obje-tivo;

(34)

Figura 14 – Interação de um agente no contexto de veículos autônomos

Fonte: Autoria própria

Na Figura 14 há um exemplo de interação com o ambiente de um software implemen-tado em um veículo autônomo com uma arquitetura de agentes. Marcados com (1) estão possíveis percepções captadas por sensores (2). Essas percepções são processadas pelo agente implemen-tado (3) que irá tomar uma decisão da ação a ser executada pelos atuadores (as rodas do veículo (4), por exemplo).

A literatura atual não contém uma definição universal de agentes, mas existe consenso em dizer que autonomia é a noção central desse tema. Um agente com autonomia é uma enti-dade possível de delegar objetivos para que ela decida como alcançá-los. Essa entienti-dade não é autônoma como um ser humano, pois não pode escolher quais objetivos deseja alcançar, mas possui a habilidade de decidir como agir para alcançá-los (WOOLDRIDGE, 2009).

3.2 CLASSIFICAÇÃO DE AGENTES

Wooldridge (2009) categoriza três tipos de agentes: reativos, racionais e híbridos que se diferem na maneira que o agente irá tomar uma decisão.

3.2.1 Agente Reativo

Agentes reativos baseiam-se apenas no presente para tomar uma decisão (WOOL-DRIDGE, 2009). Eles não consideram um histórico de percepções, agem com base na percep-ção atual que possuem (RUSSELL; NORVIG, 2004). Esses agentes podem reagir a estímulos

(35)

externos, como ligar o para-brisa ao detectar chuva, ou ainda motivados por uma necessidade interna, como manter o nível de energia (FERBER, 1999).

Esse agente é exemplificado na Figura 15. Ele percebe o ambiente por meio dos sensores e, a partir de sua percepção atual, escolhe uma ação a ser executada por seus atuadores. Russel e Norvig 2004 descrevem como exemplo um motorista de táxi automatizado que, ao perceber que o carro da frente está freando através das luzes de freio acesas, começa a frear também. Há um processamento que leva a percepção "o carro da frente está freando" à ação de "começar a frear". Essa conexão é chamada pelo autor de regra condição-ação: se

carro-da-frente-está-freando então começar-a-frear.

Figura 15 – Interação de um agente reativo com o ambiente

Fonte: Adaptado de Russell e Norvig (2004)

A regra condição-ação faz com que o agente reaja às suas percepções de forma sim-ples, assim como um reflexo. Wooldridge (2009) afirma que a simplicidade é uma vantagem desse agente, mas é difícil ver como melhorar o seu desempenho ao longo do tempo por não ser projetado para aprender considerando seu histórico de percepções.

Sobre as limitações, de acordo com Russell e Norvig (2004), há uma inteligência limi-tada nesse tipo de agente pois ele irá funcionar se a decisão correta puder ser tomada a partir da percepção atual. Utilizando o exemplo do motorista de táxi automatizado: a regra de frenagem funciona caso o carro da frente possua uma luz de freio. Caso o veículo não possua tal configura-ção o agente reativo poderá nunca frear, mesmo que haja a necessidade de tal aconfigura-ção (RUSSELL; NORVIG, 2004).

3.2.2 Agentes Racionais

Um agente racional1"é aquele que age para alcançar o melhor resultado ou, quando há incerteza, o melhor resultado esperado" (RUSSELL; NORVIG, 2004). Racionalidade é diferente 1 Racional também pode ser apresentado com outros termos, tais como: Intencional, Cognitivo e Deliberativo.

(36)

de perfeição. Sendo o agente perfeito ele realiza o que viria a ser a melhor opção após o fato ocorrer, em outras palavras, ele poderia prever, com total certeza, a melhor opção - o que é impossível na realidade. A racionalidade permite que o agente escolha a melhor opção com base na sequência de percepções que ele possui até o momento. O exemplo a seguir mostra uma escolha imperfeita porém racional:

Considere o exemplo a seguir: estou caminhando nos Champs Elysées e de re-pente vejo um velho amigo do outro lado da rua. Não existe nenhum tráfego perto e não tenho nenhum outro compromisso; assim, sendo racional, começo a atravessar a rua. Enquanto isso, a 10.000 metros de altura, a porta do compar-timento de carga se solta de um avião e, antes de chegar ao outro lado da rua, sou atingido. Foi irracional atravessar a rua?

(RUSSELL; NORVIG, 2004)

O autor acrescenta a necessidade de analisar quatro fatores para afirmar a racionalidade do agente em qualquer instante:

∙ A medida de desempenho que define o critério de sucesso; ∙ O conhecimento prévio que o agente tem do ambiente; ∙ As ações que o agente pode executar;

∙ A sequência de percepções do agente até o momento.

A necessidade de avaliar os quatro fatores existe porque um agente é considerado ra-cional de acordo com a medida de desempenho definida, o conhecimento prévio que possui, as ações possíveis e sua sequência de percepções, mas pode deixar de sê-lo se esses fatores forem alterados.

Para Wooldridge (2009) há agentes de raciocínio dedutivo e agentes de raciocínio prá-tico. Nos dois casos existe uma representação simbólica do ambiente e do comportamento de-sejado. O primeiro possui representações simbólicas na forma de fórmulas lógicas baseadas na lógica de primeira ordem e tomam as decisões a partir de provas. O segundo tipo de agente possui o raciocínio dirigido às ações conhecido como raciocínio prático.

O raciocínio prático é uma questão de ponderar sobre interesses conflitantes, a favor e contra demais opções, onde os interesses relevantes são fornecidos pelo que o agente deseja / valoriza / preocupa-se, e nas crenças do agente.

(BRATMAN, 1990)

O raciocínio prático é constituído por, pelo menos, duas etapas. A primeira chamada de deliberação, que envolve a decisão de quais objetivos serão alcançados e o raciocínio meio-e-fim envolvendo a decisão de como os objetivos serão alcançados. Esse raciocínio é exemplificado na Figura 16.

(37)

Figura 16 – Representação do raciocínio meio-e-fim em agentes de raciocínio prático

Fonte: Adaptado de Wooldridge (2009)

Na maioria dos casos do mundo real as decisões não são tomadas baseadas em infe-rências lógicas, por isso os agentes de raciocínio prático se aproximam do que parece acontecer enquanto uma pessoa está decidindo o que fazer (WOOLDRIDGE, 2009).

3.2.3 Agentes Híbridos

Pesquisadores propuseram um agente cuja abordagem não fosse completamente reativa ou racional para tomar uma decisão (WOOLDRIDGE; JENNINGS, 1995). Esse agente é deno-minado de agente híbrido e é capaz de agir tanto racional quanto reativamente dependendo da necessidade de acordo com sua percepção do ambiente.

Figura 17 – Interação de um agente híbrido com o ambiente

(38)

Na Figura 17 o agente híbrido percebe o ambiente e processa suas percepções através de módulos (cognitivo e reativo). Esses módulos são organizados em camadas, conforme a Figura 18, para definir qual terá o controle das ações do agente em determinado momento (CAMPOS, 2007). A escolha de qual camada usar depende do tipo de controle de fluxo adotado na arquitetura em camadas.

Wooldridge (2009) lista dois tipos de controle de fluxo: horizontal e vertical. O tipo horizontal (Figura 18 (a)) possui cada uma de suas camadas diretamente conectadas aos sensores que captam a percepção de um lado e, do outro, conectadas aos atuadores. O tipo vertical (Figura 18 (b) e (c)) possui no máximo uma camada conectada aos sensores e atuadores. Cada uma delas atua como um agente que produz sugestões sobre a ação a ser executada.

Figura 18 – Representação do controle de fluxo horizontal e vertical em agentes híbridos

Fonte: Adaptado de Wooldridge (2009)

O autor acrescenta que a arquitetura horizontal tem como vantagem a simplicidade con-ceitual, pois se for preciso que o agente possua n tipos de comportamentos basta implementar n camadas diferentes. O problema está no fato das camadas serem concorrentes e há possibilidade de gerarem um comportamento final incoerente.

Na arquitetura vertical a entrada de uma camada é a saída da camada anterior e esse processo não é tolerante a falhas, pois um erro em qualquer parte do fluxo pode ser passado adiante e trazer consequências no desempenho do agente.

3.3 AGENTES BDI

Os agentes racionais de raciocínio prático, descritos anteriormente, geralmente fazem uso do pressuposto de que "o comportamento é entendido pela atribuição de atitudes como cren-ças, desejos, intenções e assim por diante. O comportamento humano pode ser pensado como decorrente da interação de tais atitudes"(JENNINGS; SYCARA; WOOLDRIDGE, 1998).

Originalmente proposto por Bratman (1987), o modelo BDI (Belief, Desire and

Inten-tion) faz parte das arquiteturas baseadas em estados mentais (RAO; WOOLDRIDGE, 1999). Ele combina três elementos distintos (HOEK; WOOLDRIDGE, 2003):

(39)

∙ Fundamento filosófico: baseia-se em uma teoria de ação racional dos seres humanos; ∙ Arquitetura de software: não prescreve uma implementação específica;

∙ Formalização lógica: tem seus principais aspectos na forma de um conjunto de axi-omas lógicos.

O modelo é composto por crenças, as informações que o agente possui sobre o ambi-ente. Elas podem ser incorretas ou desatualizadas, pois uma ação do próprio agente ou alterações do meio que ainda não foram captadas pelos sensores geram incoerência. Os desejos são todos os possíveis estados que o agente gostaria de realizar. As intenções são os estados que o agente decidiu trabalhar (BORDINI; HÜBNER; WOOLDRIDGE, 2007).

O seguinte cenário adaptado de Percival (2014) ajudará na compreensão desses concei-tos: Um aluno universitário se encontra no final de sua graduação e enfrenta a seguinte escolha: passar a noite em uma festa ou ir à biblioteca e continuar com o trabalho de conclusão de curso em que estava trabalhando. O aluno tem um forte desejo de ir à festa já que vem escrevendo muito, por outro lado, tem um prazo importante para entrega do seu trabalho.

Qualquer que seja a decisão tomada o aluno entrará em um novo tipo de estado adotando um determinado tipo de atitude em relação ao seu próprio futuro. Este é o estado de intenção, onde o agente aluno se compromete em continuar o trabalho ou ir à festa. Suas crenças podem ser: estou prestes a me formar, estou cansado, posso continuar o trabalho de conclusão de curso e posso ir à festa. Seu desejo viria a ser terminar a graduação. Em um cenário ideal, o agente escolhe intenções, ou seja, se compromete com ações que o faça alcançar seus desejos.

Percival (2014) então conclui que "enquanto o objetivo da crença é o conhecimento, o objetivo da intenção é o autocontrole, ou determinar o que se fará no futuro. (...) é uma espécie de disposição - a disposição de um agente para perseguir um objetivo" (PERCIVAL, 2014).

(40)

Figura 19 – Diagrama genérico do modelo BDI

Fonte: Adaptado de Wooldridge (1999)

Na Figura 19 as etapas genéricas do modelo BDI são ilustradas e podem ser descritas da seguinte maneira (WOOLDRIDGE, 1999):

∙ BRF: uma função de revisão de crença (do inglês: Belief Revision Function) que recebe as crenças atuais do agente juntamente com as novas percepções recebidas pelos sensores e determina um novo conjunto de crenças;

∙ Crenças: um conjunto de crenças atuais que representam as informações que o agente possui sobre o ambiente. As crenças servem como uma das entradas do filtro para auxiliar no processo de deliberação;

∙ Gerador de opções: determina os desejos com base nas crenças e intenções atuais; ∙ Desejos: um conjunto de desejos atuais, representando possíveis cursos de ações

disponíveis para o agente;

∙ Filtro: representa o processo de deliberação do agente e determina as novas intenções com base nas suas crenças, desejos e intenções atuais;

∙ Intenções: um conjunto de intenções atuais, representando o foco atual do agente. As intenções servem como uma das entradas do filtro para auxiliar no processo de

(41)

Quadro 2 – Relação entre AOP e OOP

Característica OOP AOP

Unidade Básica Objeto Agente Parâmetros que definem o estado da

unidade básica

Sem restrições Crenças, desejos, intenções ... Processo de Computação Passagem de mensagens e métodos

de resposta

Passagem de mensagens e métodos de resposta

Tipos de mensagens Sem restrições Informar, solicitar, oferecer, prome-ter, recusar ...

Restrições sobre métodos Nenhum Honestidade, consistência ...

Fonte: Adaptado de Shoham (1993)

deliberação e também do gerador de opções, para determinar os desejos do agente; ∙ Ação: determina uma ação a executar com base nas intenções atuais.

3.4 LINGUAGENS DE PROGRAMAÇÃO DE AGENTES

Shoham (1993) propôs um paradigma chamado AOP (Programação Orientada a Agen-tes, do inglês: Agent Oriented Programming) que pode ser visto como uma especialização da Programação Orientada a Objetos (OOP, do inglês: Object-Oriented Programming). O Quadro 2 mostra a relação entre AOP e OOP:

Exemplos de linguagens que fazem parte do paradigma AOP e sua descrição são apre-sentadas por Bordini e Vieira (2003):

∙ AgentSpeak(L): inspirada na arquitetura BDI com sintaxe baseada em LISP (RAO, 1996);

∙ AgentTalk e 3APL: inspiradas no AgentSpeak(L) (HINDRIKS et al., 1997); ∙ Dribble: entende a linguagem 3APL com a noção de objetivos declarativos

(RIEMS-DIJK; HOEK; MEYER, 2003);

∙ Concurrent MetateM: a proposta inicial era que um agente fosse executado direta-mente de uma especificação em lógica temporal de tempo linear (FISHER, 1994); ∙ STAPLE: baseada na teoria de intenções conjuntas (KUMAR; COHEN; HUBER,

2002);

∙ Plataforma IMPACT: baseada em lógica deôntica (SUBRAHMANIAN, 2000); ∙ Congolog: baseada em cálculo de situações (GIACOMO; LESPÉRANCE;

LEVES-QUE, 2000);

∙ MINERVA: baseada em programação em lógica dinâmica (LEITE; ALFERES; PE-REIRA, 2001);

∙ Cálculo Ψ: outra abordagem BDI que possui o objetivo de dar suporte teórico para linguagens de programação visuais (KINNY, 2001);

∙ JAM (HUBER, 1999) e JACKL (HOWDEN et al., 2001): plataformas JAVA para desenvolvimento de agentes BDI.

(42)

Após o trabalho de Bordini e Vieira (2003) no ano de 2012 Dennis et al. acrescentaram seis linguagens desenvolvidas particularmente para a programação de agentes racionais. São elas: Jason (BORDINI; HÜBNER; WOOLDRIDGE, 2007), Jadex (POKAHR; BRAUBACH; LAMERSDORF, 2005), GOAL (HINDRIKS et al., 2000), CAN (WINIKOFF et al., 2002), SA-APL (WINIKOFF, 2007) e Gwendolen (DENNIS; FARWER, 2008).

3.4.1 Gwendolen

A linguagem de programação Gwendolen foi pensada para agentes racionais do mo-delo BDI (DENNIS; FARWER, 2008). Derivada do Java, é a primeira linguagem implementada na Camada de Infraestrutura de Agentes (AIL) (DENNIS; FISHER, 2016). O ciclo geral de raciocínio em Gwendolen é ilustrado na Figura 20.

O ciclo começa em (A) onde uma intenção é selecionada. Caso não haja uma, o am-biente é analisado para receber novas percepções ou mensagens que são processadas em (F) podendo gerar novas intenções. Selecionada uma intenção, planos são gerados para alcançá-la em (B) e em (C) um desses planos é selecionado para em (D) executar a tarefa no topo do plano.

Figura 20 – Ciclo de raciocínio em Gwendolen

Fonte: Adaptado de Dennis e Fisher (2016)

As propriedades da linguagem Gwendolen que representam as crenças, desejos e in-tenções são definidas como:

∙ Crenças: podem ser adquiridas por percepções do ambiente ou por deliberação. As crenças são predicados, por exemplo, rubble(5, 5) indicando que há sujeira na coor-denada (5,5). Para adicionar uma crença o predicado deve ser precedido pelo símbolo

Referências

Documentos relacionados

Outra classificação dos miomas submucosos é a classificação STEPW, que não só classifica o mioma em relação ao útero, mas também identifica o grau de dificuldade da cirurgia e

This study showed that the Brazilian European Health Literacy survey, HLS-EU-BR, could differentiate the health literacy levels of a diversified sample of higher education (university

As participantes não tiveram benefícios diretos, no entanto, suas entrevistas contribuíram para o melhor conhecimento do significado da dor do parto, o que pode

TcMICU2 está localizada na mitocôndria, assim como demonstrado na co-localização com anticorpo contra os canais aniônicos dependentes de voltagem (VDAC), que

No Quadro 21 apresenta-se a oportunidade de melhoria do Processo de gestão e melhoria contínua, ao nível do Princípio 10 da Qualidade - «Melhoria contínua», que se deve

No presente estudo se verificou que o modelo animal e as condições experimentais se mostraram adequadas para a caracterização dos efeitos dos extratos testados sobre a microdureza