BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Experiência da iRobot na execução do ROS2 em plataformas embarcadas baseadas em Linux

Experiência da iRobot na execução do ROS2 em plataformas embarcadas baseadas em Linux

Durante o ROSCon 2019, Alberto Soragna, Juan Oxoby e Dhiraj Goel, da iRobot, apresentaram suas experiências com o Robot Operating System 2 (ROS 2) em uma plataforma embarcada de baixo custo. Ao testar diferentes implementações do Serviço de Distribuição de Dados (DDS), reduziram o uso da CPU e da memória nas aplicações, o que melhorou bastante o desempenho.

Como a iRobot está criando robôs de consumo com plataformas embarcadas de baixo custo, analisaram o uso do ROS 2 no hardware embarcado. O ROS 2 funciona bem em computadores desktop e em microcontroladores, mas é mais difícil utilizá-lo em pequenos computadores Linux. O iRobot adotou uma plataforma comparável com a que eles possuem em seus robôs, que para eles é um Raspberry Pi 2 com 1 gigabyte de RAM e uma CPU A7 de 900mhz quad-core ARM córtex. Para ver se o ROS2 era uma opção viável, estavam dispostos a aceitar uma sobrecarga de consumo para ROS com menos de 20% de CPU e 20 MB de RAM, uma latência aceitável para mensagens e zero porcento de perda.

Um dos principais desafios enfrentados pela iRobot durante o desenvolvimento é que tiveram aproximadamente 1000 robôs conectados à mesma rede durante a fase de prototipagem. Isso pode criar uma quantidade grande de sobrecarga de comunicação, que analisaram com uma ferramenta auto-escrita. Usaram essa ferramenta na criação de dados para analisar e ver quantas mensagens chegavam no prazo, atrasadas ou com um delay muito alto.

Durante a palestra, o iRobot mostrou que todos os limites definidos em termos de CPU e uso de memória foram excedidos. A sobrecarga de uso da CPU foi de 33% e a RAM foi de 153 MB em comparação ao máximo de 20 MB estipulado. A maior parte da sobrecarga veio da camada de comunicação DDS. Ao substituir essa camada pelo cyclone DDS, obtiveram resultados melhores. A aplicação de exemplo agora estava abaixo do uso máximo de CPU e memória, com apenas 13% de sobrecarga da CPU e 15,82 MB de RAM usados. Assim, os desenvolvedores precisam examinar a implementação do DDS e considerar a mudança para uma implementação diferente a fim de obter um aumento maciço no desempenho.

Uma segunda maneira pela qual o iRobot melhorou as estatísticas foi observando a fonte real da sobrecarga. O uso da RAM ficou alto porque o DDS cria um processo para cada objeto no ROS que pode se comunicar com outro tópico. Ao adicionar alguns itens na lista negra, restringiram a comunicação apenas aos nós que sabiam que tinham que encontrar um ao outro. Isso reduziu o uso de RAM para 45% da quantidade original.

O último ponto analisado foi o gerenciador entre processos do ROS 2. O gerenciador entre processos na versão atual do ROS 2, Dashing Diademata, envia mensagens implícitas através da camada RMW. O iRobot criou um novo gerenciador entre processos que reduz a quantidade de sobrecarga de comunicação, o que reduz a latência e o uso da CPU. Com essa mudança, conseguiram reduzir o uso da CPU em 45%, mesmo assim, ainda possui uma grande sobrecarga de memória RAM. O novo gerenciador entre processos foi adicionado à versão principal do ROS 2 e estará na próxima versão.

Para obter mais informações, consulte a ferramenta usada para criar essa análise de desempenho. Observe também as diferenças de políticas de qualidade de serviço que o ROS 2 oferece, para que possamos definir a qualidade esperada. Isso pode nos ajudar, como desenvolvedores, a obter a comunicação desejada na aplicação de robótica.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT