SlideShare a Scribd company logo
1 of 56
Download to read offline
ROS
Robot Operating System
Bruno Faúndez Valenzuela
Empezamos con una mentira...
ROS no es un sistema operativo.
(Pero el nombre suena fabuloso)
ROS es...
Herramientas:
● Visualización de datos (Rviz, RQT)
● Simulación de Robots (Gazebo, Stage)
● Desarrollo de paquetes (Catkin)
ROS es...
Bibliotecas:
● Permiten desarrollar fácilmente componentes en
lenguajes estándar (C++, Python, Matlab...)
● Posee bibliotecas para tareas habituales de
robótica (Geometría, navegación, estimación de
posición, diagnósticos, sensores...)
ROS es...
Convenciones:
● Sigue los estándares del estado del arte de la
robótica.
● Utiliza formatos ampliamente conocidos.
Y además...
● Es OpenSource: la robótica de uso general es
difícil, por lo que era necesaria una plataforma
de desarrollo colaborativo.
A grandes rasgos
● ROS es un framework pensado para
implementar aplicaciones de robótica de manera
distribuida.
Sus componentes principales:
● Roscore
● Nodos
● Tópicos
● Mensajes
● Servicios
● Parámetros
El Maestro
● ROS requiere un nodo coordinador para llamar a
los otros nodos
● Se ejecuta con:
● roscore
Lanzando el roscore
... logging to /home/bruno/.ros/log/1976e978-2e49-11e5-aa44-b803058568da/roslaunch-cronidea-2483.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://cronidea:51918/
ros_comm version 1.11.13
SUMMARY
========
PARAMETERS
* /rosdistro: indigo
* /rosversion: 1.11.13
NODES
auto-starting new master
process[master]: started with pid [2497]
ROS_MASTER_URI=http://cronidea:11311/
setting /run_id to 1976e978-2e49-11e5-aa44-b803058568da
process[rosout-1]: started with pid [2510]
started core service [/rosout]
¿Qué hemos hecho?
● Se lanzó el nodo maestro
● Se pueden controlar los tópicos
● Se pueden llamar servicios
● Se abrió el servidor de parámetros
Ahora podemos hablar de nodos
● Cualquier programa se ejecuta como nodo
● Existen herramientas para gestionar nodos:
● rosrun
● rosnode
Rosrun: ejecutor
● Con rosrun ejecutamos un nodo
● Sintaxis: rosrun <paquete> <nodo>
● Probemos...
● rosrun turtlesim turtlesim_node
¡Tortugas!
● Hemos lanzado un nodo simulador de tortugas :)
Ahora el rosnode...
● Tiene varias opciones:
● ping
● list
● info
● machine
● kill
● cleanup
● rosnode list nos muestra los nodos actualmente corriendo:
● /rosout
● /turtlesim
¿Qué está haciendo el nodo?
● Corremos:
● rosnode info turtlesim
● Obtenemos:
● Publications (Tópicos)
● Subscriptions (Tópicos)
● Services
● Connections...
¿Hablemos con el nodo? ¡Tópicos!
● Los tópicos son canales de comunicación
● Siguen el paradigma publisher/subscriber
● La herramienta para gestionarlos es rostopic:
● Comandos: bw, echo, find, hz, info, list, pub,
type
¿Cómo habla la tortuga?
● Con rostopic list podemos ver los tópicos
abiertos:
● /rosout
● /rosout_agg
● /turtle1/cmd_vel
● /turtle1/color_sensor
● /turtle1/pose
El movimiento de un robot
● Los comandos de movimiento generalmente se
transmiten en el tópico cmd_vel
● Consultamos el tópico:
● rostopic info /turtle1/cmd_vel
● Obtenemos:
● Type: geometry_msgs/Twist
¿Cómo bailo al Twist?
● Con rosmsg se puede ver información de los
mensajes traspasados en los tópicos
● Ejecutando:
● rosmsg show geometry_msgs/Twist
● Se obtiene:
Ahora puedo hablar en Tortugo
● Con rostopic pub se puede publicar un mensaje
directamente a un tópico
● rostopic pub -1 /turtle1/cmd_vel
geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0,
1.8]'
Y la tortuga se mueve...
¿No es muy... engorroso?
● Ya existen nodos pensados en publicar al tipo
de mensaje Twist: los teleoperadores
● El simulador de tortuga trae un nodo de control:
● rosrun turtlesim turtle_teleop_key
¡Ahora sí!
● rosrun turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Antes de seguir avanzando...
● ¿Qué hemos hecho?
● Levantar un nodo maestro
● Abrir un nodo simulador
● Abrir un nodo de teleoperación
● Comunicar a ambos nodos
Viendo lo que tenemos
● Existen herramientas que nos permiten ver lo
que tenemos funcionando
● Rqt_graph nos permite ver los nodos como un
grafo
RQT Graph
● Ejecutamos:
● rosrun rqt_graph rqt_graph
Servicios
● Además de tópicos, un nodo puede abrir
servicios
● Los servicios se llaman, se ejecutan y
responden
● La herramienta para gestionar servicios es
rosservice con las opciones: args, call, find, info,
list, type, uri
¿Qué servicios tenemos?
● Rosservice list nos muestra:
● /clear
● /kill
● /reset
● /rosout/get_loggers
● /rosout/set_logger_level
● /spawn
● /teleop_turtle/get_loggers
● /teleop_turtle/set_logger_level
● /turtle1/set_pen
● /turtle1/teleport_absolute
● /turtle1/teleport_relative
● /turtlesim/get_loggers
● /turtlesim/set_logger_level
¿Otra tortuga? Bueno, ya
● El servicio /spawn genera nuevas tortugas
● Ejecutamos:
● rosservice info spawn
● Obtenemos:
Llamando un servicio
● Conociendo los argumentos, podemos
llamar rosservice call
● rosservice call /spawn 2 1 1.57 Stephen
¡Voilá! ¡Otra tortuga!
Con estos componentes ya podemos
desarrollar aplicaciones de robótica
● Sí, en serio
Existen nodos para todo
● Existen nodos para la mayoría de las tareas
habituales en robótica: localización, mapeo,
planificación de movimientos, simulación,
diagnóstico de datos, trabajo con sensores...
Los robots no están tan lejos
● Ya hay drones en la región (y en mi casa)
● Estudiantes de la Universidad de Chile
desarrollaron un robot de servicio (“Bender”)
● En Codelco ya trabajan con robots
Repito, no están lejos
Veamos un robot real
● O sea, no tan real... Vamos a simularlo
Roslaunch
● Roslaunch es un comando para lanzar muchos
nodos a la vez
● Los nodos se especifican en un archivo xml
● Si no está corriendo el roscore, se lanza
automáticamente
Turtlebot
● A los tipos de ROS les gustan las tortugas...
Simulando al turtlebot
● Existen paquetes listos para simular al Turtlebot
con sus funcionalidades reales
● Ejecutamos:
● roslaunch turtlebot_gazebo turtlebot_world.launch
Turtlebot + Gazebo
Haciendo mapas
● El turtlebot puede generar mapas de su entorno
usando sus sensores
● Ejecutamos:
● roslaunch turtlebot_gazebo gmapping_demo.launch
¡El robot ya no es ciego!
● gmapping es un paquete que realiza SLAM con
sensores laser
● SLAM: Localización y Mapeo Simultáneos
● Genera un mapa y calcula la posición del robot en el
mapa
¿Cómo ver el mapa?
● Llega RViz, la herramienta de visualización de
propósito general de ROS
● El turtlebot tiene un lanzador preconfigurado
para ver el turtlebot y el mapa que genera
● Ejecutamos:
● roslaunch turtlebot_rviz_launchers view_navigation.launch
RViz
Y ahora a moverse...
● Los paquetes de turtlebot traen un launchfile
configurado para lanzar un controlador del robot
● Ejecutamos:
● roslaunch turtlebot_teleop keyboard_teleop.launch
● Con j y l rotamos, y con i avanzamos
Turtlebot empieza a mapear
No es la única forma de moverse
● Turtlebot lee comandos Twist, por lo que lo
podemos controlar con el nodo de teleoperación del
simulador de tortuga
● Ejecutamos:
● rosrun turtlesim turtle_teleop_key
/turtle1/cmd_vel:=/cmd_vel_mux/input/teleop
¡Hemos visto lo esencial de los robots!
● Resumiendo:
● La arquitectura de nodos de ROS nos permite
levantar aplicaciones poderosas de robótica
● Los elementos quedan claramente separados, por
lo que son fáciles de estudiar
Antes de irnos
● ROS se puede instalar en distintos sistemas
operativos
● La principal instalación es sobre ubuntu, aunque
existen adaptaciones para Fedora, Android,
RaspberryPi...
● Instrucciones para instalar en Ubuntu:
● http://wiki.ros.org/indigo/Installation/Ubuntu
Instalar más componentes
● Desde los repositorios podemos instalar paquetes
de la forma:
● sudo apt-get install ros-[version]-[paquete]
● Por ejemplo:
● sudo apt-get install ros-indigo-turtlebot-simulator
¿Cómo instalo al turtlebot?
● El tutorial principal está en:
http://wiki.ros.org/Robots/TurtleBot
● Para instalar el turtlebot de simulador:
● http://wiki.ros.org/turtlebot_gazebo/Tutorials/indigo/Gazebo%20Bringup%20Guide
● http://wiki.ros.org/turtlebot_gazebo/Tutorials/indigo/Explore%20the%20Gazebo%20world
● http://wiki.ros.org/turtlebot_gazebo/Tutorials/indigo/Make%20a%20map%20and%20navigate%20with%20it
¿Cómo empiezo a desarrollar?
● Para desarrollar hay que conocer:
● El entorno de trabajo catkin:
http://wiki.ros.org/catkin/Tutorials
● Las bibliotecas específicas de nuestro
lenguaje:
● C++: http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29
● Python:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29
¿Y para participar?
● Preguntar o responder: http://answers.ros.org/
● Inscribirse en la lista de correo:
http://lists.ros.org/mailman/listinfo/ros-users
ROS hoy
● La versión más reciente es ROS Jade
● La más popular y estable es ROS Indigo
● En la lista de correo se empieza a planificar ROS
2.0
● Hace poco fue la ROSCon 2015
● Sitio del evento: http://roscon.ros.org/2015/
● Pronto publicarán las charlas
● Análisis anual de ROS:
● http://download.ros.org/downloads/metrics/metrics-
report-2015-07.pdf
¡Hasta aquí llegamos!
● Ojalá que no se hayan aburrido
● Pueden descargar esta presentación en mi blog:
● brunofaundez.wordpress.com
● Me pueden escribir a:
● brunofaundezv@gmail.com

