Com o projecto Underwater SLAM-NET pretendemos criar novos conhecimentos técnicos nas áreas de SLAM, Deep Learning, Computer Vision, métodos Bayesianos aplicados a Computer Vision, a fim de dotar os sistemas existentes de inteligência para agir de forma autónoma. O objectivo final deste projecto é desenvolver sistemas de Inteligência Artificial que permitam aos veículos submarinos existentes agir de forma autónoma, sem intervenção humana.

 

Previsão de mapas de profundidade

O mapeamento de um dado cenário e o simultâneo rastreamento de uma câmara onde só existe o acesso ao vídeo adquirido (não existem sensores adicionais), é uma tarefa desafiante que é ainda mais comprometida quando realizada no ambiente subaquático. De forma a resolver o problema, numa primeira fase focamos apenas em algoritmos que realizam a previsão de mapas de profundidade de modo a termos uma percepção tridimensional da cena que está a ser analisada.

Foi desenvolvido um algoritmo baseado em algoritmos de Deep Learning e Structure from Motion. O algoritmo, após receber uma imagem, faz a previsão do mapa de profundidade correspondente em unidades métricas, em conjunto com um mapa de incerteza. O mapa de incerteza permite filtrar previsões menos confiantes e à partida mais prováveis de estarem erradas, aumentando o desempenho global da previsão de mapas de profundidade.
 

 

Paper: A Hybrid Framework for Uncertainty-Aware Depth Prediction in the Underwater Environment

 

Estimativa de Posição

Seguimos uma abordagem semelhante para a estimativa de posição do ROV onde numa primeira fase desenvolvemos algoritmos que realizassem apenas a estimativa de posição e só posteriormente integramos e relacionamos ambos os resultados (mapas de profundidade e estimativa de posição do ROV). Um sistema de posição capaz de estimar a posição do ROV é especialmente útil na navegação durante uma operação e é um dos requisitos para uma operação poder ser realizada de forma eficiente. Tipicamente este posicionamento é feito por sensores acústicos. Contudo, estes sistemas são caros, requerem uma cuidada calibração, têm um alcance limitado e são suscetíveis a erros em alguns cenários.
 

Foi então desenvolvido um algoritmo também baseado em deep learning que é capaz de estimar o movimento de um veículo em tempo real usando apenas como sensor a câmara do veículo. O sistema usa uma rede neuronal convolucional que atua como um sistema de navegação inercial passível de ser combinado, corrigir ou substituir sensores que estivessem a ser usados. A figura seguinte representa a solução desenhada para situações onde o veículo não tem acesso a uma posição precisa através dos sensores acústicos.
 

 

Utilizando a estrutura proposta, fomos capazes de gerar telemetria para toda a missão, mesmo para cenários onde os sensores acústicos não eram rigorosos ou capazes de calcular uma posição. Uma vez que também tivemos acesso a reconstruções em 3D que foram calculadas utilizando algoritmos de Structure from Motion, integrámos ambos os resultados com o nosso simulador interno para avaliar visualmente a trajectória estimada. O resultado final é uma reprodução da missão onde fomos capazes de recriar toda a missão no nosso ambiente simulado:

 


 

Paper: Visual Inertial System for ROV Positioning

 

Segmentação Semântica

Após mapearmos o cenário inspecionado e localizarmos o veículo, um dos aspectos chave da maioria das aplicações robóticas é perceber e identificar elementos que estão a ser mapeados. Para alcançar este objetivo foram explorados algoritmos de segmentação semântica de modo a identificar diferentes partes de estruturas que foram inspecionadas durante uma dada operação. Estes algoritmos podem ser úteis para o piloto durante a própria operação para navegação e para assegurar também a cobertura de toda a estrutura inspecionada, aumentando assim a sua eficiência. Após a realização da operação, o resultado destes algoritmos de segmentação pode também ser utilizado para catalogar eventos chave durante a operação e aumentar assim o desempenho na pesquisa de vídeos de inspeção.
 

De seguida são apresentados alguns resultados do nosso modelo relativos à segmentação de diferentes partes de uma estrutura subaquática:
 

 

Protótipo do sistema SLAM-Net

O protótipo SLAM-Net pretende integrar a tecnologia que foi desenvolvida durante o projeto, em particular dos algoritmos acima mencionados. O protótipo tem como principal função a produção de uma reconstrução 3D dos elementos inspecionados onde em simultâneo rastreia a posição da câmara do veículo que realiza a inspeção. De modo a obter informação adicional acerca dos elementos que estão a ser mapeados no ambiente tridimensional, o protótipo processa também informação semântica da estrutura, i.e., que tipo de estrutura e que parte desta estrutura é que está a ser inspecionada. Deste modo, o protótipo é constituído por 3 blocos principais: previsão de um mapa de profundidade que irá ser usado para projetar os pontos bidimensionais no espaço tridimensional, a estimativa da posição do veículo de modo a posicionar corretamente os pontos projetados no espaço tridimensional, e ainda a segmentação semântica de modo a recolher informação sobre o tipo de estrutura que está a ser analisada.
 

O protótipo apresenta-se como uma interface gráfica tridimensional onde a estrutura é reconstruída de uma forma incremental e em tempo real, tomando partido de algoritmos de deep learning e de SLAM. O resultado final é uma nuvem de pontos densa que pode ser exportada para uso futuro. A posição da câmara do veículo também é estimada e também pode ser exportada.