Você está na página 1de 17

Departamento de Engenharia Civil

DESENVOLVIMENTO DE UM APLICATIVO DESKTOP PARA


UM SISTEMA DE MANUTENÇÃO DE PONTES DE AÇO BASEADO
EM MÚLTIPLAS LINGUAGENS DE PROGRAMAÇÃO
Aluno: Gabriel Vieira Santos
Orientadora: Elisa Dominguez Sotelino

1. Introdução

A preservação de pontes é um tópico de recorrência devido à grande degradação ambiental


proveniente dos processos de extração e fabricação dos materiais que as compõem. Logo,
prolongar a vida útil dessas pontes é uma meta primordial no que tange à sustentabilidade.
Diante desse panorama surge a necessidade de confecção de ferramentas que viabilizem
uma gestão mais eficiente das atividades de restauração e manutenção das pontes. No Brasil
essa gestão é feita com baixo planejamento e critérios que garantam a aceitabilidade de uma
vistoria, portanto uma aplicação capaz de auxiliar na tomada de decisões em relação à
manutenção e reabilitação para garantir as condições de serviço e funcionalidade dos mesmos
é de grande notoriedade.
A simulação do comportamento dessas estruturas pelo Método de Elementos Finitos
(MEF) permite a criação de um banco de dados com modelos validados em estudos anteriores
e que, devido à grande quantidade de dados e à variabilidade de fatores que afetam a resposta
da estrutura quanto à fadiga durante seu funcionamento, a modelagem numérica torna a
interpretação de resultados de simulações atividades complexas e demasiadamente
especializadas. Essas atividades podem ser simplificadas através da utilização de ferramentas
da Inteligência Artificial (IA), pois estas, quando devidamente treinadas, conseguem prever o
comportamento sem a necessidade de realizar simulações complexas. A proposta de um sistema
de gestão de pontes realizada por QUEIROZ (2020) [1] tomou como base esses métodos de
implementação computacional para, em conjunto com um modelo proposto de confiabilidade
estrutural, predizer o tempo de vida útil de pontes em vigas de aço biapoiadas.
Com a utilização de linguagens de programação que otimizam os processos de
Aprendizado de Máquina (Machine Learning) como Python e linguagens/tecnologias de
desenvolvimento para criação de interfaces gráficas modernas como HTML, CSS e Javascript
é possível realizar a confecção de um aplicativo que proporcione um sistema de gerenciamento
eficiente para pontes que atendam as condições estabelecidas na pesquisa de referência.
Departamento de Engenharia Civil

2. Objetivos

O objetivo deste trabalho é o desenvolvimento de um aplicativo com a utilização de


múltiplas linguagens de programação e de tecnologias de desenvolvimento web (Python,
HTML, CSS e Javascript) que simplifiquem a experiência do usuário que deseja utilizar o
sistema de manutenção de pontes em vigas de aço biapoiadas proposto [1]. Logo, a interface
gráfica elaborada buscou reproduzir um ambiente de interação moderno e eficiente dentro
daquilo que se propõe: receber os dados de entrada por parte do usuário, com os parâmetros
geométricos e dos materiais de pontes de aço entregar resultados baseados em elementos
gráficos e textuais que expressam o tempo de vida útil estimado dessa ponte de maneira clara.

3. Metodologia

Para simular diferentes combinações de dados geométricos e de materiais de pontes de