More Related Content

What's hot

Clock gating
Clock gatingClock gating
Clock gatingMahi
 
Relatório do projeto de um conversor cc cc do tipo forward
Relatório do projeto de um conversor cc cc do tipo forwardRelatório do projeto de um conversor cc cc do tipo forward
Relatório do projeto de um conversor cc cc do tipo forwardLuiz Guilherme Riva Tonini
 
Cracking Digital VLSI Verification Interview: Interview Success
Cracking Digital VLSI Verification Interview: Interview SuccessCracking Digital VLSI Verification Interview: Interview Success
Cracking Digital VLSI Verification Interview: Interview SuccessRamdas Mozhikunnath
 
Clase 7 Inversores segunda parte
Clase 7 Inversores segunda parteClase 7 Inversores segunda parte
Clase 7 Inversores segunda parteTensor
 
Noise in RF microelectronics
Noise in RF microelectronicsNoise in RF microelectronics
Noise in RF microelectronicsAhmed Sakr
 
01 Silicon Diagnosis survey by Swetha
01 Silicon Diagnosis survey by Swetha01 Silicon Diagnosis survey by Swetha
01 Silicon Diagnosis survey by Swethaswethamg18
 
Active inductor design new
Active inductor design newActive inductor design new
Active inductor design newDEVITH T
 
