Instalando o ROS2 no Ubuntu 18.04

O ROS (sistema de operação robótica) ocupa com confiança uma posição de liderança nos padrões de robótica. Nas palavras de um político famoso, “não apenas tudo” já o está usando.
Neste artigo, tentaremos dar uma olhada no próximo estágio do desenvolvimento do ROS - o sistema ROS2, adequado para desenvolvedores mais "elegantes". Vamos comparar os dois sistemas em termos gerais e, ao mesmo tempo, instalar o ROS2 no Ubuntu 18.04.



* imagem de www.theconstructsim.com
Um modelo um pouco desatualizado será usado como configuração básica do PC - intel NUC (5i5RYK), 4 GB de RAM, SSD M.2 120Gb. O desempenho da NUC é suficiente "para os olhos" para fins de ROS, mas as placas de placa única (framboesa, odroid, jetson) não são deliberadamente consideradas, porque cada uma delas tem suas próprias especificidades. Supõe-se que o Ubuntu 18.04 (recomendado para uso com o ROS) já esteja instalado.

Introdução.


Na última década, o ROS (ROS1) cresceu e cresceu várias vezes. Atualmente,
ele tem uma lista enorme de pacotes, onde cada pacote resolve o problema parcial ou
completamente, o que elimina o conceito de invenção da roda novamente. Os pacotes criados pela comunidade levaram à criação de uma abordagem completamente nova da robótica e ao preenchimento inteligente proposto para os sistemas existentes.

Limitações de ROS1.


Apesar do ROS1 dar uma certa liberdade de comunicação com componentes complexos de hardware e software, existem algumas dificuldades associadas ao uso do ROS1 no produto final. Essas dificuldades começam a aparecer quando existe toda uma frota de robôs heterogêneos (robôs móveis, manipuladores robóticos etc.).
Estabelecer um relacionamento entre eles é bastante difícil devido às limitações arquitetônicas do ROS1.
A primeira limitação é que o ROS1 não suporta o conceito multimaster.
A segunda limitação do ROS1 é que, apesar de os nós poderem se comunicar sem problemas, não há maneira segura nessa comunicação. Qualquer pessoa que possa se conectar ao mestre (nó mestre) pode acessar os tópicos e, em seguida, explorá-los ou modificá-los. Portanto, o principal objetivo do ROS1 é testar o conceito ou protótipo para fins científicos.
E a terceira, talvez a principal limitação do ROS1, é que esse sistema não é um sistema em tempo real. Isso leva a atrasos no recebimento de dados e sua perda.
Todas as desvantagens acima levaram à criação do ROS2.

Quais são os benefícios do ROS2?


- permite estabelecer conexões seguras entre componentes do sistema (nós)
- a interação é em tempo real
- a conexão de vários robôs em uma rede é simplificada
- a qualidade da comunicação entre nós
é aprimorada - o nível da arquitetura ROS é implementado diretamente no hardware
- os pacotes mais recentes são usados atualizações (o ROS1 não é atualizado com frequência).

O ROS2 segue o padrão da indústria e implementa a interação em tempo real através do chamado conceito DDS (Data Distributed Services).

Versões de ROS2

.
A primeira versão estável oficial do ROS2 foi lançada em dezembro de 2017. A distribuição foi nomeada "Ardente Apalone". Houve um lançamento em junho de 2018, com o nome "Bouncy Bolson". Crystal Clemmys apareceu em dezembro de 2018. Dashing Diademata (versão atual) em maio de 2019. Como você pode ver, as distribuições são atualizadas com bastante alegria e, esperançosamente, o alfabeto é suficiente pela primeira vez.

Suporte de SO

.
O ROS2 suporta (se falamos de suporte oficial) as camadas de Linux, Windows, macOS e sistemas operacionais em tempo real (RTOS), ROS1 apenas Linux e macOS.
Suporte mais detalhado ao SO:


Então, por que você precisa do ROS2?


O ROS2 usa os mesmos princípios operacionais que o ROS1. Ao mesmo tempo, o ROS2 não faz parte do ROS1. O ROS2 foi criado para ultrapassar os limites de seus colegas, usando ferramentas e dependências mais recentes.
Diferentemente do ROS1, cuja pilha é gravada em C ++ e das bibliotecas clientes em C ++ e Python, o ROS-2 também usa a linguagem C. É introduzido um nível independente escrito em C que interage com as bibliotecas clientes do ROS2, como rclcpp, rclpy e rcljava.

O ROS2 suporta melhor configurações de rede e implementa conexões confiáveis.
O ROS2 também não usa mais o conceito de nodelets (http://wiki.ros.org/nodelet) e suporta a capacidade de inicializar vários nós ao mesmo tempo (inicialização multinode). Ao contrário do ROS1, outro recurso distintivo do ROS2 é a capacidade de rastrear o status de um nó e receber mensagens se um nó ou tópico for adicionado ou excluído. Isso pode ser usado para criar sistemas tolerantes a falhas.

Alterações que ocorreram no ROS2 em comparação ao ROS1:


Instale o ROS2

.
Então, instalaremos a partir das fontes a distribuição atual do Dashing Diademata (dashing) no Ubuntu 18.04

Configure o ambiente.


$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8


Adicione repositórios ROS2.


$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |
sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


Instale as ferramentas do desenvolvedor do ROS.


$ sudo apt update && sudo apt install -y build-essential cmake git
python3-colcon-common-extensions python3-lark-parser python3-pip
python-rosdep python3-vcstool wget
$ python3 -m pip install -U argcomplete flake8 flake8-blind-except
flake8-builtins flake8-class-newline flake8-comprehensions flake8-
deprecated flake8-docstrings flake8-import-order flake8-quotes
pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner
setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev


Crie um espaço de trabalho ROS2.


$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos

Vai levar algum tempo.

Instale dependências usando o rosdep.


$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69
rti-connext-dds-5.3.1 urdfdom_headers"

Se tudo correu bem e a entrada "Todos os rosdeps necessários instalados com sucesso" aparecer no terminal, você poderá prosseguir para a próxima etapa.

Nós coletamos o código, instalamos o colcon.


No ROS1, os pacotes foram coletados usando a ferramenta catkin. O ROS2 usa colcon (um utilitário que inclui catkin_make, catkin_make_isolated, catkin_tools e ament_tools). O colcon pode coletar pacotes ROS1 e pacotes ROS2. Após o último comando, você pode ir com segurança para beber chá, porque A instalação pode demorar cerca de uma hora. Após a conclusão bem-sucedida, aproximadamente as seguintes informações sobre a instalação bem-sucedida aparecerão no terminal:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






Configurando o ambiente para o ROS2 (ambiente).


Para não inserir o comando longo 'source ~ / ros2_ws / install / local_setup.bash' sempre que iniciar o ROS no terminal, adicione o alias ao bashrc:
$ sudo gedit ~/.bashrc

Em seguida, adicione a linha ao final do arquivo:
alias initros2='source ~/ros2_ws/install/local_setup.bash

Salve, saia do arquivo e leia-o novamente com o comando (para não reiniciar sistema):
$ source ~/.bashrc

Verifique o funcionamento do ROS2.


1º terminal: Estes comandos iniciam o nó falante. 2º terminal: Aqui, respectivamente, o nó “ouvindo” é iniciado. Visualmente, os dois nós se parecem com isso: Você também pode examinar os tópicos gerados pelos nós no terceiro terminal: Para resumir. O ROS2 foi revisado em comparação com o ROS1, o procedimento de instalação do ROS2 (Dashing Diademata (dashing)) no Ubuntu 18.04 foi demonstrado.
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles