INQUIRE AGORA

Visão geral e pontos-chave do sistema operativo de robôs ROS

ROS Robot Operating System Overview and Key Points

Objectivos de conceção do sistema ROS

Com o rápido avanço e a crescente complexidade da robótica, a procura de reutilização e modularidade do código tornou-se cada vez mais urgente. Alguns sistemas de robótica de código aberto têm-se esforçado por satisfazer adequadamente estas necessidades. Em 2007, a Willow Garage lançou o Sistema Operativo de Robôs (ROS) de código aberto, que rapidamente desencadeou uma onda de aprendizagem e adoção na comunidade de investigação em robótica.

The ROS system originated from a collaboration between a 2007 project at Stanford University’s Artificial Intelligence Laboratory and Willow Garage’s Personal Robots Program. After 2008, development was led by Willow Garage. With the remarkable feats of early ROS robots like the PR2—such as folding clothes, plugging in devices, and preparing breakfast—ROS gained increasing attention. Willow Garage expressed its ambition to leverage open-source development to transform PR2 into a “universal” robot.

PR2 came with a hefty price tag, retailing for $400,000 in 2011. It is now primarily used for research. Equipped with two arms, each featuring seven joints, PR2’s end effectors are grasping grippers. Mobility is provided by four wheels mounted on its base. High-resolution cameras, laser rangefinders, inertial measurement units, tactile sensors, and other advanced sensing equipment are mounted on the PR2’s head, chest, elbows, and grippers. Two 8-core computers at the base serve as the control and communication hub for the robot’s hardware. Both computers run Ubuntu and ROS.

Objectivos de conceção do ROS

O ROS é de código aberto e funciona como um sistema operativo secundário para robôs. Fornece funções semelhantes às de um sistema operativo, incluindo abstração de hardware, gestão de controladores de baixo nível, execução de funções partilhadas, mensagens entre programas e gestão de pacotes. Também oferece ferramentas e bibliotecas para adquirir, construir, escrever e executar programas colaborativos multi-robô. O ROS é de código aberto e funciona como um sistema operativo backend, ou sistema operativo secundário, para robôs. Fornece funções semelhantes às de um sistema operativo, incluindo abstração de hardware, gestão de controladores de baixo nível, execução de funções partilhadas, mensagens entre programas e gestão de pacotes. Também oferece programas utilitários e bibliotecas para adquirir, construir, escrever e executar programas colaborativos multi-robô.

Principais caraterísticas do ROS

A arquitetura de tempo de execução do ROS é uma estrutura de processamento que utiliza os módulos de comunicação do ROS para estabelecer ligações de rede ponto-a-ponto pouco acopladas entre módulos. Implementa vários tipos de comunicação, incluindo comunicação RPC (Remote Procedure Call) síncrona baseada em serviços, comunicação de fluxo de dados assíncrona baseada em tópicos e armazenamento de dados no servidor de parâmetros. No entanto, o ROS em si não possui inerentemente capacidades de tempo real.

As principais caraterísticas dos ERO podem ser resumidas da seguinte forma:

  • Conceção ponto a ponto

Um sistema que utiliza o ROS consiste numa série de processos que existem em vários hosts distintos e comunicam durante o funcionamento através de uma topologia ponto-a-ponto. Embora as estruturas de software baseadas em servidores centrais também possam obter as vantagens dos ambientes multi-processo e multi-hospedeiro, estas estruturas deparam-se com problemas com o servidor de dados central quando os computadores estão ligados através de redes diferentes. Um sistema que utiliza o ROS é composto por uma série de processos que existem em vários hosts diferentes e que comunicam durante o funcionamento através de uma topologia ponto-a-ponto. Embora os quadros de software baseados num servidor central também possam obter as vantagens dos ambientes multi-processo e multi-hospedeiro, nestes quadros surgem problemas com o servidor de dados central quando os computadores estão ligados através de redes diferentes.

  • Suporte multilingue