Silicon on Insulator (SOI) Technology
Silicon on Insulator (SOI) TechnologySilicon on Insulator (SOI) Technology
Silicon on Insulator (SOI) TechnologySudhanshu Janwadkar
 
Passive device fabrication in Integrated circuits
Passive device fabrication in Integrated circuitsPassive device fabrication in Integrated circuits
Passive device fabrication in Integrated circuitsAbhishek Kadam
 
Ee6378 bandgap reference
Ee6378 bandgap referenceEe6378 bandgap reference
Ee6378 bandgap referencessuser2038c9
 
hyperlynx_compress.pdf
hyperlynx_compress.pdfhyperlynx_compress.pdf
hyperlynx_compress.pdfraimonribal
 
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...Victor Asanza
 
Amp500w st (1)
Amp500w st (1)Amp500w st (1)
Amp500w st (1)Fabio Lima
 

What's hot (20)

Clock gating
Clock gatingClock gating
Clock gating
 
DWDM Principle
 DWDM Principle  DWDM Principle
DWDM Principle
 
Diode circuits
Diode circuitsDiode circuits
Diode circuits
 
Relatório do projeto de um conversor cc cc do tipo forward
Relatório do projeto de um conversor cc cc do tipo forwardRelatório do projeto de um conversor cc cc do tipo forward
Relatório do projeto de um conversor cc cc do tipo forward
 
