sosbrumadinho / victims_location_prediction

Software library to predict victims location after dam rupture or similar disasters.
32 stars 8 forks source link

SRTM + Simulacao 3D Blender #1

Open hugoaboud opened 5 years ago

hugoaboud commented 5 years ago

A EngeSat disponibilizou alguns dados de topografia da regiao: http://www.engesat.com.br/sobre-brumadinho-mg-dia-25-01-19/ Ate agora sao os dados de elevacao com maior resolucao que encontrei. É possivel cruzar essas informacoes com informacoes de satelite utilizando o software QGIS.

Fiz um crop da area afetada: um GeoTIFF de elevacao do terreno (infelizmente a resolucao nao e muito grande) e uma imagem RGB de terreno.

Importei esses dados no Blender e preparei um projeto para simulacao de fluidos (PS: a escala do projeto 'e de 1:100). É possivel extrair os vetores de velocidade da simulacao, porem ainda nao cheguei la.

Possuo pouco poder de processamento e RAM, entao rodei uma simulacao em baixa resolucao aqui, os resultados sao razoaveis pra comecar o desenvolvimento:

brumadinho

hugoaboud commented 5 years ago

Por enquanto esse 'e o melhor resultado que cheguei (interrompi a simulacao neste ponto).

brumadinho simres

pictos commented 5 years ago

@hugoaboud , se conseguirmos uma VM na nuvem, vc consegue rodar isso por completo?

hugoaboud commented 5 years ago

@pictos Seria bem bom! Eu uso Arch Linux, mas se for outra distro da pra fazer tambem. O Blender nao oferece muitas opcoes de modelagem do fluido, apenas viscosidade e um fator de inercia pro terreno, mas acho que essa simulacao pode ser um bom primeiro passo. Acho que agora seria razoavel descobrir como funcionam os vetores de velocidade que o blender cria e desenvolver uma aplicacao que crie uma trajetoria com base neles.

pictos commented 5 years ago

@hugoaboud vc está no grupo do telegram? Se estiver me procure por lá "Pedro Jesus", mais fácil de comunicar... Vou agilizar aqui a questão de arranjar uma VM.

andrebassi commented 5 years ago

@pictos @hugoaboud -> Se precisarem de ajuda com infra, me acionem.

caiocarrara commented 5 years ago

@hugoaboud -- muito interessante o que você conseguiu até agora! Parece promissor. Precisa de ajuda com alguma coisa?

Eu tenho várias dúvidas, até por não dominar muito essa área: Como conseguiremos integrar essa solução com os outro(s) módulo(s) do sistema? Qual é a interface de comunicação dessa simulação? É possível gerar um geojson, por exemplo, da área atingida? Você chegou a comparar a predição da sua solução com o caso real de Brumadinho?

Enfim, precisando de qualquer coisa é só chamar!

caiocarrara commented 5 years ago

Pessoal que está nessa issue, pelo que entendi esse assunto está relacionado com a predição da localização de vítimas. Correto? Me corrijam se eu estiver errado.

Dessa forma, estou transferindo essa issue para o projeto que vai abrigar esse assunto. Beleza? Qualquer coisa posso voltar a issue para cá (eu acho).

cc @vaniaon

hugoaboud commented 5 years ago

@cacarrara, nessa 3a imagem que eu mandei tem uma comparacao: a linha azul 'e a informacao real de dispersao da lama, a mancha marrom 'e a simulacao. Essa simulacao rodou com uma resolucao muito baixa, tem mais de 1m de distancia entre as particulas, mas acho que se mostrou razoavel.

Atualmente meu plano pra integracao 'e:

Dessa forma, eu pretendo criar uma pequena lib C++ que recebe uma pasta com arquivos de vetores do fluido, um objeto que descreve o terreno e uma posicao inicial; e retorna a possivel trajetoria feita por aquele objeto. Essa lib pode depois ser integrada ao web service.

caiocarrara commented 5 years ago

Muito bom @hugoaboud!! Se você quiser e achar necessário podemos criar um projeto específico para essa lib na org SOSBrumadinho para centralizar o trabalho. Obrigado!

rphbc commented 5 years ago

@hugoaboud Ficou fera Hugo!! Eu estou em contato com algumas iniciativas oferecendo infra para o nosso projeto. Qual a especificação de máquina que você precisa para rodar essa simulação integralmente e com a resolução adequada? Você tem uma ideia?

hugoaboud commented 5 years ago

Subi o que já tenho até agora pra gente pensar em como integrar isso ao projeto. https://github.com/hugoaboud/fluidtrack

Tentei explicar com mais detalhes no README, mas a ideia é:

Eu montei essa cena chamada "sandbox" apenas pra desenvolver a biblioteca. Agora vou montar a cena de Brumadinho novamente e iniciar os testes. Vou fazendo os commits ao longo do processo. Assim que tiver algum resultado com a cena nova vou fazer a relação das coordenadas do objeto com as coordenadas de GPS do GeoTIFF usado pra gerar o terreno pra poder plotar corretamente o caminho no mapa. Preciso de apoio pra integrar isso ao sistema web, transformar em biblioteca, fazer os wrappers, etc.

A modelagem da interação do objeto com o flúido ainda está bem primitiva, porém o framework está setado pra que possamos inserir as principais características e criar um modelo razoável. Gostaria de iniciar essa discussão em outra issue. São questões de matemática/física como por exemplo: como relacionar a velocidade do liquido com a força que ele exerce sobre o corpo? como a profundidade do objeto (considerando o tipo de flúido) influencia no empuxo? etc

hugoaboud commented 5 years ago

@hugoaboud Ficou fera Hugo!! Eu estou em contato com algumas iniciativas oferecendo infra para o nosso projeto. Qual a especificação de máquina que você precisa para rodar essa simulação integralmente e com a resolução adequada? Você tem uma ideia?

Bacana! Então, a simulação exige muita memória RAM e não suporta GPU. Tenho um i7 (4 core) aqui e usando 3 cores ele ainda é bem lento. Acredito que o mínimo seria uma CPU 8 core + 16GB de RAM. O bom é que depois de gerar o binário do flúido, o cálculo de caminho é bem rápido pra cada ponto que for pedido.

caiocarrara commented 5 years ago

Opa, eu tenho i7 8 núcleos e 16GB de RAM aqui. Vou tentar rodar. Só seguir as instruções do README do seu projeto @hugoaboud ??

caiocarrara commented 5 years ago

@hugoaboud se puder explicar como que usa o executável fluidtrack. Eu consegui compilá-lo mas não sei o que preciso fazer para gerar a simulação a partir daí.

hugoaboud commented 5 years ago

@cacarrara

A simulação do flúido você faz no Blender. Abre o projeto sim/sandbox/sandbox.blend e faz o seguinte:

bake

Aí você consegue ver a animação do flúido no Blender usando a timeline em baixo. Feito isso, usa o script parse_cache.py pra gerar o binário do flúido:

python scripts/parse_cache.py sim/sandbox/cache_fluid sim/sandbox/sandbox.flow 2

Aí você roda o executável passando como argumento o arquivo do terreno (que já tá exportado em sim/sandbox/sandbox.csv), o arquivo de flow e o nome da saída:

./fluidtrack sim/sandbox/sandbox.csv sim/sandbox/sandbox.flow sandbox.csv

Isso deve gerar o arquivo sandbox.csv na pasta do executável. Ele tem as posições e rotações do objeto em cada frame. Pra importar isso no Blender e visualizar:

import_anim

Eu tô montando agora a cena com o terreno da região, ao invés dessa que foi só pra desenvolver a lib. Já vou subir já.

caiocarrara commented 5 years ago

@hugoaboud boa! Consegui fazer aqui. Só não encontrei onde ajustar para a simulação utilizar mais recursos da máquina. A minha timeline aqui do movimento ficou bem parecida com a sua. Talvez com o terreno real haja alguma melhora.

hugoaboud commented 5 years ago

Quando você vai dar Bake na simulação, em baixo tem um campo "Resolution Final", aumenta ele que você vai ver a previsão de ram no botão de Bake subir. Além disso, escolhe "Final" no "Viewport Display". Esse é um mundo pequeno, então uma resolução baixa (\~100) já funciona. Porém naquela primeira simulação que eu postei eu estava com resolução 300 e ainda assim ficou uma distância de 8~10m entre as partículas do flúido. Devo postar em mais uma ou duas horas a simulação nova, já em um Pull Request pra esse repositório.

caiocarrara commented 5 years ago

@hugoaboud perfeito. Pode manter tudo dentro de um diretório chamado fluidtrack aqui nesse repositório ;)

