Feito com Unity: Robôs de futebol com ML-Agents

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. Nesse exemplo, os ML-Agents capacitaram os desenvolvedores de IA, permitindo que eles configurassem ambientes de aprendizado de máquina de forma rápida e fácil e treinassem um agente para jogar futebol antes de finalmente transferir esse agente para um robô real.
O kit de ferramentas de ML-Agents (ML-Agents) da Unity permite que os usuários comecem a usar facilmente a aprendizagem por reforço (RL) usando a Unity. O ML-Agents oferece aos usuários uma variedade de ambientes de amostra e arquiteturas de modelos que podem ser usados para começar a trabalhar com RL. Os usuários podem então ajustar os hiperparâmetros para experimentar e melhorar os modelos resultantes. Tudo isso pode acontecer sem que o usuário tenha que se preocupar com a criação de um ambiente Unity ou com a importação de recursos, e não há necessidade imediata de codificação. Esse projeto da Ghelia Inc., do Japão, usou o ambiente de futebol do ML-Agents para treinar um agente para jogar futebol. O modelo de RL resultante foi então implantado em robôs Sony toio reais para jogar futebol. Esse é um exemplo interessante de simulação para o mundo real com robótica usando ML-Agents para treinamento.
Entrevistamos Ryo Shimizu, CEO e Presidente da Ghelia; Hidekazu Furukawa, Programador Líder do Escritório de Inovação e Estratégia de Marca; e Masatoshi Uchida, Gerente da Seção de Inovação do Escritório de Inovação e Estratégia de Marca para descobrir o que os inspirou a criar esse projeto. Continue lendo para descobrir como eles usaram o ML-Agents Toolkit para treinar um robô do mundo real a jogar futebol e como uma bola de golfe se encaixa nesse cenário.
O que o inspirou a criar seu projeto?
A Ghelia é uma empresa que se concentra em aplicativos de aprendizagem por reforço. O fundador da Ghelia, Hiroaki Kitano, lançou o RobocupSoccer e desenvolveu o AIBO na Sony. Nossa equipe já havia construído uma demonstração de air hockey, mas como ela era composta de muitos componentes diferentes, não era muito portátil. Quando começamos a discutir a criação de outra demonstração para explicar aos clientes o que é o aprendizado por reforço, queríamos algo que fosse mais fácil de transportar. Como a ML-Agents já tinha um ambiente de futebol, fazia sentido usar os pequenos e portáteis robôs Sony Toio para criar um jogo de futebol, o que também poderia levar a um conteúdo viral.

Para aplicar o aprendizado por reforço a um robô real, o robô precisa existir em um ambiente de simulação. Felizmente, a toio já tem um simulador chamado toio SDK for Unity. Ao adicionar o pacote ML-Agents a ele, pudemos usá-lo para treinamento imediatamente. Embora o SDK da toio tenha fornecido os modelos de robô para a Unity, ainda precisávamos criar a bola. Usamos o mecanismo de física do Unity para recriar a bola no simulador e precisávamos encontrar uma bola do mundo real que correspondesse aos resultados da simulação. Acontece que uma bola de golfe produziu resultados no mundo real que refletiram os resultados do treinamento. A posição da bola foi detectada na simulação usando o valor de transformação do Unity e, no mundo real, pelo reconhecimento de imagem usando o OpenCV e uma câmera.

Usamos uma bola de golfe para representar a bola de futebol, mas, para aumentar a taxa de reconhecimento, a pintamos de vermelho. Surpreendentemente, conseguimos usar apenas um iPhone e sua câmera para detectar a bola, controlar todos os oito robôs (era um jogo de futebol de quatro contra quatro) e realizar a inferência com o modelo ML-Agents.

No início, havia muitos gols contra, então tentamos oferecer uma recompensa negativa por um gol contra. No entanto, isso fez com que os goleiros não defendessem seu gol. Quando tentamos dar uma recompensa positiva pela movimentação da bola, as duas equipes simplesmente ficavam indo e voltando, sem colocar a bola no gol, basicamente perdendo tempo. Por fim, decidimos premiar com um ponto quem colocasse a bola no gol do adversário e retiramos um ponto quem sofresse um gol.
Às vezes, era difícil determinar por que os robôs reais não funcionavam tão bem quanto a simulação. Por exemplo, às vezes a inferência não funcionava porque operávamos o robô em um piso ligeiramente inclinado. Em outras ocasiões, a bola rebateu de forma diferente da simulação, de modo que os robôs não responderam como esperado. O posicionamento da câmera também era bastante sensível, exigindo precisão milimétrica, o que dificultava o ajuste no local do evento todos os dias. Após cada conjunto principal de aprimoramentos no modelo, treinamos por cerca de três dias. No final, tivemos cerca de seis sessões de treinamento para alcançar nossos resultados.
Na demonstração do ML-Agents, após um gol, os agentes se alinham em sua posição original, mas isso não é tão simples para robôs reais. Alguns problemas, como evitar colisões entre tótens, eram difíceis de resolver apenas com o aprendizado por reforço. Embora inicialmente tenhamos tentado projetar uma função de recompensa para esse cenário, acabamos resolvendo-o de forma heurística.

Se houvesse demanda, definitivamente consideraríamos a possibilidade de tornar esse projeto de código aberto. Você pode encontrar mais detalhes sobre esse projeto em nossa postagem no blog (em japonês).
A IA, especialmente a aprendizagem profunda, é fascinante, mas não é bem compreendida. Não é possível apreciar totalmente sua beleza e complexidade até que você trabalhe com ele em primeira mão, e isso é uma pena, por isso incentivamos os desenvolvedores da Unity em todo o mundo a experimentá-lo. Quero enfatizar o quanto o aprendizado de máquina é divertido e que o Unity ML-Agents é um sistema que permite que você comece a usar o aprendizado de máquina facilmente ou o incorpore em seu projeto.
Comece a usar os ML-Agents da Unity ou saiba mais sobre os pacotes da Unity Robotics hoje mesmo. Se o seu projeto exigir o início de várias sessões de treinamento em paralelo, entre em contato conosco para saber mais sobre a nossa oferta ML-Agents Cloud.
Hidekazu Furukawa também publicou um livro japonês chamado Unity ML-Agents Practical Game Programming, que detalha como começar a usar o aprendizado por reforço usando ML-Agents.