Cracking Digital VLSI Verification Interview: Interview Success
Cracking Digital VLSI Verification Interview: Interview SuccessCracking Digital VLSI Verification Interview: Interview Success
Cracking Digital VLSI Verification Interview: Interview Success
 
Clase 7 Inversores segunda parte
Clase 7 Inversores segunda parteClase 7 Inversores segunda parte
Clase 7 Inversores segunda parte
 
Noise in RF microelectronics
Noise in RF microelectronicsNoise in RF microelectronics
Noise in RF microelectronics
 
01 Silicon Diagnosis survey by Swetha
01 Silicon Diagnosis survey by Swetha01 Silicon Diagnosis survey by Swetha
01 Silicon Diagnosis survey by Swetha
 
Active inductor design new
Active inductor design newActive inductor design new
Active inductor design new
 
Amplificador de 200w
Amplificador de 200wAmplificador de 200w
Amplificador de 200w
 
Layout rules
Layout rulesLayout rules
Layout rules
 
Build your career in physical ASIC design
Build your career in physical ASIC designBuild your career in physical ASIC design
Build your career in physical ASIC design
 
Silicon on Insulator (SOI) Technology
Silicon on Insulator (SOI) TechnologySilicon on Insulator (SOI) Technology
Silicon on Insulator (SOI) Technology
 
Passive device fabrication in Integrated circuits
Passive device fabrication in Integrated circuitsPassive device fabrication in Integrated circuits
Passive device fabrication in Integrated circuits
 
Ee6378 bandgap reference
Ee6378 bandgap referenceEe6378 bandgap reference
Ee6378 bandgap reference
 
hyperlynx_compress.pdf
hyperlynx_compress.pdfhyperlynx_compress.pdf
hyperlynx_compress.pdf
 
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN FUNDAMENTOS DE ELECTRICIDAD Y SISTEMAS DIGITALES, 2...
 
Amp500w st (1)
Amp500w st (1)Amp500w st (1)
Amp500w st (1)
 
Osciladores
Osciladores Osciladores
Osciladores
 
Understanding CTLE
Understanding CTLEUnderstanding CTLE
Understanding CTLE
 

Similar to Presentación Taller ROS - Robotic Operating System

Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonCodeSyntax
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011Jano González
 
Network.Penetration.CGSOL
Network.Penetration.CGSOLNetwork.Penetration.CGSOL
Network.Penetration.CGSOLykro
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no ProgramadoresJavier_J
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'AulaDeVideojuegos
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJano González
 
Javascript
JavascriptJavascript
JavascriptMaideoz
 
Javascript desde cero
Javascript desde ceroJavascript desde cero
Javascript desde ceroalbanis Meza
 

Similar to Presentación Taller ROS - Robotic Operating System (20)

Ia Robotica
Ia RoboticaIa Robotica
Ia Robotica
 
Ia Robotica
Ia RoboticaIa Robotica
Ia Robotica
 
Introducción a ROS
Introducción a ROSIntroducción a ROS
Introducción a ROS
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
 
