• UFRJ Nautilus

SLAM e a Navegação Autônoma

Ao se lançar um AUV (Autonomous Underwater Vehicle) - como o da UFRJ Nautilus - em águas desconhecidas, é necessário que o mesmo seja capaz de se localizar enquanto elabora o mapa do local. Para que isto seja possível, são necessários algoritmos como os de SLAM, principalmente quando integrados com o ROS (Robotics Operating System). Dessa maneira, com uma navegação autônoma de qualidade, o leque de possibilidades para as tarefas que o robô é capaz de realizar se expande ainda mais.


AUV da UFRJ Nautilus

A sigla SLAM significa Simultaneous Localization And Mapping, ou seja, permite a localização em relação a um ponto de referência criado por um mapa enquanto cria o mesmo. Esta técnica possibilita, principalmente, que, uma vez equipado com determinados tipos de sensores, o robô seja capaz de adaptar sua trajetória em qualquer ambiente sem que sejam necessários comandos externos durante a realização de suas atividades. Mas como funciona tal técnica?


Representação gráfica do funcionamento de algoritmos de SLAM

Os algoritmos de SLAM funcionam em três camadas. Em seu cerne, os algoritmos de SLAM funcionam à base de sistemas estimadores de posição e fusão de sensores. Entre eles podemos ressaltar Kalman Filters (para sistemas lineares), Extended Kalman Filters, Unscented Kalman Filters e Particle Filters (os três para sistemas não lineares mas cada um com suas restrições específicas que serão tratadas em outros posts). Outra camada do SLAM são os frames (sistemas de coordenadas próprio) de cada sensor. Na camada mais externa, temos os dados inalterados fornecidos pelos sensores. Como cada sensor fornece dados relativos ao seu frame, é necessário convertê-los para o do robô (localizado em seu centro de massa) para evitar inconsistências. De forma geral, os dados de odometria (responsáveis pela localização) e de nuvem de pontos (responsáveis pelo mapa) fornecidos pelos sensores são adaptados, aproximados e fundidos de modo a capacitar a localização e o mapeamento simultâneos.


Como a aplicação desses algoritmos pode ser extremamente complexa e exigir uma grande capacidade computacional, existem pacotes, compatíveis com o ROS, pré-programados e capazes de realizar essas tarefas de forma otimizada e “user-friendly”.  O conjunto de pacotes chamado ROS Navigation utiliza algoritmos de SLAM como Cartographer (da Google), RTAB, ORB-SLAM, assim como outros criados pelos próprios desenvolvedores do ROS, como robot_localization, karto, entre outros. A implementação destes nesse ambiente de programação permite não apenas uma navegação autônoma a partir de um Path Planning próprio, como também padroniza e integra ao próprio sistema de localização e mapeamento a entrada de controle, aumentando assim a qualidade do SLAM. Além disso, o conjunto de pacotes possui como uma de suas propriedades a capacidade de evitar de forma autônoma colisões com objetos detectados, o que pode se tornar especialmente importante ao se revisitar ambientes que tenha objetos ou animais que se movem de lugar.


Representação da aplicação do Google Cartographer no Rviz

Na UFRJ Nautilus, tomamos a liberdade de utilizar alguns desses algoritmos no nosso próprio AUV! Com uma interface mais amigável, torna-se mais fácil de se trabalhar com códigos que seriam, de outra forma, extremamente complexos. De posse de um sistema de localização confiável, e com um modelo diferenciado (leia o post sobre nosso AUV para saber mais), somos capazes de realizar muito mais do que um AUV comum. Possuímos, entretanto, planos para realizar um sistema de SLAM próprio, uma vez que os modelos físicos dos algoritmos pré-existentes nem sempre são compatíveis com o ambiente no qual o nosso AUV opera. Desse modo, apesar de perdermos a simplicidade de manipulação, ganharemos muito mais liberdade para adaptar o SLAM às nossas necessidades.


Portanto, seja pelo ROS ou por um algoritmo próprio, o SLAM se revela como uma das principais ferramentas no mundo da navegação autônoma. Da próxima vez que o AUV for navegar em águas desconhecidas, não nos preocuparemos, pois ele levará consigo um mapa aonde for. 


Escrito por Gustavo Villela.