hugoaboud commented 5 years ago

Fiz um novo commit com as seguintes alterações:

brumadinho2

Como comentei no Pull Request, se alguém estiver disponível seria bom ir preparando a camada web aqui nesse repo. Os próximos passos são:

Vou abrir uma issue pra cada, pois exigem suporte de muitos ramos (geologia, matemática, física, etc).

pictos commented 5 years ago

@hugoaboud , por favor olhe essa issue.

https://github.com/sosbrumadinho/ideas_and_requests/issues/7

salatielaraujo commented 5 years ago

Boa tarde. Desde o evento de Brumadinho estou disponibilizando no Google Drive produtos que creio serem interessantes para as tarefas de resgate ( https://drive.google.com/drive/u/0/folders/1sZkhLY8UT125OlUD41Q_r1AkMezVxln9 ). Dentro do Drive tem um arquivo do tipo shapefile com as curvas de nível de 1 em 1 m da área quente que a Vale disponibilizou (esse produto é bem melhor do que o SRTM) . Essas curvas de nível seriam bem interessantes para melhorar as modelagens. Tem também o contorno da área quente em KMZ. Tem também um mapa preliminar de espessura da lama em função das curvas de nível e dos contornos da área quente. Para melhorarmos o mapa de espessura da lama precisaremos que a Vale nos envie o levantamento LIDAR que eles fizeram pós evento. Alguém poderia tentar obter essa informação ? Se precisarem de mais alguma informação estou a disposição.

pictos commented 5 years ago

@salatielaraujo na verdade temos um pedido. Para essa simulação, estamos usando dados fictícios. Porém o ideial seria termos um gabarito. No caso 2 dados que informem o ponto(latitude, longitude) inicial de um corpo e ponto onde foi encontrado. Vc acha q é possível? Não precisa da identificação do corpo, apenas as coordenadas.

salatielaraujo commented 5 years ago

Texto interessante sobre o fenômeno da tixotropia: https://www.facebook.com/ulf.hermannmondl/posts/2331368833575001 que versa sobre a viscosidade do material da Barragem I quando do seu rompimento.