Como utilizar Unreal Engine 5 e robótica juntos?
- #Linux
- #C++
- #Unreal Engine
Introdução
A integração entre o Unreal Engine 5 e o ROS2 abre novas possibilidades para o desenvolvimento de sistemas robóticos, especialmente para a criação de gêmeos digitais e simulações realistas. Atualmente, estou me aprofundando nesse tema no meu Trabalho de Conclusão de Curso, no qual estou desenvolvendo um Digital Twin do carro autônomo da minha universidade, utilizando a integração entre essas duas ferramentas. Neste artigo, você encontrará um exemplo prático de como criar um "Olá, Mundo" dentro do Unreal Engine conectado ao sistema distribuído do ROS2. Escrevo este conteúdo porque ainda há pouco material disponível sobre o assunto, e acredito que ele pode ajudar quem também está começando ou deseja explorar esse tipo de integração.
Para aqueles que não conhecem os termos, um Gêmeo Digital (Digital Twin) é uma cópia virtual altamente realista de um sistema ou processo do mundo real. A Unreal Engine é um motor gráfico amplamente utilizado para a criação de ambientes 3D realistas e criação de jogos, enquanto o ROS2 é um sistema distribuído baseado em um grafo de nós e tópicos, permitindo a troca de informações entre diferentes componentes de um sistema robótico.
O que será necessário?
Para reproduzir a integração, é necessário:
- Unreal Engine 5.3 compilado para Linux;
- ROS2 Foxy instalado e configurado;
- Plugin rclUE (para comunicação entre Unreal e ROS2);
- Ubuntu 20.04.
Como funciona a integração?
Para o projeto, você precisa criar um ator que herda uma classe C++, com o nome MyActor, este ator ele atua como um subscriber das mensagens publicadas pelo ROS2, ou seja, ele será responsável por ficar escutando o que o robô está dizendo, no meu caso, o carro autônomo me forneceu informações de aceleração angular, coordenadas de gps e informações do giroscópio, você pode aumentar a confiabilidade colocando um banco de dados e fazer uma análise dos valores passados para a unreal.
Neste projeto, acabei utilizando o ROS2 Foxy, e para ligar ele, utiliza-se o comando:
source /opt/ros/foxy/setup.bash
Após criar o ator e herdar de sua classe C++, você deve adicionar o ator ao cenário criado, e em outro terminal, utilize o seguinte comando para publicar vários "Hello World":
ros2 topic pub /teste_unreal std_msgs/msg/String "{data: 'Hello Unreal'}"
Para validar a sua implementação, utilize o código do ator disponibilizado em: repositório
Conclusão
A integração entre Unreal Engine 5 e ROS2 constitui uma poderosa plataforma para pesquisa e desenvolvimento em robótica, especialmente na criação de ambientes simulados seguros, capazes de mitigar riscos e reduzir custos. Embora a área ainda seja relativamente nova, ela já demonstra grande potencial para substituir testes perigosos no mundo real e otimizar processos, em uma empresa ou universidade, por meio de simulações baseadas em Digital Twin. No cenário brasileiro, o número de artigos e materiais disponíveis sobre essa integração ainda é bastante limitado, com a maioria das referências em outros idiomas. Espero que este exemplo de "Hello World" entre Unreal Engine 5 e ROS2 sirva de apoio para o surgimento de novos projetos, incentivando a inovação e a aplicação prática dessas tecnologias em universidades, pesquisas acadêmicas e soluções dentro de empresas para mitigar acidentes.