O que você está procurando?
Industry

Feito com Unity: Criação e treinamento de um gêmeo digital do robô

ANTHONY NAVARRO / UNITY TECHNOLOGIESSenior Technical Product Manager
Oct 11, 2021|8 Min
Feito com Unity: Criação e treinamento de um gêmeo digital do robô
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

Nosso Feito com Unity: A série AI apresenta projetos Unity feitos por criadores para uma série de finalidades que envolvem nossos produtos de inteligência artificial. Neste exemplo, apresentamos um envio recente para a competição OpenCV Spatial AI que mostra robótica, visão computacional, aprendizado por reforço e realidade aumentada em Unity em um conjunto impressionante de exemplos.

A Unity tem um mecanismo 3D de classe mundial e em tempo real. Embora o mecanismo e as ferramentas que criamos tradicionalmente apoiem os desenvolvedores de jogos, o grupo AI@Unity está criando ferramentas em áreas como aprendizado de máquina, visão computacional e robótica para permitir aplicativos fora dos jogos, especialmente aqueles que dependem de inteligência artificial e ambientes 3D em tempo real

A apresentação de Gerard Espona e da equipe Kauda para a competição OpenCV Spatial AI utilizou muitas de nossas ferramentas e pacotes de IA em vários exemplos. Eles usaram nosso pacote Perception para ajudar a treinar modelos de visão computacional e o kit de ferramentas ML-Agents para treinar seus modelos de aprendizado de máquina e fazer uma demonstração sim2real de um braço robótico. Entrevistamos Gerard para descobrir o que o inspirou a criar esse projeto. Continue lendo para saber mais sobre como ele deu vida a esse projeto no Unity e no mundo real.

Projeto OpenCV

De onde você tirou o nome da equipe Kauda?

A equipe Kauda é composta por Giovanni Lerda e por mim (Gerard Espona), e o nome vem do braço robótico de 5 eixos, gratuito e de código aberto, que pode ser impresso em 3D e tem tamanho de mesa, criado por Giovanni, chamado Kauda. Esse é um excelente braço robótico de mesa que qualquer pessoa pode fabricar e nos permitiu colaborar remotamente nesse projeto.

Braço robótico
Como conseguiu um gêmeo digital da Kauda no Unity?

Desenvolvemos o Kauda Studio, que é um aplicativo Unity que alimenta o gêmeo digital da Kauda. Ele fornece uma simulação precisa e totalmente funcional da Kauda com controle de cinemática inversa (IK), conexão USB/Bluetooth com a Kauda real e pode suportar várias câmeras OpenCV OAK-D.

O que é a câmera OAK-D e como ela foi usada com o Unity?

A câmera OAK-D combina duas câmeras de profundidade estéreo e uma câmera colorida 4K com processamento integrado (alimentado pela Intel MyriadX VPU) para processar automaticamente uma variedade de recursos. Como parte do concurso, criamos um plug-in do Unity para dispositivos OAK, mas também queríamos ter um gêmeo digital no Unity. O gêmeo digital do OAK-D Unity forneceu uma câmera 3D virtual com uma simulação precisa que poderia ser usada para a coleta de dados sintéticos. Ele também permite que imagens virtuais sejam alimentadas no pipeline do dispositivo real. Conseguimos usar o Unity Perception Package para coletar itens sintéticos para treinar itens personalizados com a câmera virtual OAK-D.

Fundo cinza com modelos 3D de equipamentos
Modelo Unity da câmera OAK-D
Qual é a importância de ter um gêmeo digital na Unity?

Ter um gêmeo digital nos permitiu habilitar recursos adicionais na Kauda. Você também pode usar os recursos de realidade aumentada (AR) do Unity para interagir com um robô virtual no mundo real. Uma aplicação é aprender a realizar a manutenção em um robô sem precisar de um robô no local. Isso também permite a programação de tarefas sequenciais com uma abordagem sem código, com uma representação virtual e precisa do robô.

O gêmeo digital nos permitiu realizar o treinamento de aprendizagem por reforço (RL). A RL é um processo demorado que requer simulação para qualquer coisa além de exemplos extremamente simples. Com a Kauda no Unity, usamos o kit de ferramentas ML-Agents para realizar o treinamento de RL para controle.

