SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
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
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.
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;
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.
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.
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.
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;
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.
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
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!
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;
Hora da diversão!
Duvidas?
Mais informações:
● Projeto microROS: https://micro-ros.github.io/
● ROS2: https://index.ros.org/doc/ros2/
● Micro-XRCE DDS: https://www.eprosima.com/index.php/products-all/eprosima-micro-xrce-dds
● Demo out-of-tree: https://github.com/uLipe/microROS-esp32-fun
● Micro-ros-setup: https://github.com/micro-ROS/micro_ros_setup
● Micro-ros-arduino: https://github.com/micro-ROS/micro_ros_arduino
● Como instalar o ROS2 usando apt:
https://index.ros.org/doc/ros2/Installation/Crystal/Linux-Install-Binary/
Meus contatos:
● email: ryukokki.felipe@gmail.com
● Linkedin: https://www.linkedin.com/in/felipe-neves-a8092619/
● github: https://github.com/uLipe
● twitter: https://twitter.com/uuLipe
Muito Obrigado!

Contenu connexe

Tendances

Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladoresFabio Souza
 
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardwareComo montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardwareFabio Souza
 
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDRootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDNullbyte Security Conference
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?Fabio Souza
 
Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Douglas Esteves
 
Construindo sua placa baseada em Arduino
Construindo sua placa baseada em ArduinoConstruindo sua placa baseada em Arduino
Construindo sua placa baseada em ArduinoFabio Souza
 
Computação Móvel
Computação MóvelComputação Móvel
Computação MóvelEliasSanti
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - introduçã...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  introduçã...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  introduçã...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - introduçã...Fabio Souza
 
Ligando uma cafeteira com Micropython, Mqtt e Android
Ligando uma cafeteira com Micropython, Mqtt e AndroidLigando uma cafeteira com Micropython, Mqtt e Android
Ligando uma cafeteira com Micropython, Mqtt e AndroidGDGFoz
 
ORM - TDC Porto Alegre 2014 Trilha .NET
ORM - TDC Porto Alegre 2014 Trilha .NETORM - TDC Porto Alegre 2014 Trilha .NET
ORM - TDC Porto Alegre 2014 Trilha .NETJorge Maia
 
Novidades do C# 7.0 - Julho-2017
Novidades do C# 7.0 - Julho-2017Novidades do C# 7.0 - Julho-2017
Novidades do C# 7.0 - Julho-2017Renato Groff
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScriptTaller Negócio Digitais
 
Ferramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de SoftwareFerramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de SoftwareComunidade NetPonto
 

Tendances (20)

Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
 
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardwareComo montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
 
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDRootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
 
nodeLHC #secomp2016
nodeLHC #secomp2016nodeLHC #secomp2016
nodeLHC #secomp2016
 
Git
GitGit
Git
 
IoT: construindo ideias com nodeMCU e MQTT
IoT: construindo ideias com nodeMCU e MQTTIoT: construindo ideias com nodeMCU e MQTT
IoT: construindo ideias com nodeMCU e MQTT
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?
 
Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12
 
Oficina de IoT CPBS3
Oficina de IoT CPBS3Oficina de IoT CPBS3
Oficina de IoT CPBS3
 
Tdc2013 trilha arduino
Tdc2013   trilha arduinoTdc2013   trilha arduino
Tdc2013 trilha arduino
 
Construindo sua placa baseada em Arduino
Construindo sua placa baseada em ArduinoConstruindo sua placa baseada em Arduino
Construindo sua placa baseada em Arduino
 
Computação Móvel
Computação MóvelComputação Móvel
Computação Móvel
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - introduçã...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  introduçã...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  introduçã...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - introduçã...
 
Ligando uma cafeteira com Micropython, Mqtt e Android
Ligando uma cafeteira com Micropython, Mqtt e AndroidLigando uma cafeteira com Micropython, Mqtt e Android
Ligando uma cafeteira com Micropython, Mqtt e Android
 
Existe vida após o Arduino?
Existe vida após o Arduino?Existe vida após o Arduino?
Existe vida após o Arduino?
 
