CapÃtulo 1 : Sistema Operativo do Robô
O Robot Operating System, às vezes conhecido como ROS ou ros, é um conjunto de middleware de código aberto para computação robótica. Apesar do fato de que o ROS não é um sistema operacional (SO), mas sim uma coleção de estruturas de software para o desenvolvimento de software de robô, ele oferece serviços que são destinados a um cluster de computadores heterogêneo. Esses serviços incluem abstração de hardware, controle de dispositivo de baixo nível, implementação de funcionalidade que é comumente usada, passagem de mensagens entre processos e gerenciamento de pacotes. A arquitetura gráfica é usada para representar conjuntos em execução de processos baseados em ROS. O processamento ocorre em nós que podem receber, postar e multiplexar dados do sensor, controle, status, planejamento, atuador e outros sinais. A arquitetura gráfica também é usada para representar a arquitetura da rede. O ROS não é um sistema operacional em tempo real (RTOS), apesar do fato de que a reatividade e a baixa latência são extremamente importantes no contexto do sistema de controle do robô. No entanto, é viável incorporar ROS com código que é usado para computação em tempo real. A ausência de suporte para sistemas em tempo real foi resolvida através do desenvolvimento do ROS 2, que é uma atualização significativa da interface de programação de aplicativos (API) ROS. O ROS 2 fará uso de bibliotecas e tecnologias contemporâneas para tarefas básicas de ROS, e também adicionará suporte para código de aplicativo em tempo real e hardware de sistema incorporado.
O software do ROS Ecosystem pode ser dividido em três categorias, que são as seguintes:
Como resultado de serem fornecidos sob as regras da licença BSD, as ferramentas independentes de linguagem, bem como as bibliotecas de cliente primário (C++, Python e Lisp) são software de código aberto que é livre para uso em configurações comerciais e de pesquisa. A grande maioria dos outros pacotes são licenciados sob um número de diferentes licenças de código aberto. Esses pacotes adicionais são responsáveis pela implementação de recursos e aplicativos que são frequentemente utilizados. Estes incluem drivers de hardware, modelos de robôs, tipos de dados, planejamento, perceção, localização e mapeamento simultâneos (SLAM), ferramentas de simulação e vários algoritmos.
As bibliotecas de cliente ROS primárias são projetadas para trabalhar com um sistema semelhante ao Unix. Isto deve-se principalmente ao facto de dependerem de conjuntos abrangentes de aplicações de software de código aberto. A distribuição Ubuntu Linux é referida como "Suportada" para certas bibliotecas cliente, enquanto outros sistemas operacionais, como Fedora Linux, macOS e Microsoft Windows, são referidos como "experimentais" e são suportados pela comunidade. Aplicativos baseados em ROS agora podem ser criados para o sistema operacional Android graças à biblioteca de cliente Java ROS nativa conhecida como rosjava. Esta biblioteca não compartilha essas restrições com outras bibliotecas de cliente ROS. Além disso, o rosjava tornou possível que o ROS fosse incorporado em uma caixa de ferramentas MATLAB oficialmente suportada. Esta caixa de ferramentas é compatível com Linux, macOS e Microsoft Windows. Além disso, uma biblioteca de cliente JavaScript conhecida como roslibjs foi desenvolvida. Esta biblioteca torna possível incorporar aplicativos em um sistema ROS usando qualquer navegador da Web que seja consistente com os padrões.
A Universidade de Stanford foi o local onde os componentes iniciais do que mais tarde se tornaria o ROS começaram a se reunir em algum momento antes de 2007. Na época, o Programa de Robótica Pessoal estava sendo dirigido por Eric Berger e Keenan Wyrobek, ambos estudantes de doutorado na Universidade de Stanford e trabalhando no laboratório de robótica de Kenneth Salisbury. Enquanto trabalhavam em robôs para realizar tarefas de manipulação em ambientes humanos, os dois alunos notaram que muitos dos seus colegas eram prejudicados pela natureza diversificada da robótica. Por exemplo, um excelente desenvolvedor de software pode não ter o conhecimento necessário de hardware, e alguém que está desenvolvendo planejamento de caminho de última geração pode não saber como executar a visão computacional necessária. Em um esforço para encontrar uma solução para este problema, os dois estudantes decidiram criar um sistema de base que serviria como uma base sobre a qual outros acadêmicos poderiam construir seus próprios sistemas. De acordo com Eric Berger, "algo que não foi uma, em todas essas diferentes dimensões" resume bem a situação.
Os dois indivíduos deram seus passos iniciais em direção a este sistema unificador, construindo o PR1 como um protótipo de hardware e, em seguida, começando a trabalhar em software baseado nele. Eles fizeram isso pegando emprestado as melhores práticas de outras estruturas iniciais de software robótico de código aberto, particularmente switchyard, que era um sistema que Morgan Quigley, outro estudante de doutorado de Stanford, vinha trabalhando em apoio ao Stanford Artificial Intelligence Robot (STAIR) pelo Stanford Artificial Intelligence Laboratory. O financiamento inicial no valor de cinquenta mil dólares dos Estados Unidos foi fornecido por Joanna Hoffman e Alain Rossmann, o que facilitou a criação do PR1. Enquanto procuravam fundos para um maior desenvolvimento, Eric Berger e Keenan Wyrobek encontraram Scott Hassan, o fundador da Willow Garage, uma incubadora de tecnologia que estava a trabalhar num SUV autónomo e num barco autónomo solar. Ambos os projetos estavam em processo de desenvolvimento. O conceito que Berger e Wyrobek tinham de um "Linux para robótica" foi compartilhado por Hassan, e ele fez um convite para que aceitassem emprego na Willow Garage. Willow Garage foi criada em janeiro de 2007, e em 7 de novembro do mesmo ano, o primeiro compromisso de código ROS foi feito para SourceForge.
Como seguimento do PR1, Willow Garage começou a trabalhar no robô PR2, e o ROS foi concebido para ser o software que seria usado para operá-lo. Um número crescente de pacotes que se integraram com ROS para estabelecer um ecossistema de software maior foram desenvolvidos com contribuições de mais de vinte instituições diferentes. Estas contribuições incluíram tanto o software principal como o número crescente de pacotes. Devido ao fato de que indivíduos de fora de Willow estavam contribuindo para o ROS, particularmente do projeto STAIR de Stanford, o ROS foi projetado desde o início para ser uma plataforma que poderia suportar vários robôs. Embora Willow Garage tenha trabalhado em outros projetos no passado, esses projetos foram abandonados em favor do Programa de Robótica Pessoal. O principal objetivo do programa era desenvolver o PR2 como uma plataforma de pesquisa para instituições acadêmicas e o ROS como uma pilha de robótica de código aberto que serviria como base para pesquisas acadêmicas e startups de tecnologia. Isso foi semelhante a como a pilha LAMP serviu como base para startups baseadas na web.
O primeiro dos três marcos internos do Willow Garage foi cumprido em dezembro de 2008, e consistiu em navegação contínua para o PR2 durante um período de dois dias e uma distância de pi quilômetros. Pouco tempo depois, uma versão inicial do ROS, conhecida como 0.4 Mango Tango, foi disponibilizada ao público. Seguiu-se a documentação inicial do RVIZ e o artigo inicial sobre ROS. O segundo marco interno foi alcançado no início do verão, que foi o PR2 ser capaz de navegar no local de trabalho, abrir portas e ligar-se simultaneamente. O lançamento do site ROS.org veio na esteira deste evento, que ocorreu em agosto. Quando o ROS 1.0 foi lançado em janeiro de 2010, as primeiras lições sobre o sistema operacional foram publicadas em dezembro, em preparação para seu lançamento. Foi o terceiro marco, que consistiu em desenvolver uma grande quantidade de documentação e tutoriais para as enormes capacidades que os engenheiros da Willow Garage produziram ao longo dos três anos anteriores.
Como resultado disso, a Willow Garage foi capaz de realizar um de seus objetivos de longa data, que era doar dez robôs PR2 para instituições de ensino superior de prestígio. Desde o início, este tinha sido um dos principais objetivos dos criadores, pois acreditavam que o PR2 tinha potencial para iniciar pesquisas robóticas em todo o mundo. Eles acabaram concedendo onze PR2s para diferentes instituições, incluindo Universidade de Freiburg (Alemanha), Robert Bosch GmbH, Georgia Institute of Technology, KU Leuven (Bélgica), Massachusetts Institute of Technology (MIT), Stanford University, Technical University of Munich (Alemanha), University of California, Berkeley, University of Pennsylvania, University of Southern California (USC) e University of Tokyo (Japão). Tudo isso, em conjunto com o programa de estágio extremamente frutífero que a Willow Garage ofereceu (que Melonee Wise supervisionou de 2008 a 2010), contribuiu para a disseminação de informações sobre ROS em toda a comunidade de robótica. ROS Box Turtle, o primeiro lançamento oficial da distribuição ROS, foi disponibilizado ao público em 2 de março de 2010. Este evento marcou a primeira vez que o ROS recebeu formalmente uma coleção de pacotes versionados para o público em geral utilizar. Como resultado dessas conquistas, o primeiro veículo autônomo a rodar ROS, o primeiro drone a rodar ROS, e a adaptação de ROS para Lego Mindstorms foram todos criados. O robô PR2 foi oficialmente disponibilizado para compra pelo público em geral em 9 de setembro de 2010, após o programa PR2 Beta ter sido executado por algum...