O documento discute o microROS, que permite que microcontroladores sejam nós em uma rede ROS2. Ele explica como o microROS funciona, os sistemas operacionais e placas suportadas, e como configurar um nó microcontrolador usando o componente microROS-IDF para ESP32.
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Embarcados Live - microROS: ROS2 no seu ESP32
1.
2. Agenda
- ROS e ROS2:
- O que mudou;
- Microcontroladores bem vindos;
- microROS:
- Seu microcontrolador como um node;
- O Design;
- RTOS e boards suportados;
- Build convencional do microROS:
- Fluxo para desenvolver o firmware;
- Inconvenientes, a necessidade do ROS2
- O Fluxo alternativo com ESP32:
- Apresentando o componente microROS - IDF;
- O Design;
- Uma aplicação out-of-tree;
- Configurando o microROS e criando o seu node;
- Hora da diversão
- Dúvidas
3. ROS e ROS2 : O que mudou
● ROS2 utiliza C++ 11 com previsão de
integração com C++17, seu cliente Python
também evoluiu para versão acima da 3.5;
● ROS2 conta com seu middleware abstraido
para transporte, serialização e discovery;
● Essas implementações hoje são feitas em
cima de padrões como DDS;
● ROS2 oferece suporte para nodes real-time
sem depender de componentes externos;
● ROS2 oferece modelos de execução mais
granulares;
● Novo roslaunch para o ROS2 com scripts
escritos em python no lugar de XML.
4. ROS e ROS2 : microcontroladores bem vindos
● Abstraindo o middleware de
comunicação, niveis de
portabilidade foram
encontrados;
● A Client library consome uma
implementação de DDS;
● Implementações de DDS com
capacidades reduzidas podem
ser embarcados em
microcontroladores;
● De forma similar, uma
implementação DDS pode ser
colocada no topo de um RTOS;
5. microROS: Seu MCU como node
● Implementação estável de um
DDS para sistemas
embarcados;
● Construido no topo do projeto
MicroXRCE-DDS;
● O MCU pode criar tópicos
utilizando a client library escrita
em C;
● Suporte aos executores, timers
além das mensagens padrões
do ROS2;
● O MCU pode fazer publish e
subscribe de qualquer node, em
qualquer instância ROS2 na
mesma rede;
● Suporte de transportes
conhecidos como UART e rede.
6. microROS: O Design
● Composto pelos DDS-Client e
Agent;
● O Agent pode rodar em qualquer
instância ROS;
● Como o Agent é um DDS seu
discovery pelo ROS2 é nativo;
● O Client roda no MCU sendo
responsável por encaminhar os
dados para a RCL;
● O microROS pode ser compilado
como uma lib estática e ser
adicionada ao link do firmware
final;
● Suporte para nodes real-time
nativo utilizando o RTOS do MCU.
7. microROS: RTOS e boards suportadas
● Suporte nativo para plataformas
ARM, as mais populares
baseadas no STM32;
● Suporte para ESP32 através do
IDF;
● Suporte existente para Nuttx,
Zephyr e FreeRTOS;
● Qualquer RTOS pode ser
suportado desde que ofereça a
implementação para as syscalls
usadas pelo MicroXRCE-DDS;
● Recém adicionado suporte para
Arduino.
8. microROS: O build convencional
● Necessário uma instalação do ROS2, imagens
docker disponíveis;
● Envolve 4 passos:
○ Package build;
○ Configuração;
○ Build do Agent;
○ Build do Firmware;
● O Agent será executado em uma instância ROS2
qualquer;
● O Firmware é gravado no MCU alvo;
● Com o Agent em execução, basta conectar o MCU
para discovery automático;
9. microROS: Os inconvenientes, ROS2 ?
● Para compilar o firmware para o MCU, o
uso do ROS2 é mandatório;
● Isso pode se traduzir em complexidade, e
em uma instalação desnecessária do
ROS2;
● Imagens docker disponíveis ajudam
bastante;
● Mas o ambiente embedded disponível
nem sempre pode comportar uma
instalação do ROS2;
● A necessidade do ROS2 também complica
caso o firmware assuma uma estrutura
out-of-tree;
● Seria desejável poder compilar o
microROS stack no ambiente do meu
MCU.
10. microROS e ESP32: Uma alternativa interessante
● O microROS é
suportado pelo
ESP32 através do
IDF;
● O build system
convencional pode
ser utilizado;
● Um desejo, compilar
um app com
microROS do lado do
IDF;
● De preferência sem a
necessidade de
instalar o ROS2
11. microROS e ESP32: O componente microROS - IDF
● Criado a partir do suporte
existente para o ESP32;
● Possui o mesmo layout de um
componente do ESP-IDF;
● Todo processo de build do
microROS stack é abstraído
no build system;
● Permite a criação de firmware
out-of-tree;
● Não precisa de uma
instalação do ROS2 na
máquina host!
12. microROS e ESP32: Um node tipico num MCU
● Configure o microROS stack
utilizando o arquivo colcon.meta;
● Ajuste o número de publishers e
subscribers;
● Crie um node;
● Crie publishers e subscribers;
● Crie timers;
● Crie um executor;
● Adicione os objetos criados ao
executor;
● Invoque o spinner;