Visão geral e pontos-chave do ROS (Robot Operating System)

ROS Robot Operating System Overview and Key Points

Objetivos de conceção do sistema ROS

With the rapid advancement and increasing complexity of robotics, the demand for code reusability and modularity has grown increasingly urgent. Some open-source robotics systems have struggled to adequately meet these needs. In 2007, Willow Garage released the open-source Robot Operating System (ROS), which quickly sparked a wave of learning and adoption within the robotics research community.

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.

O PR2 tinha um preço elevado, custando $400.000 no mercado de retalho em 2011. Atualmente, é utilizado principalmente para investigação. Equipado com dois braços, cada um com sete articulações, os efetores finais do PR2 são pinças de preensão. A mobilidade é assegurada por quatro rodas montadas na sua base. Câmaras de alta resolução, telémetros a laser, unidades de medição inercial, sensores táteis e outros equipamentos de deteção avançados estão montados na cabeça, no peito, nos cotovelos e nas pinças do PR2. Dois computadores de 8 núcleos na base funcionam como centro de controlo e comunicação para o hardware do robô. Ambos os computadores executam o Ubuntu e o ROS.

Objetivos de conceção do ROS

O ROS é de código aberto e funciona como um sistema operativo secundário para robôs. Oferece 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, troca de mensagens entre programas e gestão de pacotes. Também disponibiliza ferramentas e bibliotecas para adquirir, criar, escrever e executar programas colaborativos envolvendo vários robôs. O ROS é de código aberto e funciona como um sistema operativo de suporte, ou sistema operativo secundário, para robôs. Proporciona 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, troca de mensagens entre programas e gestão de pacotes. Oferece ainda programas utilitários e bibliotecas para a aquisição, compilação, programação e execução de programas colaborativos envolvendo vários robôs.

Principais características do ROS

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

As principais características das ROS 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 anfitriões distintos e que comunicam entre si durante o funcionamento através de uma topologia ponto a ponto. Embora as estruturas de software baseadas em servidores centrais também possam proporcionar as vantagens dos ambientes multiprocessos e multi-anfitriões, estas estruturas enfrentam problemas com o servidor de dados central quando os computadores estão ligados através de redes diferentes. Um sistema que utiliza o ROS consiste numa série de processos que existem em vários anfitriões diferentes e que comunicam durante o funcionamento através de uma topologia ponto a ponto. Embora as estruturas de software baseadas num servidor central também possam proporcionar as vantagens dos ambientes multiprocessos e multi-anfitriões, nessas estruturas surgem problemas com o servidor de dados central quando os computadores estão ligados através de redes diferentes.

  • Suporte multilingue

Ao escrever código, muitos programadores tendem a dar preferência a determinadas linguagens de programação. Estas preferências resultam de fatores como o tempo dedicado à programação em cada linguagem, a eficácia na depuração, a sintaxe, a eficiência de execução e várias considerações técnicas e culturais. Para dar resposta a estas questões, concebemos o ROS como uma estrutura neutra em termos de linguagem. O ROS suporta agora inúmeras linguagens diferentes, incluindo C++, Python, Octave e LISP, e inclui também várias implementações de interface para outras linguagens.

A singularidade do ROS manifesta-se principalmente na camada de comunicação de mensagens, em vez de em níveis mais profundos. As ligações e configurações de ponta a ponta são implementadas através do 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 respetivas convenções sintáticas, em vez de fornecer interfaces baseadas em C para outras linguagens. No entanto, em certos casos, é conveniente recorrer a bibliotecas existentes para encapsular o suporte a novas linguagens. Por exemplo, o cliente Octave é implementado utilizando uma biblioteca wrapper em C++.

Para apoiar o desenvolvimento multilinguístico, o ROS utiliza uma linguagem de definição de interface (IDL) simples e independente da linguagem de programação para descrever as trocas de mensagens entre módulos. A IDL utiliza texto conciso para definir a estrutura de cada mensagem e permite a composição de mensagens. Por exemplo, o diagrama seguinte ilustra uma mensagem «point» descrita utilizando a IDL:

Os geradores de código para cada linguagem produzem os ficheiros de código nativo correspondentes. Durante a transmissão e a receção de mensagens, o ROS compila e executa automaticamente esses ficheiros em paralelo. Isto poupa um tempo significativo 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, é possível enumerar facilmente novos tipos de mensagens. À data da redação deste artigo, as bibliotecas de código baseadas no ROS conhecidas contêm mais de quatrocentos tipos de mensagens. Estas mensagens transmitem dados de sensores, permitindo que os objetos detetem o que os rodeia.

O resultado final é um tratamento de mensagens independente da linguagem, o que permite misturar e combinar livremente várias línguas.

  • Racionalização e integração

A maioria dos projetos de engenharia de software em robótica existentes contém controladores e algoritmos que podem ser reutilizados fora do projeto. Infelizmente, por várias razões, as camadas intermédias da maior parte do código são excessivamente desorganizadas, o que dificulta a extração das suas funcionalidades e a sua aplicação para além da fase de prototipagem.

