SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
INICIAÇÃO A
ROBÓTICA
Francisco Soares
13 e 14 de junho, Sala 38
campus HUMAITÁ
INICIAÇÃO A
ROBÓTICA
INICIAÇÃO A
ROBÓTICA
O ROS é uma estrutura(framework) de software
flexível e de código aberto para programação de
robôs. O ROS fornece uma camada de abstração
de hardware, na qual os desenvolvedores podem
criar aplicativos de robótica sem se preocupar
com o hardware subjacente. O ROS também
fornece diferentes ferramentas de software para
visualizar e depurar dados do robô.
O que você precisa aprender para programar
um robô com ROS?
Primeiro, você precisará aprender alguns
conceitos básicos. Por exemplo, você não
pode aprender a correr antes de saber
andar.
INICIAÇÃO A
ROBÓTICA
O que você precisa aprender para programar
um robô com ROS?
Em segundo lugar, você precisa saber
sobre os tópicos. Os tópicos são,
provavelmente, a parte mais importante do
ROS, então você precisará aprendê-los
com cuidado.
INICIAÇÃO A
ROBÓTICA
O que você precisa aprender para programar
um robô com ROS?
O ROS trata quase todas as suas comunicações por
meio de tópicos. Sistemas de comunicação ainda mais
complexos, como serviços ou ações, dependem, no
final, de tópicos. Por meio de tópicos ROS, você poderá
se comunicar com seu robô para fazê-lo se mover, ler
as leituras do sensor do seu robô e muito mais.
INICIAÇÃO A
ROBÓTICA
O que é programação de robôs?
Um robô é uma máquina com sensores,
atuadores (motores) e uma unidade de
computação que se comporta com base
nos controles do usuário ou pode tomar
suas próprias decisões com base nas
entradas dos sensores.
INICIAÇÃO A
ROBÓTICA
INICIAÇÃO A
ROBÓTICA
INICIAÇÃO A
ROBÓTICA
Pepper: http://wiki.ros.org/Robots/Pepper
REEM-C: http://wiki.ros.org/Robots/Robonaut2
TurtleBot 2: http://wiki.ros.org/Robots/TurtleBot
Robonaut: http://wiki.ros.org/Robots/Robonaut2
Universal Robotic arms: http://wiki.ros.org/universal_robot
Pacotes ROS de robôs
INICIAÇÃO A
ROBÓTICA
INICIAÇÃO A
ROBÓTICA
Velodyne(a): http://wiki.ros.org/Velodyne
ZED Camera(b): http://wiki.ros.org/zed-ros-wrapper
Teraranger(c): http://wiki.ros.org/terarangerone
Xsens(d): http://wiki.ros.org/terarangerone
Hokuyo Laser range finder(e):
http://wiki.ros.org/hokuyo_node
Intel real sense(f): http://wiki.ros.org/realsense_camera
Pacotes ROS de sensores
INICIAÇÃO A
ROBÓTICA
Open-CV: http://wiki.ros.org/vision_opencv
PCL: http://wiki.ros.org/pcl_ros
Open-NI: http://wiki.ros.org/openni_launch
Open-Rave: http://openrave.org/
Orocos: http://www.orocos.org/
Webots: https://www.cyberbotics.com/overview
V-REP: http://www.coppeliarobotics.com/
Pacotes ROS de sensores
O que é programação de robôs?
A programação de robôs é um subconjunto da
programação de computadores. A diferença entre a
programação do robô e a programação convencional
são os dispositivos de entrada e saída. Os dispositivos
de entrada incluem sensores de robô, pendentes de
instrução e telas sensíveis ao toque, e os dispositivos
de saída incluem telas de LCD e atuadores.
INICIAÇÃO A
ROBÓTICA
Recursos necessários para a programação um robô:
● Threading:
● Programação orientada a objetos de alto nível:
● Controle de dispositivo de baixo nível:
● Facilidade de prototipagem:
● Comunicação entre processos:
● Atuação:
● Suporte da comunidade:
● Disponibilidade de bibliotecas de terceiros:
● Suporte de estrutura de software de robótica existente:
INICIAÇÃO A
ROBÓTICA
Recursos necessários para a programação um robô:
● Threading:
● Programação orientada a objetos de alto nível:
● Controle de dispositivo de baixo nível:
● Facilidade de prototipagem:
● Comunicação entre processos:
● Atuação:
● Suporte da comunidade:
● Disponibilidade de bibliotecas de terceiros:
● Suporte de estrutura de software de robótica existente:
INICIAÇÃO A
ROBÓTICA
Comunicação Ferramentas Capacidades Ecossistema
Equação do ROS
INICIAÇÃO A
ROBÓTICA
Conceitos do ROS
● Nó: Um nó(node) consiste em um executável que utiliza o ROS para realizar a
comunicação com outros nó(node).
● Menssagens: Tipos de dados no ROS usados quando se publica ou sobrescreve
de tópico.
● Tópicos: Nós(node) podem publicar menssagens em tópicos assim como podem
subescrever menssagens de tópicos.
● Master: Service de gerenciamento do sistema do ROS (ex: ajuda os nós a se
encontrarem no sistema.)
● rosout: Equivalente do ROS ao stdout/stderr
● roscore: Comando para inicializar o Master + rosout + servidor de parâmetros . É
um dos comandos para inializar o "sistema" do ROS.
INICIAÇÃO A
ROBÓTICA
Conceitos de Computação ROS
Nós ROS (ROS node): Processo que usa APIs ROS para realizar cálculos.
Mestre ROS (ROS master): Um programa intermediário que conecta nós ROS node.
Servidor de parâmetros ROS(ROS parameter server): Um programa que normalmente é executado juntamente com o
mestre ROS. O usuário pode armazenar vários parâmetros ou valores neste servidor e todos os nós pode acessá-lo. O
usuário pode definir a privacidade do parâmetro também. Se for um parâmetro público, todos os nós têm Acesso; se for
privado, apenas um nó específico pode acessar
o parâmetro.
Tópicos do ROS: Barramentos nomeados nos quais os nós do ROS podem envie uma mensagem. Um nó pode publicar ou
assinar qualquer número de tópicos.
Mensagem ROS: As mensagens estão basicamente indo através do tópico. Existem mensagens existentes baseadas em
tipos de dados primitivos, e os usuários podem escrever seus próprios mensagens.
Serviço ROS: Já vimos tópicos ROS, que é ter um mecanismo de publicação e assinatura. O serviço ROS possui um
mecanismo de solicitação/resposta. Um serviço call é uma função, que pode chamar sempre que um nó cliente envia um
pedido. O nó que cria uma chamada de serviço é chamado de nó do servidor e que chama o serviço é chamado nó cliente.
ROS bags: Um método útil para salvar e reproduzir ROS tópicos. Também útil para registrar os dados de um robô para
processá-lo mais tarde.
roscore é o comando para inicializar o
Master e deve ser a primeira coisa a ser
inicializada no ROS
Comando no terminal:
$ roscore
INICIAÇÃO A
ROBÓTICA
$ cd catkin_ws/
$ pwd
O comando rosnode mostra as
informações dos nós(nodes) que estão
rodando. O comando rosnode list lista
os nós(nodes) que estão ativos no
momento.
$ rosnode list
INICIAÇÃO A
ROBÓTICA
rosnode ping test connectivity to node
rosnode list list active nodes
rosnode info print information about node
rosnode machine list nodes running on a particular
machine or list machines
rosnode kill kill a running node
rosnode cleanup purge registration information of
unreachable nodes
O comando rosnode info
retorna informações sobre um nó
(nodes) específico.
$ rosnode info /rosout
INICIAÇÃO A
ROBÓTICA
A ferramenta rostopic permite obter
informações sobre os tópicos ROS.
Você pode usar a opção de ajuda para obter
os subcomandos disponíveis para rostopic
$ rostopic -h
INICIAÇÃO A
ROBÓTICA
rostopic list retorna uma lista de
todos os tópicos atualmente
inscritos e publicados.
$ rostopic list -h
INICIAÇÃO A
ROBÓTICA
rostopic echo mostra os dados
publicados em um tópico.
rostopic echo [topic]
INICIAÇÃO A
ROBÓTICA
theconstructsim.com
INICIAÇÃO A
ROBÓTICA
Quanto é o investimento?
INICIAÇÃO A
ROBÓTICA
theconstructsim.com
INICIAÇÃO A
ROBÓTICA
O que você precisa aprender para programar um robô com ROS?
INICIAÇÃO A
ROBÓTICA
theconstructsim.com
INICIAÇÃO A
ROBÓTICA
fanciscosoares@gmail.com
Dúvidas
brigado!