aço, o sistema se baseou em um banco de dados criado a partir de um modelo de elementos
finitos (MEF) que avaliam as tensões unitárias (a carga do trem-tipo da AASHTO 2012 foi
normalizada nessa análise inicial) atuantes na ligação entre a alma e solda da mesa inferior das
vigas das pontes modeladas, ponto este de interesse na análise por fadiga. Os modelos em MEF
foram validados a partir de um modelo em escala real de uma ponte projetada na Universidade
de Nebraska, EUA, e foram dimensionados seguindo as verificações dos critérios da AASHTO
(2012). O banco de dados foi abastecido com 6120 modelos de pontes ao final.
A seguir, o banco de dados criado foi utilizado para elaborar um modelo de Rede Neural
Artificial (RNA) capaz de prever o comportamento da ponte (lê-se resposta da tensão unitária)
mediante diferentes configurações inseridas pelo usuário, dispensando a necessidade de se
realizar uma nova modelagem em elementos finitos. Essa é uma abordagem que visou
simplificar uma etapa imprescindível do sistema já que dispensa a realização de simulações
computacionais numéricas complexas. Por último, um modelo baseado na confiabilidade
estrutural, ou seja, na probabilidade da ocorrência da falha estrutural (nesse caso de 2,3%),
avaliou os efeitos dos fenômenos da fadiga e corrosão atuando concomitantemente e, de acordo
com as características do tráfego e do ambiente locais, propôs um sistema de manutenção de
pontes de aço [1]. Esse sistema foi posteriormente convertido no algoritmo principal do
aplicativo desenvolvido, conforme será explicitado no decorrer deste capítulo.
O fluxograma que representa o funcionamento do sistema de manutenção de pontes de
aço é apresentado na Figura 1.

2
Departamento de Engenharia Civil

Figura 1 – Fluxograma do sistema de manutenção de pontes de aço.


Fonte: QUEIROZ (2020) [1]

3.1.Estrutura de dados

Existem diversas opções para a criação de interfaces gráficas para usuários (graphical
user interface ou GUI) com Python, mas interligar um servidor Python com um cliente
JavaScript (JS) atráves de uma GUI HTML, CSS e JS e com isso poder usufruir das vantagens
do Bootstrap (um framework front-end grátis que conta com uma variedade de plugins, temas
e bibliotecas para um desenvolvimento web mais rápido é fácil), por exemplo, geralmente
requer demasiado esforço. Para aplicações sofisticadas, Electron é uma boa opção. Ele é um
framework para criação de multiplataformas com aplicações nativas de tecnologias web como
3
Departamento de Engenharia Civil

JS, HTML e CSS que possibilita criar menus nativos, notificações, atualizações automáticas no
aplicativo desenvolvido, depuração e criação de perfil com o depurador Chromium (não
necessita de ter o Chrome instalado), utilização do nodejs e o grande repositório npm, que tem
ao alcance dezenas de milhares de plugins, além de outras diversas vantagens. É basicamente
um template que funciona criando um servidor web interno com a utilização de uma GUI em
tecnologia web como front-end se comunicando com o script Python como back-end. O
cefpython é um equivalente ao Electron, sendo ambos projetos de código aberto.
Contudo, para aplicações de uso mais restrito e de menor complexidade, como a proposta
desse trabalho, a escolha pelo framework Eel foi vista como a mais adequada (embora não tão
completo como o Electron ou o cefpython). O Eel hospeda um servidor web local com a
renderização em um navegador (nesse projeto foi adotado como o Google Chrome) previamente
instalado pelo usuário e, em seguida, permite anotar funções no Python que possam ser
chamadas a partir do JS e vice-versa [2]. Com isso, as melhores bibliotecas de processamento
numérico e matemático do Python são combinadas com as melhores bibliotecas de visualização
em JS devido ao facilitador de troca de dados proporcionado pelo Eel. A estrutura de dados
base para sua aplicação no projeto é apresentada na Figura 2.

Figura 2 – Estrutura de dados do aplicativo baseado no framework Eel.


4
Departamento de Engenharia Civil

3.2.Front-end

A interface gráfica do aplicativo foi baseada no uso das tecnologias de desenvolvimento