Quando escrevem código, muitos programadores tendem a preferir determinadas linguagens de programação. Estas preferências resultam de factores como a quantidade de tempo gasto a programar em cada linguagem, a eficácia da depuração, a sintaxe, a eficiência de execução e várias considerações técnicas e culturais. Para resolver estas questões, concebemos o ROS como uma estrutura neutra em termos de linguagem. O ROS agora suporta várias linguagens diferentes, incluindo C++, Python, Octave e LISP, e também inclui várias implementações de interface para outras linguagens.

A singularidade do ROS manifesta-se principalmente na camada de comunicação de mensagens e não em níveis mais profundos. As ligações e configurações de ponta a ponta são implementadas utilizando o mecanismo XML-RPC, que também inclui implementações bem documentadas para a maioria das principais linguagens de programação. O nosso objetivo é que o ROS seja implementado de forma mais natural em várias linguagens, alinhando-se com as respectivas convenções de sintaxe, em vez de fornecer interfaces baseadas em C para outras linguagens. No entanto, em certos casos, é conveniente aproveitar as bibliotecas existentes para encapsular o suporte a novas linguagens. Por exemplo, o cliente Octave é implementado usando uma biblioteca de invólucro C++.

To support cross-language development, ROS employs a simple, language-agnostic interface definition language (IDL) to describe message exchanges between modules. The IDL uses concise text to define each message’s structure and allows message composition. For example, the following diagram illustrates a point message described using IDL:

Os geradores de código para cada língua produzem ficheiros de código nativo correspondentes. Durante a transmissão e receção de mensagens, o ROS compila e executa automaticamente estes ficheiros em paralelo. Isto poupa muito tempo de programação e reduz os erros: o ficheiro IDL de três linhas expande-se automaticamente em 137 linhas de código C++, 96 linhas de código Python, 81 linhas de código Lisp e 99 linhas de código Octave. Uma vez que as mensagens são geradas automaticamente a partir de ficheiros de texto simples, os novos tipos de mensagens podem ser facilmente enumerados. No momento em que este artigo foi escrito, as bibliotecas de código conhecidas baseadas no ROS contêm mais de quatrocentos tipos de mensagens. Estas mensagens transmitem dados de sensores, permitindo aos objectos detetar o que os rodeia.

O resultado final é um tratamento de mensagens independente da língua, permitindo que várias línguas sejam livremente misturadas e combinadas.

  • Racionalização e integração

A maioria dos projectos de engenharia de software de robótica existentes contém controladores e algoritmos que podem ser reutilizados fora do projeto. Infelizmente, devido a várias razões, as camadas intermédias da maior parte do código são demasiado confusas, o que dificulta a extração da sua funcionalidade e a sua aplicação para além da prototipagem.

Para contrariar esta tendência, encorajamos a evolução gradual de todos os controladores e algoritmos para bibliotecas autónomas independentes das dependências do ROS. Os sistemas construídos com ROS apresentam modularidade, onde o código dentro de cada módulo pode ser compilado separadamente. A ferramenta CMake usada para compilação facilita o conceito de minimalismo. O ROS essencialmente encapsula código complexo dentro de bibliotecas, criando apenas pequenos aplicativos para demonstrar a funcionalidade da biblioteca. Isto permite que o código simples seja portado e reutilizado para além da prototipagem. Como uma nova vantagem, os testes unitários tornam-se significativamente mais fáceis quando o código é distribuído pelas bibliotecas. Um único programa de teste pode verificar vários recursos dentro de uma biblioteca.

O ROS aproveita o código de vários projectos de código aberto existentes. Por exemplo, empresta código de driver, controlo de movimento e simulação do projeto Player; algoritmos de visão do OpenCV; algoritmos de planeamento do OpenRAVE; e muitos outros. Em cada caso, o ROS oferece diversas opções de configuração e facilita a comunicação de dados entre os componentes de software, aplicando o mínimo de wrappers e modificações. O ROS evolui continuamente através da manutenção da comunidade, incorporando actualizações de outras bibliotecas de software e patches de aplicações no seu código fonte.

  • Kit de ferramentas abrangente