Expo mandriva Linux
Expo mandriva LinuxExpo mandriva Linux
Expo mandriva Linux
 
Network.Penetration.CGSOL
Network.Penetration.CGSOLNetwork.Penetration.CGSOL
Network.Penetration.CGSOL
 
Decompiladores
DecompiladoresDecompiladores
Decompiladores
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no Programadores
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'
 
Java Y Robocode
Java Y RobocodeJava Y Robocode
Java Y Robocode
 
Jano Gonzalez - jruby
Jano Gonzalez - jrubyJano Gonzalez - jruby
Jano Gonzalez - jruby
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Javascript
JavascriptJavascript
Javascript
 
Javascript desde cero
Javascript desde ceroJavascript desde cero
Javascript desde cero
 
Javascript
JavascriptJavascript
Javascript
 
Javascript completo
Javascript completoJavascript completo
Javascript completo
 
Presentacion
PresentacionPresentacion
Presentacion
 

Recently uploaded

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilJuanGallardo438714
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxlosdiosesmanzaneros
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 

Recently uploaded (15)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 

Presentación Taller ROS - Robotic Operating System

  • 1. ROS Robot Operating System Bruno Faúndez Valenzuela
  • 2. Empezamos con una mentira... ROS no es un sistema operativo. (Pero el nombre suena fabuloso)
  • 3. ROS es... Herramientas: ● Visualización de datos (Rviz, RQT) ● Simulación de Robots (Gazebo, Stage) ● Desarrollo de paquetes (Catkin)
  • 4. ROS es... Bibliotecas: ● Permiten desarrollar fácilmente componentes en lenguajes estándar (C++, Python, Matlab...) ● Posee bibliotecas para tareas habituales de robótica (Geometría, navegación, estimación de posición, diagnósticos, sensores...)
  • 5. ROS es... Convenciones: ● Sigue los estándares del estado del arte de la robótica. ● Utiliza formatos ampliamente conocidos.
  • 6. Y además... ● Es OpenSource: la robótica de uso general es difícil, por lo que era necesaria una plataforma de desarrollo colaborativo.
  • 7. A grandes rasgos ● ROS es un framework pensado para implementar aplicaciones de robótica de manera distribuida.
  • 8. Sus componentes principales: ● Roscore ● Nodos ● Tópicos ● Mensajes ● Servicios ● Parámetros
  • 9. El Maestro ● ROS requiere un nodo coordinador para llamar a los otros nodos ● Se ejecuta con: ● roscore
  • 10. Lanzando el roscore ... logging to /home/bruno/.ros/log/1976e978-2e49-11e5-aa44-b803058568da/roslaunch-cronidea-2483.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is &lt;1GB. started roslaunch server http://cronidea:51918/ ros_comm version 1.11.13 SUMMARY ======== PARAMETERS * /rosdistro: indigo * /rosversion: 1.11.13 NODES auto-starting new master process[master]: started with pid [2497] ROS_MASTER_URI=http://cronidea:11311/ setting /run_id to 1976e978-2e49-11e5-aa44-b803058568da process[rosout-1]: started with pid [2510] started core service [/rosout]
  • 11. ¿Qué hemos hecho? ● Se lanzó el nodo maestro ● Se pueden controlar los tópicos ● Se pueden llamar servicios ● Se abrió el servidor de parámetros
  • 12. Ahora podemos hablar de nodos ● Cualquier programa se ejecuta como nodo ● Existen herramientas para gestionar nodos: ● rosrun ● rosnode
  • 13. Rosrun: ejecutor ● Con rosrun ejecutamos un nodo ● Sintaxis: rosrun <paquete> <nodo> ● Probemos... ● rosrun turtlesim turtlesim_node
  • 14. ¡Tortugas! ● Hemos lanzado un nodo simulador de tortugas :)
  • 15. Ahora el rosnode... ● Tiene varias opciones: ● ping ● list ● info ● machine ● kill ● cleanup ● rosnode list nos muestra los nodos actualmente corriendo: ● /rosout ● /turtlesim
  • 16. ¿Qué está haciendo el nodo? ● Corremos: ● rosnode info turtlesim ● Obtenemos: ● Publications (Tópicos) ● Subscriptions (Tópicos) ● Services ● Connections...
  • 17. ¿Hablemos con el nodo? ¡Tópicos! ● Los tópicos son canales de comunicación ● Siguen el paradigma publisher/subscriber ● La herramienta para gestionarlos es rostopic: ● Comandos: bw, echo, find, hz, info, list, pub, type
  • 18. ¿Cómo habla la tortuga? ● Con rostopic list podemos ver los tópicos abiertos: ● /rosout ● /rosout_agg ● /turtle1/cmd_vel ● /turtle1/color_sensor ● /turtle1/pose
  • 19. El movimiento de un robot ● Los comandos de movimiento generalmente se transmiten en el tópico cmd_vel ● Consultamos el tópico: ● rostopic info /turtle1/cmd_vel ● Obtenemos: ● Type: geometry_msgs/Twist
  • 20. ¿Cómo bailo al Twist? ● Con rosmsg se puede ver información de los mensajes traspasados en los tópicos ● Ejecutando: ● rosmsg show geometry_msgs/Twist ● Se obtiene:
  • 21. Ahora puedo hablar en Tortugo ● Con rostopic pub se puede publicar un mensaje directamente a un tópico ● rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
  • 22. Y la tortuga se mueve...
  • 23. ¿No es muy... engorroso? ● Ya existen nodos pensados en publicar al tipo de mensaje Twist: los teleoperadores ● El simulador de tortuga trae un nodo de control: ● rosrun turtlesim turtle_teleop_key
  • 24. ¡Ahora sí! ● rosrun turtlesim turtle_teleop_key Reading from keyboard --------------------------- Use arrow keys to move the turtle.
  • 25. Antes de seguir avanzando... ● ¿Qué hemos hecho? ● Levantar un nodo maestro ● Abrir un nodo simulador ● Abrir un nodo de teleoperación ● Comunicar a ambos nodos
  • 26. Viendo lo que tenemos ● Existen herramientas que nos permiten ver lo que tenemos funcionando ● Rqt_graph nos permite ver los nodos como un grafo
  • 27. RQT Graph ● Ejecutamos: ● rosrun rqt_graph rqt_graph
  • 28. Servicios ● Además de tópicos, un nodo puede abrir servicios ● Los servicios se llaman, se ejecutan y responden ● La herramienta para gestionar servicios es rosservice con las opciones: args, call, find, info, list, type, uri
  • 29. ¿Qué servicios tenemos? ● Rosservice list nos muestra: ● /clear ● /kill ● /reset ● /rosout/get_loggers ● /rosout/set_logger_level ● /spawn ● /teleop_turtle/get_loggers ● /teleop_turtle/set_logger_level ● /turtle1/set_pen ● /turtle1/teleport_absolute ● /turtle1/teleport_relative ● /turtlesim/get_loggers ● /turtlesim/set_logger_level
  • 30. ¿Otra tortuga? Bueno, ya ● El servicio /spawn genera nuevas tortugas ● Ejecutamos: ● rosservice info spawn ● Obtenemos:
  • 31. Llamando un servicio ● Conociendo los argumentos, podemos llamar rosservice call ● rosservice call /spawn 2 1 1.57 Stephen
  • 33. Con estos componentes ya podemos desarrollar aplicaciones de robótica ● Sí, en serio
  • 34. Existen nodos para todo ● Existen nodos para la mayoría de las tareas habituales en robótica: localización, mapeo, planificación de movimientos, simulación, diagnóstico de datos, trabajo con sensores...
  • 35. Los robots no están tan lejos ● Ya hay drones en la región (y en mi casa) ● Estudiantes de la Universidad de Chile desarrollaron un robot de servicio (“Bender”) ● En Codelco ya trabajan con robots
  • 37. Veamos un robot real ● O sea, no tan real... Vamos a simularlo
  • 38. Roslaunch ● Roslaunch es un comando para lanzar muchos nodos a la vez ● Los nodos se especifican en un archivo xml ● Si no está corriendo el roscore, se lanza automáticamente
  • 39. Turtlebot ● A los tipos de ROS les gustan las tortugas...
  • 40. Simulando al turtlebot ● Existen paquetes listos para simular al Turtlebot con sus funcionalidades reales ● Ejecutamos: ● roslaunch turtlebot_gazebo turtlebot_world.launch
  • 42. Haciendo mapas ● El turtlebot puede generar mapas de su entorno usando sus sensores ● Ejecutamos: ● roslaunch turtlebot_gazebo gmapping_demo.launch
  • 43. ¡El robot ya no es ciego! ● gmapping es un paquete que realiza SLAM con sensores laser ● SLAM: Localización y Mapeo Simultáneos ● Genera un mapa y calcula la posición del robot en el mapa
  • 44. ¿Cómo ver el mapa? ● Llega RViz, la herramienta de visualización de propósito general de ROS ● El turtlebot tiene un lanzador preconfigurado para ver el turtlebot y el mapa que genera ● Ejecutamos: ● roslaunch turtlebot_rviz_launchers view_navigation.launch
  • 45. RViz
  • 46. Y ahora a moverse... ● Los paquetes de turtlebot traen un launchfile configurado para lanzar un controlador del robot ● Ejecutamos: ● roslaunch turtlebot_teleop keyboard_teleop.launch ● Con j y l rotamos, y con i avanzamos
  • 48. No es la única forma de moverse ● Turtlebot lee comandos Twist, por lo que lo podemos controlar con el nodo de teleoperación del simulador de tortuga ● Ejecutamos: ● rosrun turtlesim turtle_teleop_key /turtle1/cmd_vel:=/cmd_vel_mux/input/teleop
  • 49. ¡Hemos visto lo esencial de los robots! ● Resumiendo: ● La arquitectura de nodos de ROS nos permite levantar aplicaciones poderosas de robótica ● Los elementos quedan claramente separados, por lo que son fáciles de estudiar
  • 50. Antes de irnos ● ROS se puede instalar en distintos sistemas operativos ● La principal instalación es sobre ubuntu, aunque existen adaptaciones para Fedora, Android, RaspberryPi... ● Instrucciones para instalar en Ubuntu: ● http://wiki.ros.org/indigo/Installation/Ubuntu
  • 51. Instalar más componentes ● Desde los repositorios podemos instalar paquetes de la forma: ● sudo apt-get install ros-[version]-[paquete] ● Por ejemplo: ● sudo apt-get install ros-indigo-turtlebot-simulator
  • 52. ¿Cómo instalo al turtlebot? ● El tutorial principal está en: http://wiki.ros.org/Robots/TurtleBot ● Para instalar el turtlebot de simulador: ● http://wiki.ros.org/turtlebot_gazebo/Tutorials/indigo/Gazebo%20Bringup%20Guide ● http://wiki.ros.org/turtlebot_gazebo/Tutorials/indigo/Explore%20the%20Gazebo%20world ● http://wiki.ros.org/turtlebot_gazebo/Tutorials/indigo/Make%20a%20map%20and%20navigate%20with%20it
  • 53. ¿Cómo empiezo a desarrollar? ● Para desarrollar hay que conocer: ● El entorno de trabajo catkin: http://wiki.ros.org/catkin/Tutorials ● Las bibliotecas específicas de nuestro lenguaje: ● C++: http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29 ● Python:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29
  • 54. ¿Y para participar? ● Preguntar o responder: http://answers.ros.org/ ● Inscribirse en la lista de correo: http://lists.ros.org/mailman/listinfo/ros-users
  • 55. ROS hoy ● La versión más reciente es ROS Jade ● La más popular y estable es ROS Indigo ● En la lista de correo se empieza a planificar ROS 2.0 ● Hace poco fue la ROSCon 2015 ● Sitio del evento: http://roscon.ros.org/2015/ ● Pronto publicarán las charlas ● Análisis anual de ROS: ● http://download.ros.org/downloads/metrics/metrics- report-2015-07.pdf
  • 56. ¡Hasta aquí llegamos! ● Ojalá que no se hayan aburrido ● Pueden descargar esta presentación en mi blog: ● brunofaundez.wordpress.com ● Me pueden escribir a: ● brunofaundezv@gmail.com