web HTML e CSS conjuntamente com a linguagem JS. Como usual no desenvolvimento web,
os scripts em HTML foram os responsáveis pela estrutura dos elementos gráficos (abas, botões,
tabelas, entradas de dados, etc), o CSS pela estilização (alinhamento, tamanhos, fontes, dentre
outras implementações de design) e o JS pela adição de mais funcionalidades (outras animações
adicionais) e pelo armazenamento e troca, com o Python, dos dados de entrada. O framework
Bootstrap e, naturalmente, alguns recursos da biblioteca JQuery também foram utilizados. Os
arquivos HTML base da interface foram três: index.html, gui.html e help.html. São,
respectivamente, a página inicial, a interface gráfica principal do aplicativo e o menu ajuda.
A página inicial (Figura 5) foi criada para apresentar simplificadamente os aspectos gerais
do aplicativo, ou seja, suas especificidades e limitações. Ela redireciona para a página principal
da interface.
Quanto à página principal (Figuras 6 a 9), onde o sistema de manutenção de pontes de
aço efetivamente funciona, os elementos gráficos da interface tiveram a introdução de
transições e mudanças nas escalas dos elementos sob o cursor do usuário (gerando mais
interatividade), alterações de cores nos elementos selecionados, alertas para inputs não
preenchidos com os intervalos explicitados pelo placeholder das caixas de digitação (Figura

6b) e botões para limpeza dos dados preenchidos , acesso ao menu “Ajuda” (que
redireciona a abertura para uma página de um navegador) e guias para esclarecer dúvidas sobre

o significado dos inputs inseridos (Figura 6c).


Já a terceira página (Figuras 10 a 15), onde um guia sobre o funcionamento do sistema é
apresentado, teve forte inspiração nos templates disponibilizados pela Colorlib - © Copyright
2020 [3]. Essa página conta com templates de sites produzidos em HTML e Bootstrap e
possuem documentação aberta. Em conjunto com o JQuery, essa abordagem minimizou a
criação demasiada de códigos cujas funcionalidades já se encontram disponíveis para
desenvolvedores front-end.
O arquivo JS inserido na pasta _linkers teve o papel prioritario de armazenar os dados de
entrada e intercambiá-los com o servidor Python. Conforme a documentação do Eel [2], quando
a troca de dados é assíncrona, ou seja, o retorno para o dado recebido deve ser realizado quando
a função terminar sua execução do outro lado do servidor, isso é feito por meio de callbacks.
No presente projeto os dados foram armazenados em variáveis pelo servidor JS e então passados
por meio de uma função para o servidor Python, cuja função aguarda por estas variáveis para
5
Departamento de Engenharia Civil

ser executada. Os dados são trocados no formato de string, portanto os valores numéricos são
prontamente convertidos no script Python para a execução da função que aguarda por eles. O
retorno da função é exposto para o servidor JS, que trata de exibi-los conforme a manipulação
desejada.

Figura 3 – Esquematização da troca de dados realizadas entre os servidores internos do


aplicativo.

3.3.Back-end

O servidor, como já mencionado, foi baseado na linguagem Python. O processamento dos


parâmetros geométricos, materiais, ambientais e de tráfego inseridos pelos usuários foram
tratados conforme apresentado no fluxograma do sistema (Figura 1). Com isso, a estimativa de
vida das pontes de aço em cenários com e sem manutenção foi realizado com um laço while
que, baseado no índice de confiabilidade estrutural β = 2 (probabilidade de falha de 2,3%),
recalcula ano a ano até alcançado o valor alvo desse índice:
✓ A tensão máxima unitária com base nos parâmetros fornecidos. O modelo de RNA
treinado é chamado pelo script Python principal.
✓ A tensão equivalente (com consideração do fator de amplificação dinâmica) em
uma única faixa devido a passagem do caminhão do trem-tipo da AASHTO
(2012) e o posterior número de ciclos de tensão anual acumulados a partir dos
dados de tráfego diário recebidos.
✓ O valor do índice de confiabilidade no ano t, que varia conforme a ausência ou
presença de corrosão. Caso o tempo de início de corrosão tenha iniciado os dados
6
Departamento de Engenharia Civil

ambientais recebidos são consultados e um ajuste nos parâmetros de fadiga são


realizados para a consideração desses fenômenos agindo conjuntamente. Esse
cálculo fecha o laço após o valor de β < 2.
O script Python importa as bibliotecas eel, sys, math, numpy, datetime e matplotlib.pyplot
para executar todas funcionalidades do programa e ao final, além de retornar ao servidor JS os
dados de saída, gera um relatório no formato .txt com um resumo de todos os dados da ponte
inseridos e as previsões de vida mediante os diferentes cenários de manutenção do sistema
estruturado (Figura 16). Como a troca de dados entre os servidores foi no formato string, se
tornou necessário salvar como imagem (.png) o gráfico “Índice de confiabilidade x tempo
(anos)” gerado pela biblioteca matplotlib.pyplot para que este pudesse ser graficamente
representado na aba “Resultados” da interface gráfica (Figura 9b). Para fins de elucidação, a
estrutura do script Python é apresentada suscintamente na Figura 4.