TDC2014 - Arduino Legacy
TDC2014 - Arduino LegacyTDC2014 - Arduino Legacy
TDC2014 - Arduino Legacy
 
ORM - TDC Porto Alegre 2014 Trilha .NET
ORM - TDC Porto Alegre 2014 Trilha .NETORM - TDC Porto Alegre 2014 Trilha .NET
ORM - TDC Porto Alegre 2014 Trilha .NET
 
Novidades do C# 7.0 - Julho-2017
Novidades do C# 7.0 - Julho-2017Novidades do C# 7.0 - Julho-2017
Novidades do C# 7.0 - Julho-2017
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScript
 
Ferramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de SoftwareFerramentas de Apoio ao Desenvolvimento de Software
Ferramentas de Apoio ao Desenvolvimento de Software
 

Similaire à Embarcados Live - microROS: ROS2 no seu ESP32

Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 
Asterisk central ipbx debian [artigo]
Asterisk central ipbx   debian [artigo]Asterisk central ipbx   debian [artigo]
Asterisk central ipbx debian [artigo]Carlos Melo
 
Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Alcides Costa
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?akamud
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaFelipe Silveira
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkIgor Kondrasovas
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no LinuxEduardo Rozario
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com dockerGiovanni Bassi
 
1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux EmbarcadoDiego Sueiro
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16Gabriel Lima
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro FrameworkIgor Kondrasovas
 
Robot Operating System - Iniciação a Robótica
Robot Operating System - Iniciação a RobóticaRobot Operating System - Iniciação a Robótica
Robot Operating System - Iniciação a RobóticaFrancisco Soares Lima Filho
 
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Fernando Luiz Cola
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 

Similaire à Embarcados Live - microROS: ROS2 no seu ESP32 (20)

Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 
Asterisk central ipbx debian [artigo]
Asterisk central ipbx   debian [artigo]Asterisk central ipbx   debian [artigo]
Asterisk central ipbx debian [artigo]
 
Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro Framework
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no Linux
 
Blackfin
BlackfinBlackfin
Blackfin
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com docker
 
1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro Framework
 
Robot Operating System - Iniciação a Robótica
Robot Operating System - Iniciação a RobóticaRobot Operating System - Iniciação a Robótica
Robot Operating System - Iniciação a Robótica
 
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 
IoT para Devs c#
IoT para Devs c#IoT para Devs c#
IoT para Devs c#
 
Redes2 aula02
Redes2 aula02Redes2 aula02
Redes2 aula02
 

Plus de Embarcados

Webinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoWebinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoEmbarcados
 
Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfEmbarcados
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosEmbarcados
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCEmbarcados
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraEmbarcados
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectEmbarcados
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalEmbarcados
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Embarcados
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Embarcados
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CEmbarcados
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GEmbarcados
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsEmbarcados
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Embarcados
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores MurataEmbarcados
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaEmbarcados
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Embarcados
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezEmbarcados
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Embarcados
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroEmbarcados
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Embarcados
 

Plus de Embarcados (20)

Webinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoWebinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásico
 
Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdf
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes Passivos
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DC
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP segura
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto Project
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissional
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2G
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores Murata
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
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;
  • 15. Mais informações: ● Projeto microROS: https://micro-ros.github.io/ ● ROS2: https://index.ros.org/doc/ros2/ ● Micro-XRCE DDS: https://www.eprosima.com/index.php/products-all/eprosima-micro-xrce-dds ● Demo out-of-tree: https://github.com/uLipe/microROS-esp32-fun ● Micro-ros-setup: https://github.com/micro-ROS/micro_ros_setup ● Micro-ros-arduino: https://github.com/micro-ROS/micro_ros_arduino ● Como instalar o ROS2 usando apt: https://index.ros.org/doc/ros2/Installation/Crystal/Linux-Install-Binary/
  • 16. Meus contatos: ● email: ryukokki.felipe@gmail.com ● Linkedin: https://www.linkedin.com/in/felipe-neves-a8092619/ ● github: https://github.com/uLipe ● twitter: https://twitter.com/uuLipe