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

Favoritos

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

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

BT