Também começamos a testar a colaboração homem-máquina e os procedimentos de segurança, replicando o robô no Unity e usando as câmeras para medir onde o ser humano estava dentro da área do robô. Você pode imaginar fazer isso em um robô grande que pode causar ferimentos em humanos quando ocorrem erros. O ambiente de simulação nos permite testar esses cenários sem colocar os seres humanos em perigo.

Como você usou o kit de ferramentas ML-Agents nesse projeto?

Acreditamos que a RL é uma estrutura poderosa para a robótica e o ML-Agents da Unity é um ótimo kit de ferramentas que permite que nosso gêmeo digital aprenda e realize tarefas complexas. Devido ao prazo limitado do concurso, a meta era implementar uma tarefa simples de "toque" de RL e transformar o modelo resultante para executar a inferência no dispositivo OAK-D. Usando ML-Agents, o robô aprendeu o caminho ideal usando o controle IK para tocar dinamicamente um objeto 3D detectado.

Treinamento de agentes de ML-Agents da Unity sobre gêmeos digitais

Para isso, primeiro implementamos um detector de objetos 3D usando o YOLO espacial minúsculo. O modelo RL (PPO) usa a detecção resultante e a posição do ponto de controle IK como observações de entrada. Como ações de saída, temos o movimento de 3 eixos do ponto de controle IK. O sistema de recompensa foi baseado em uma pequena penalidade em cada etapa e uma grande recompensa (1,0) quando o robô tocou o objeto. Para acelerar o treinamento, aproveitamos o fato de vários agentes aprenderem simultaneamente, desenvolvendo o minúsculo YOLO espacial virtual com os mesmos resultados do minúsculo YOLO espacial real.

Depois que o modelo foi treinado, nós o transformamos no formato OpenVino IR e Myriad Blob usando o kit de ferramentas OpenVino para carregar o modelo em um dispositivo OAK-D e executar a inferência. O pipeline final é um modelo espacial minúsculo YOLO mais RL. Graças ao nosso plug-in Unity, pudemos comparar a inferência usando ML-Agents e agentes OAK-D dentro do Unity lado a lado.

Como os dados sintéticos o ajudaram nesse projeto?

O primeiro estágio de nosso pipeline é um detector de objetos 3D, que é um ponto de partida muito comum para tarefas robóticas e de visão computacional baseadas em IA. Em nosso caso, usamos um modelo minúsculo YOLO v3 pré-treinado e, graças ao pacote Unity Perception, conseguimos treinar uma categoria personalizada. Isso nos permitiu gerar um grande conjunto de dados sintéticos de modelos 3D com rotulagem automática de caixa delimitadora de verdade no solo em questão de minutos. Normalmente, o processo de coleta e rotulagem é um processo humano manual que consome muito tempo. Ter a capacidade de gerar um conjunto de dados rico com muitas opções de randomização para ter diferentes rotações, condições de iluminação, variações de textura e muito mais é um grande avanço.

Você teve alguma dificuldade?

O tempo necessário para sincronizar os itens virtuais e do mundo real às vezes era um pouco estranho. Acreditamos que isso poderia ser resolvido com o uso do ROS no futuro, e é bom que a Unity ofereça suporte oficial ao ROS agora.

Saiba mais

Gerard tem uma lista de reprodução completa de vídeos que documentam sua jornada, com alguns vídeos notáveis, incluindo um webinar com o OpenCV e o vídeo de envio do concurso final. Ele também lançou o plug-in OAK-D Unity no GitHub para ajudar outras pessoas a iniciarem seus projetos.

Estamos entusiasmados em ver que nossas ferramentas permitem que projetos como esse ganhem vida! Se quiser adicionar IA aos seus projetos no Unity, temos muitos exemplos e tutoriais para você começar! O Unity Perception Package permite que você colete facilmente dados sintéticos no Unity. O Unity Hub de robótica tem tutoriais e pacotes para você começar a usar a integração do ROS e a simulação de robótica. E o kit de ferramentas ML-Agents simplifica o aprendizado por reforço com muitos ambientes para começar a usar.