Figura 4 – Estrutura do script Python.


O executável foi criado com o PyInstaller. Com ele é possível incorporar arquivos Python
correspondentes a um dado desenvolvimento, suas bibliotecas, um interpretador e demais
arquivos necessários para a execução do programa em um único arquivo ou executável sem que
o usuário que obtenha o executável necessite de qualquer pré-instalação ou outras máquinas
para executa-lo. Ele é capaz de gerar executáveis para máquinas Windows, Mac OS e Linux
[4], porém apenas o primeiro sistema operacional foi escolhido no presente projeto.

7
Departamento de Engenharia Civil

3.4.GUI

Nessa seção serão visualmente apresentados os componentes gráficos do aplicativo


confeccionado.

Figura 5 – Página inicial.

(a)
8
Departamento de Engenharia Civil

(b)

(c)
Figura 6 – Aba “Geometria/Material” (a) inicial, (b) após um comando de alerta ser ativado e
(c) após o ícone de dúvida ser consultado.

9
Departamento de Engenharia Civil

Figura 7 – Aba “Dados ambientais”.

(a)

10
Departamento de Engenharia Civil

(b)
Figura 8 – Aba “Dados do tráfego” (a) com a opção de entrada de dados de tráfego diário de
todos os veículos e (b) com a opção de dados de tráfego diário de caminhões selecionadas.

(a)

11
Departamento de Engenharia Civil

(b)
Figura 9 – Aba “Resultados” (a) antes e (b) após a realização dos cálculos (nesse caso os
dados inseridos como input tiveram apenas fins ilustrativos).

Figura 10 – Página inicial do menu “Ajuda”.

12
Departamento de Engenharia Civil

Figura 11 – Informações sobre a aba “Geometria/Material” disponíveis no menu “Ajuda”

(a)

13
Departamento de Engenharia Civil

(b)
Figura 12 – Informações sobre a aba (a) “Dados ambientais” e (b) “Dados do tráfego”
disponíveis no menu “Ajuda”.

Figura 13 – Informações sobre a aba “Resultados” disponíveis no menu “Ajuda”.

14
Departamento de Engenharia Civil

Figura 14 – Informações sobre a concepção do sistema de manutenção de pontes de aço no


menu “Ajuda”.

15
Departamento de Engenharia Civil

Figura 15 – Ícone para, ao clicar, redirecionar um email para a autora do sistema de


manutenção proposto e ter a possibilidade de obter informações adicionais sobre seu
funcionamento.

Figura 16 – Padrão do relatório gerado no arquivo output.txt.

4. Conclusões

Neste trabalho diferentes tecnologias computacionais foram compreendidas. Como


produto final foi possível criar um aplicativo desktop dinâmico e eficiente que proporciona ao
usuário uma estimativa para o tempo de vida útil de uma ponte em vigas de aço biapoiadas
cujos parâmetros que a caracterizam são inseridos. A base desse sistema foi o estudo, como já
citado, desenvolvido por QUEIROZ (2020) [1]. A estrutura de dados se baseou no framework
Eel [2] e a comunicação entre os servidores internos em Python e HTML/CSS/JS que ele
proporciona.
16
Departamento de Engenharia Civil

5. Referências bibliográficas

1 − QUEIROZ, V.P.M. Avaliação do ciclo de vida de pontes de aço considerando o


dano por fadiga e corrosão. Rio de Janeiro, 2020. Pontifícia Universidade Católica do Rio de
Janeiro. [Previsão]
2 − EEL 0.13.2. Disponível em: https://pypi.org/project/Eel/ Acesso em 27/07/2020 às
19:42.
3 – COLORLIB. Disponível em: https://colorlib.com/wp/templates/ Acesso em
27/07/2020 às 20:50.
4 – PYINSTALLER. Disponível em: http://www.pyinstaller.org/ Acesso em 27/07/2020
às 21:34.

17

Você também pode gostar