- UFRJ Nautilus
[PT-EN] Gazebo: o Poder das Simulações
Atualizado: 6 de Ago de 2020
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.

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.

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.

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