• UFRJ Nautilus

[PT-EN] Gazebo: o Poder das Simulações

Updated: 2 days ago


Em muitos projetos de automação, principalmente no caso de veículos autônomos, tal qual o AUV (Autonomous Underwater Vehicle) que desenvolvemos, a realização de testes usando o equipamento em si nem sempre é uma opção viável. Muitas vezes, tais procedimentos necessitam de muito tempo, um local com infraestrutura adequada e a disponibilidade de um grande contingente de pessoas, podendo resultar em altos custos. Dessa maneira, as ferramentas de simulação virtual se mostram como uma solução muito poderosa no desenvolvimento de quase qualquer projeto de engenharia contemporâneo. Sob essa ótica, ao decorrer deste artigo, faremos uma breve apresentação de uma dessas ferramentas: o Gazebo.


O Gazebo é uma ferramenta de simulação, utilizada principalmente no setor de robótica, tendo como seu principal atrativo os cálculos de física e imagem em tempo real. Ademais, o programa possui ampla conectividade, permitindo a simulação de, principalmente, sistemas baseados em ROS, que é profundamente integrado no ecossistema do Gazebo. A combinação desses fatores faz com que a plataforma seja ideal para o desenvolvimento e teste de algoritmos.



Simulação de um Carrinho no Gazebo


Para adicionar ao realismo que esses testes proporcionam, é possível estender as funcionalidades da simulação com o uso de plugins. Muitas vezes, esses podem ser usados para simular o comportamento de um sensor específico, podendo adaptá-lo para que o software a ser testado não possa distinguir a simulação da realidade, evitando assim a necessidade de adaptar seu funcionamento.


Quanto ao seu emprego em nossa equipe, o Gazebo é frequentemente usado para testar a máquina de estados de nosso AUV, podendo simular seu comportamento sem a necessidade de que a o veículo seja testado em uma piscina física. Assim, podemos realizar o desenvolvimento do componente de software do projeto de maneira interativa, construindo novos algoritmos, testando-os e modificando-os com a necessidade sem sequer precisar ligar o submarino.



Simulação do nosso AUV no Gazebo


Além disso, o Gazebo também é utilizado na indústria para diversas aplicações de machine learning, sendo particularmente útil para treinar algoritmos de aprendizado por reforço. Isso ocorre pois a máquina pode facilmente interagir com o ambiente simulado, onde podem ser implementados diversos sistemas de pontuação, incentivos e punições, dando possibilidades quases infinitas à ferramenta nesse tipo de aplicação.



Simulação de um Braço Mecânico no Gazebo


Outro ponto positivo é que, visto que a comunicação com o Gazebo acontece através de portas de rede, sejam essas virtuais ou físicas, ele é muito flexível. Na prática, essa ferramenta pode ser utilizada para praticamente qualquer aplicação, seja ela autônoma ou manualmente operada, consistindo de uma máquina ou várias, usando ROS ou não. Ademais, devido a sua grande comunidade, já existe uma grande variedade de conteúdo pronto construído para diversas aplicações que pode ser facilmente encontrado na internet. A combinação desses fatores acabam fazendo da acessibilidade e flexibilidade os maiores pontos positivos da plataforma, justificando seu emprego dentro da Nautilus, e, quem sabe em um futuro projeto seu?


Gazebo: the Power of Simulations


In many automation applications, specially in the case of autonomous vehicles,

like the AUV we develop, doing tests with the actual equipment is not always a viable option.

These endeavours usually take very long and often require a big team and a place with

adequate conditions, which might mean very high operational costs.

In spite of said problems, virtual simulation tools have become very capable and

useful when developing engineering projects nowadays. With that in mind, we’ll briefly

explore one of these tools: Gazebo.

Gazebo is a simulation program mostly employed in the robotics sector and its main

feature is being capable of calculating physics and graphics in real time while maintaining its

simplicity. Furthermore, its compatibility is one of its main selling points, specially in the

case of systems using ROS, which is known to be widely integrated with the Gazebo

ecosystem. This makes it so the environment as a whole is ideal for debugging algorithms of

many kinds.


Simulation in the Gazebo


In order to add to the realism of the simulations provided by Gazebo, it’s possible to

enlarge its feature set through the use of plugins. These plugins are often, but not restricted

to, used to mimic the behaviour of specific sensor. The simulated sensors then can be fine-

tuned so that their output is indistinguishable from the real world, and therefore enabling a

single to source code to power both the real machine and the simulated one, eliminating the

need of tweaking their inner-workings.

Regarding its use within UFRJ Nautilus, Gazebo is often used to try improvements to

the AUV’s state machine without the need to take the vehicle to an actual pool. This

enables software features to be worked on in an iterative manner, trying new algorithms in

a dynamic workflow.

Simulation of our AUV in the Gazebo


Beyond this use, Gazebo is also employed in many machine learning applications,

being particularly useful in reinforcement learning tasks, that rely heavily on simulated

environments. This happens because this type of use often needs to assign scores,

incentives or punishes to an agent in a given task, which is made easier by Gazebo’s high

flexibility. This aspect, alongside its compatibility, make this tools potential virtually limitless

in this field.

Simulation of a Mechanical Arm in the Gazebo


The key point to all this flexibility is that Gazebo can communicate using network

ports, whether physical or virtual. In practice, this means that the program can work in

almost any application, regardless if it’s autonomous or manned, with one or many

machines, with or without using ROS. Gazebo also counts with a large and passionate

community behind it. There are countless tutorials, articles online and lots of open-source

code available. In the end its biggest asset are its accessibility and its flexibility, which

made it suitable for our application, and maybe it can also suit yours in the future.

Written by Lucas Ikuhara