SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados (20)

Function generator
Function generatorFunction generator
Function generator
 
Transmisiones y reducciones utilizadas en robótica
Transmisiones y reducciones utilizadas en robóticaTransmisiones y reducciones utilizadas en robótica
Transmisiones y reducciones utilizadas en robótica
 
Sensores
SensoresSensores
Sensores
 
Medicion del transistor 2n222
Medicion del transistor 2n222Medicion del transistor 2n222
Medicion del transistor 2n222
 
Introduction to Electronic Product Design
Introduction to Electronic Product DesignIntroduction to Electronic Product Design
Introduction to Electronic Product Design
 
Op amps
Op ampsOp amps
Op amps
 
Los Mecanismos 2008
Los Mecanismos 2008Los Mecanismos 2008
Los Mecanismos 2008
 
Amplificadores clase B clase 11ª
Amplificadores clase B clase 11ªAmplificadores clase B clase 11ª
Amplificadores clase B clase 11ª
 
Comunicación I2C y SPI
Comunicación I2C y SPIComunicación I2C y SPI
Comunicación I2C y SPI
 
Transistores mosfet
Transistores mosfetTransistores mosfet
Transistores mosfet
 
timer 555
timer 555timer 555
timer 555
 
ROM y RAM
ROM y RAMROM y RAM
ROM y RAM
 
Presentación taller arduino
Presentación taller arduinoPresentación taller arduino
Presentación taller arduino
 
Circuito integrado 555. configuración como multivibrador monoestable y astable
Circuito integrado 555. configuración como multivibrador monoestable y astableCircuito integrado 555. configuración como multivibrador monoestable y astable
Circuito integrado 555. configuración como multivibrador monoestable y astable
 
Matching concept in Microelectronics
Matching concept in MicroelectronicsMatching concept in Microelectronics
Matching concept in Microelectronics
 
Diodo Zener
Diodo ZenerDiodo Zener
Diodo Zener
 
Op amp application as Oscillator
Op amp application as Oscillator Op amp application as Oscillator
Op amp application as Oscillator
 
About MOSFET
About MOSFETAbout MOSFET
About MOSFET
 
1.2 Tipos de diodos
1.2 Tipos de diodos1.2 Tipos de diodos
1.2 Tipos de diodos
 
Op amp(operational amplifier)
Op amp(operational amplifier)Op amp(operational amplifier)
Op amp(operational amplifier)
 

Semelhante a 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
 
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptxclase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptxJulianSimonetta
 

Semelhante a Presentación Taller ROS - Robotic Operating System (20)

Ia Robotica
Ia RoboticaIa Robotica
Ia Robotica
 
Ia Robotica
Ia RoboticaIa Robotica
Ia Robotica
 
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
 
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptxclase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
 

Último

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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
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
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
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
 
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
 
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
 
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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 

Último (11)

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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
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
 
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
 
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
 
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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

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