Más contenido relacionado

Similar a Robot Operating System - Iniciação a Robótica

Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoEmerson Macedo
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open SourceEdgar Silva
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017Vitor Mattos
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelMozDevz
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filhorafarubert
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livreDiego Santos
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On RailsAndre Ferraro
 
Aplicacoes para celular com Ruby
Aplicacoes para celular com RubyAplicacoes para celular com Ruby
Aplicacoes para celular com Rubymfcastellani
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSEmerson Macedo
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETAlessandro Binhara
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaLinux User Goup Alagoas
 

Similar a Robot Operating System - Iniciação a Robótica (20)

Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
Web Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to LaravelWeb Training Aula 03: Introduction to Laravel
Web Training Aula 03: Introduction to Laravel
 
Mastering Laravel
Mastering LaravelMastering Laravel
Mastering Laravel
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filho
 
Ruby e Rails
Ruby e RailsRuby e Rails
Ruby e Rails
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livre
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
 
Aplicacoes para celular com Ruby
Aplicacoes para celular com RubyAplicacoes para celular com Ruby
Aplicacoes para celular com Ruby
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em Robótica
 

Robot Operating System - Iniciação a Robótica

  • 1. INICIAÇÃO A ROBÓTICA Francisco Soares 13 e 14 de junho, Sala 38 campus HUMAITÁ
  • 3. INICIAÇÃO A ROBÓTICA O ROS é uma estrutura(framework) de software flexível e de código aberto para programação de robôs. O ROS fornece uma camada de abstração de hardware, na qual os desenvolvedores podem criar aplicativos de robótica sem se preocupar com o hardware subjacente. O ROS também fornece diferentes ferramentas de software para visualizar e depurar dados do robô.
  • 4. O que você precisa aprender para programar um robô com ROS? Primeiro, você precisará aprender alguns conceitos básicos. Por exemplo, você não pode aprender a correr antes de saber andar. INICIAÇÃO A ROBÓTICA
  • 5. O que você precisa aprender para programar um robô com ROS? Em segundo lugar, você precisa saber sobre os tópicos. Os tópicos são, provavelmente, a parte mais importante do ROS, então você precisará aprendê-los com cuidado. INICIAÇÃO A ROBÓTICA
  • 6. O que você precisa aprender para programar um robô com ROS? O ROS trata quase todas as suas comunicações por meio de tópicos. Sistemas de comunicação ainda mais complexos, como serviços ou ações, dependem, no final, de tópicos. Por meio de tópicos ROS, você poderá se comunicar com seu robô para fazê-lo se mover, ler as leituras do sensor do seu robô e muito mais. INICIAÇÃO A ROBÓTICA
  • 7. O que é programação de robôs? Um robô é uma máquina com sensores, atuadores (motores) e uma unidade de computação que se comporta com base nos controles do usuário ou pode tomar suas próprias decisões com base nas entradas dos sensores. INICIAÇÃO A ROBÓTICA
  • 9. INICIAÇÃO A ROBÓTICA Pepper: http://wiki.ros.org/Robots/Pepper REEM-C: http://wiki.ros.org/Robots/Robonaut2 TurtleBot 2: http://wiki.ros.org/Robots/TurtleBot Robonaut: http://wiki.ros.org/Robots/Robonaut2 Universal Robotic arms: http://wiki.ros.org/universal_robot Pacotes ROS de robôs
  • 11. INICIAÇÃO A ROBÓTICA Velodyne(a): http://wiki.ros.org/Velodyne ZED Camera(b): http://wiki.ros.org/zed-ros-wrapper Teraranger(c): http://wiki.ros.org/terarangerone Xsens(d): http://wiki.ros.org/terarangerone Hokuyo Laser range finder(e): http://wiki.ros.org/hokuyo_node Intel real sense(f): http://wiki.ros.org/realsense_camera Pacotes ROS de sensores
  • 12. INICIAÇÃO A ROBÓTICA Open-CV: http://wiki.ros.org/vision_opencv PCL: http://wiki.ros.org/pcl_ros Open-NI: http://wiki.ros.org/openni_launch Open-Rave: http://openrave.org/ Orocos: http://www.orocos.org/ Webots: https://www.cyberbotics.com/overview V-REP: http://www.coppeliarobotics.com/ Pacotes ROS de sensores
  • 13. O que é programação de robôs? A programação de robôs é um subconjunto da programação de computadores. A diferença entre a programação do robô e a programação convencional são os dispositivos de entrada e saída. Os dispositivos de entrada incluem sensores de robô, pendentes de instrução e telas sensíveis ao toque, e os dispositivos de saída incluem telas de LCD e atuadores. INICIAÇÃO A ROBÓTICA
  • 14. Recursos necessários para a programação um robô: ● Threading: ● Programação orientada a objetos de alto nível: ● Controle de dispositivo de baixo nível: ● Facilidade de prototipagem: ● Comunicação entre processos: ● Atuação: ● Suporte da comunidade: ● Disponibilidade de bibliotecas de terceiros: ● Suporte de estrutura de software de robótica existente: INICIAÇÃO A ROBÓTICA
  • 15. Recursos necessários para a programação um robô: ● Threading: ● Programação orientada a objetos de alto nível: ● Controle de dispositivo de baixo nível: ● Facilidade de prototipagem: ● Comunicação entre processos: ● Atuação: ● Suporte da comunidade: ● Disponibilidade de bibliotecas de terceiros: ● Suporte de estrutura de software de robótica existente: INICIAÇÃO A ROBÓTICA
  • 16. Comunicação Ferramentas Capacidades Ecossistema Equação do ROS INICIAÇÃO A ROBÓTICA
  • 17. Conceitos do ROS ● Nó: Um nó(node) consiste em um executável que utiliza o ROS para realizar a comunicação com outros nó(node). ● Menssagens: Tipos de dados no ROS usados quando se publica ou sobrescreve de tópico. ● Tópicos: Nós(node) podem publicar menssagens em tópicos assim como podem subescrever menssagens de tópicos. ● Master: Service de gerenciamento do sistema do ROS (ex: ajuda os nós a se encontrarem no sistema.) ● rosout: Equivalente do ROS ao stdout/stderr ● roscore: Comando para inicializar o Master + rosout + servidor de parâmetros . É um dos comandos para inializar o "sistema" do ROS. INICIAÇÃO A ROBÓTICA
  • 18. Conceitos de Computação ROS Nós ROS (ROS node): Processo que usa APIs ROS para realizar cálculos. Mestre ROS (ROS master): Um programa intermediário que conecta nós ROS node. Servidor de parâmetros ROS(ROS parameter server): Um programa que normalmente é executado juntamente com o mestre ROS. O usuário pode armazenar vários parâmetros ou valores neste servidor e todos os nós pode acessá-lo. O usuário pode definir a privacidade do parâmetro também. Se for um parâmetro público, todos os nós têm Acesso; se for privado, apenas um nó específico pode acessar o parâmetro. Tópicos do ROS: Barramentos nomeados nos quais os nós do ROS podem envie uma mensagem. Um nó pode publicar ou assinar qualquer número de tópicos. Mensagem ROS: As mensagens estão basicamente indo através do tópico. Existem mensagens existentes baseadas em tipos de dados primitivos, e os usuários podem escrever seus próprios mensagens. Serviço ROS: Já vimos tópicos ROS, que é ter um mecanismo de publicação e assinatura. O serviço ROS possui um mecanismo de solicitação/resposta. Um serviço call é uma função, que pode chamar sempre que um nó cliente envia um pedido. O nó que cria uma chamada de serviço é chamado de nó do servidor e que chama o serviço é chamado nó cliente. ROS bags: Um método útil para salvar e reproduzir ROS tópicos. Também útil para registrar os dados de um robô para processá-lo mais tarde.
  • 19. roscore é o comando para inicializar o Master e deve ser a primeira coisa a ser inicializada no ROS Comando no terminal: $ roscore INICIAÇÃO A ROBÓTICA
  • 21. O comando rosnode mostra as informações dos nós(nodes) que estão rodando. O comando rosnode list lista os nós(nodes) que estão ativos no momento. $ rosnode list INICIAÇÃO A ROBÓTICA
  • 22. rosnode ping test connectivity to node rosnode list list active nodes rosnode info print information about node rosnode machine list nodes running on a particular machine or list machines rosnode kill kill a running node rosnode cleanup purge registration information of unreachable nodes
  • 23. O comando rosnode info retorna informações sobre um nó (nodes) específico. $ rosnode info /rosout INICIAÇÃO A ROBÓTICA
  • 24. A ferramenta rostopic permite obter informações sobre os tópicos ROS. Você pode usar a opção de ajuda para obter os subcomandos disponíveis para rostopic $ rostopic -h INICIAÇÃO A ROBÓTICA
  • 25. rostopic list retorna uma lista de todos os tópicos atualmente inscritos e publicados. $ rostopic list -h INICIAÇÃO A ROBÓTICA
  • 26. rostopic echo mostra os dados publicados em um tópico. rostopic echo [topic] INICIAÇÃO A ROBÓTICA
  • 28. Quanto é o investimento? INICIAÇÃO A ROBÓTICA
  • 30. O que você precisa aprender para programar um robô com ROS? INICIAÇÃO A ROBÓTICA