Para gerir a complexa estrutura de software do ROS, utilizámos vários utilitários para compilar e executar diversos componentes do ROS, concebendo-os como um kernel em vez de construir um ambiente de desenvolvimento e de tempo de execução maciço. Estas ferramentas tratam de várias tarefas, como a organização de estruturas de código-fonte, a recuperação e definição de parâmetros de configuração, a visualização de ligações topológicas de ponta a ponta, a medição da utilização da largura de banda, a representação vívida de dados de informação e a geração automática de documentação. Embora tenhamos testado serviços essenciais como o relógio global e o gravador para módulos controladores, ainda pretendemos modularizar todo o código. Acreditamos que qualquer perda de eficiência é largamente compensada pelos benefícios da estabilidade e da redução da complexidade de gestão.

  • Gratuito e de código aberto

Todo o código fonte do ROS é divulgado publicamente. Acreditamos que isto irá inevitavelmente promover a depuração a todos os níveis do software ROS e corrigir continuamente os erros. Embora o software que não é de código aberto, como o Microsoft Robotics Studio e o Webots, possua muitos atributos louváveis, defendemos que uma plataforma de código aberto continua a ser insubstituível. Isto é especialmente verdade quando o hardware e o software a todos os níveis são concebidos e depurados em simultâneo. Todo o código-fonte do ROS é divulgado publicamente. Acreditamos que isto irá inevitavelmente promover a depuração a todos os níveis do software ROS e corrigir continuamente os erros. Embora o software que não é de código aberto, como o Microsoft Robotics Studio e o Webots, também possua muitos atributos louváveis, consideramos que uma plataforma de código aberto é insubstituível. Isto é especialmente verdade quando o hardware e o software a todos os níveis são concebidos e depurados em simultâneo.

Robôs representativos de ROS típicos no mercado

Os robôs representativos que utilizam o ROS no mercado mostram como este quadro de código aberto suporta diversas aplicações. Por exemplo, robôs móveis such as TurtleBot and Husarion ROS bot are widely used for education and research; service robots like Fetch and PR2 highlight advanced manipulation and navigation capabilities; while industrial platforms such as Clearpath’s Husky demonstrate ROS integration in rugged environments. These examples reflect the flexibility and scalability of ROS in both academic and commercial robotics.

Segue-se uma lista de robôs ROS quadrúpedes, robôs ROS com rodas e robôs ROS com lagartas representativos.

Best Quadruped Robots Powered by ROS

Nome Copmay País Imagem do robô Aplicação Sítio Web oficial
Unitree Robotics China Unitree Robotics  ensino, investigação e actividades industriais https://www.unitree.com/go2
Boston Dynamics EUA Boston Dynamics Inspeção Industrial https://bostondynamics.com/products/spot/

Os 5 principais robôs com rodas que utilizam o ROS

Nome Copmay País Imagem do robô Reproduzir Sítio Web oficial
MiR Dinamarca Robô MiR 600 kg https://www.mobile-industrial-robots.com
Robô Robotnik Espanha Robô de automação Robotnik 150 kg https://bostondynamics.com/products/spot/
Robotnik Espanha 250 kg
Clearpath Robotics Canadá Clearpath Robotics 100 kg https://clearpathrobotics.com
Robô Fdata China robô agrícola A025 1000KG https://www. fdatabot.com

Best Tracked Robots with ROS Integration

Nome Copmay País Imagem do robô Aplicação Sítio Web oficial
Superdróide

Robôs

Canadá Robô Superdroid  Robô tático Robô tático https://www.superdroidrobots.com/store/tracked-robots
Your Custom Mobile Robot Solution Starts Here

China-based OEM/ODM manufacturer — AMR, AGV, warehouse automation. From design and R&D to global delivery.

  • 10+ years manufacturing AMRs & AGVs
  • Custom solutions deployed in 50+ countries
  • Free project evaluation & ROI analysis
  • Engineer reply within 24 hours
Formulário de contacto

Especialista em robótica, apaixonado pela exploração de uma vasta gama de robôs, robôs que tornam o trabalho mais eficiente, explorando robôs, incluindo robôs móveis, robôs corta-relvas