Para contrariar esta tendência, incentivamos 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 o ROS caracterizam-se pela modularidade, em que o código dentro de cada módulo pode ser compilado separadamente. A ferramenta CMake, utilizada para a compilação, facilita o conceito de minimalismo. O ROS encapsula essencialmente código complexo em bibliotecas, criando apenas pequenas aplicações para demonstrar a funcionalidade das bibliotecas. Isto permite que código simples seja portado e reutilizado para além da fase de prototipagem. Como nova vantagem, os testes unitários tornam-se significativamente mais fáceis quando o código está distribuído por várias bibliotecas. Um único programa de teste pode verificar várias funcionalidades dentro de uma biblioteca.

O ROS aproveita código de inúmeros projetos de código aberto existentes. Por exemplo, utiliza código de controladores, 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 atualizações de outras bibliotecas de software e correções de aplicações no seu código-fonte.

  • Conjunto de ferramentas abrangente

Para gerir a complexa estrutura de software ROS, recorremos a inúmeros utilitários para compilar e executar diversos componentes ROS, concebendo-os como um kernel, em vez de construir um ambiente de desenvolvimento e de execução de grandes dimensões. Estas ferramentas realizam várias tarefas, tais como organizar estruturas de código-fonte, recuperar e definir parâmetros de configuração, visualizar ligações de topologia de ponta a ponta, medir a utilização da largura de banda, representar de forma vívida os dados informativos e gerar documentação automaticamente. Embora tenhamos testado serviços essenciais, como o relógio global e o gravador para módulos controladores, continuamos a ter como objetivo modularizar todo o código. Acreditamos que qualquer perda de eficiência é amplamente compensada pelos benefícios da estabilidade e da redução da complexidade de gestão.

  • Livre e de código aberto

All ROS source code is publicly released. We believe this will inevitably promote debugging at all levels of ROS software and continuously correct errors. While non-open-source software like Microsoft Robotics Studio and Webots possesses many commendable attributes, we maintain that an open-source platform remains irreplaceable. This holds especially true when hardware and software at all levels are designed and debugged concurrently. All ROS source code is publicly released. We believe this will inevitably promote debugging at all levels of ROS software and continuously correct errors. Although non-open-source software like Microsoft Robotics Studio and Webots also possess many commendable attributes, we consider an open-source platform to be irreplaceable. This is especially true when hardware and software at all levels are designed and debugged simultaneously.

Representative Robots of Typical ROS on The Market

Os robôs representativos que utilizam o ROS disponíveis no mercado demonstram como esta estrutura de código aberto suporta diversas aplicações. Por exemplo, robôs móveis Robôs como o TurtleBot e o Husarion ROS são amplamente utilizados na educação e na investigação; robôs de serviço como o Fetch e o PR2 destacam-se pelas suas capacidades avançadas de manipulação e navegação; enquanto plataformas industriais, como o Husky da Clearpath, demonstram a integração do ROS em ambientes adversos. Estes exemplos refletem a flexibilidade e a escalabilidade do ROS tanto na robótica académica como na comercial.

A lista que se segue apresenta exemplos representativos de robôs ROS quadrúpedes, robôs ROS com rodas e robôs ROS com lagartas.

Best Quadruped Robots Powered by ROS

Nome da empresaPaísImagem de um robôCandidaturaSite oficial
Unitree RoboticsChinaUnitree Robotics educação, investigação e atividades industriaishttps://www.unitree.com/go2
Boston DynamicsEUABoston DynamicsInspeção Industrialhttps://bostondynamics.com/products/spot/

Top 5 Wheeled Robots Using ROS

Nome da empresaPaísImagem de um robôCarga útilSite oficial
MiRDinamarcaMiR Robot600 kghttps://www.mobile-industrial-robots.com
Robotnik RobotEspanhaRobotnik Automation Robot150 kghttps://bostondynamics.com/products/spot/
RobotnikEspanhaTop 5 Wheeled Robots Using ROS250 kg
Clearpath RoboticsCanadáClearpath Robotics100 kghttps://clearpathrobotics.com
Robô FdataChinarobô agrícola A0251000 kghttps://www. fdatabot.com

Best Tracked Robots with ROS Integration

Nome da empresaPaísImagem de um robôCandidaturaSite oficial
Superdroid

Robôs

CanadáSuperdroid Robot Tactical Robot Tactical Robothttps://www.superdroidrobots.com/store/tracked-robots

Procura soluções personalizadas de robótica? Contacte-nos

Entre em contacto connosco

A Fdata é um fabricante de robôs móveis na China; somos especializados em soluções personalizadas de robôs móveis, acompanhando os clientes desde a conceção até à produção em série.

A sua solução personalizada de robôs móveis começa aqui

Fabricante OEM/ODM sediado na China — AMR, AGV, automação de armazéns. Desde a conceção e I&D até à entrega a nível mundial.

  • Mais de 10 anos de experiência no fabrico de AMRs e AGVs
  • Soluções personalizadas implementadas em mais de 50 países
  • Avaliação gratuita do projeto e análise do ROI
  • O engenheiro responderá no prazo de 24 horas
Formulário de contacto

Especialista em robótica na FdataBot, com mais de 8 anos de experiência em robôs móveis, sistemas AMR/AGV, desenvolvimento de chassis para robôs e personalização OEM/ODM. Os seus guias ajudam os compradores globais a avaliar fornecedores, comparar opções técnicas e tomar decisões de aprovisionamento mais fiáveis.

INFORME-SE AGORA