2. Gracias por los contenidos Creative Commons de la web de ROS y de las
transparencias creadas por "Radu Bogdan Rusu" para el evento: "
CoTeSys-ROS Fall School on Cognition-enabled Mobile Manipulation".
Este documento en sí es Creative Commons.
3. Cuestiones/Objetivos Seminario
● ¿Qué es ROS?
● ¿Qué ofrece ROS respecto a otras
alternativas?
● ¿Por qué presenta un buen enfoque para
abordar problemas de Robótica?
● ¿Cómo ROS puede ayudar a mejorar las
tareas de investigación en Robótica?
● ¿Cómo comenzar con ROS?
4. Contenidos: Parte I
● Contexto
● ROS Overview
● Arquitectura Distribuida de ROS
● Herramientas
● Ejemplos Áreas de la robótica abordados
● Mas Software existente
6. Contenidos: Parte II
● Parte II (Utilizando ROS)
● Demostraciones
●
PARTE I
● Grupo de Trabajo CARLUS-ROS-PKG
ROS Overview
● DEMO:
– Simulator PR2 – Open Doors
7. Contexto: Enfoque
● ROS
● Robots autónomos e inteligentes
● Sociedad robotizada
● Robots en hogares y tareas domésticas
● ATC
● Tecnologías de la Rehabilitación
● Cuidado de Mayores
● Inteligencia ambiental/Arquitecturas distribuidas
● Interacción hombre/máquina
8. Contexto: Futuro de la Robótica
● Robots autónomos e inteligentes
● Entornos desesctructurados
● Interacción con el ser humano
● Tareas Domésticas
● Trabajadores Robots
● Sociedad Robotizada
● Inteligencia Ambiental
9. Contexto: Problemas en mercado
● Mercado robots industriales maduro
● Mercado robots autónomos muy pequeño
● Excepción Nipona
● Necesidades desapercividas por el consumidor
● Falta de detonantes (ej: Iphone)
● Situación de bloqueo
10. Contexto: Industria (robots
autónomos)
● Investigación es privada
● Complejidad en la creación de productos
● Necesidad de no empezar de cero
● Carencia de ecosistema de proveedores
● Riesgo
● Alta inversión y poco retorno
● Resistencia al cambio
● ¿Todavía demasiado pronto?
11. Contexto: Investigación académica
● Adelantada respecto la industria y mercado
● Pruebas de concepto
● Poco feedback Universidad ↔ Empresa
● Perdida tiempo en infraestructura →
Soluciones teóricas o simuladas
● Problemas de reutilización → problemas en la
colaboración (cada uno hace lo que cree)
13. Contexto: Necesidades proyectos
medios y grandes
● Explosión de requerimientos software
● Ubicuidad
● Herramientas: desarrollo, configuración, debugging
● Arquitecturas mas robustas y flexibles
● Procedimientos de ingeniería del software
● Trabajo en equipo
● Reutilización del software
● Reutilización del conocimiento
14. Contexto: Robótica Distribuida y
RSFs
● Solución: Orientación a Servicios y
Componentes
● Programación Distribuida propósito general
● TCP/IP, CORBA, ACE, etc.
● Robotic software frameworks
● Player, Orca, YARP, OROCOS, CARMEN,
OpenRTM-AIST, JADE, MSRS, Open-RTM, JDE+,
JADE
● Mejora la situación. Pero se necesitan mas
mejoras.
15. Contexto: Player
SO SO
laser map amcl motors
Player Server
Config
Interfaces estables
Patrón proxy
Client Client
¿comunicación?
16. ROS Overview: ¿Qué es?
● Meta-Sistema Operativo
● (RSF) Framework para el desarrollo de
sistemas robótocos
● Arquitectura robótica desplegada en múltiples
máquinas
17. ROS Overview: ¿Qué es?
A simple vista:
● Software robótico enlatado Building Blocks
(librerías, aplicaciones,...)
● Herramientas de desarrollo
● Herramientas de inspección y depuración
● Sistema de paquetería
Va mas allá:
● Procesos, metodología
● Comunidad, Investigación: Democratización de la
robótica
21. ROS Overview: Ejemplos de
“Aplicaciones finales”
● Robot PR2
● Repartir Cerveza
● Enchufarse
● Recojer la basura de la casa en un carrito
● Jugar a las torres de Hanoi
● Abrir puertas
25. ¿Por qué escoger ROS?
● Llegar mas allá en nuestros proyectos
● Una metodología y unos convenios definidos
para el desarrollo de software en robótica.
● Fomentará la interacción con otros grupos de
investigación
26. ROS Overview: Organización de
Software
PACKAGE
- Nodos
- Herramientas
- Librerías
- Definición de Mensajes
- Definición de Servicios
- Configuraciones despliegue
27. ROS Overview: Comunidad
Federación de repositorios con software para
robots. En 2010:
• Casi 200 Stacks
• Mas de 100 Packages
• Unos 50 Repositorios Federados
• ROS: Wiki unificada y uniforme
• Importancia de la integración sobre el
desarrollo
35. ROS vs Player
● Player
● Arquitectura cliente/servidor
● Mecanismo de desacoplamiento
– Servicios
● Uso de ficheros de configuración
● ROS
● Arquitectura Distribuida P2P/Híbrida
● Mecanismo de desacoplamiento
– Servicios
– Mensajes
● Ej: Nube de puntos kinect, vs videre, vs hyokoyu
37. Mecanismos de reusabilidad
● Servicios estandarizados
● Mensajes estandarizados
● Facilidad para la composición
● Múltiples procesos
● Interacción mediante capa de transporte
agnóstica
● Independencia del Lenguaje
41. Ejemplo de “Driver”
Properties
Services
Usb= “dev /ttyUSB3”
Freq= 30 On/Off
Coordinate_frame=”head”
Change Units
Sensor Fussion
IMU
#inclue <ros/ros.h>
#include <common_msgs/Pose.h>”
Topics #include <stdio.h>
Void Main ()
{
Robot Pose //create Node
....
//create service On_Off
....
//advertise topic RobotPose
Open(..) //usb to read drivers
}
*En realidad las properties se almacenan en el rosmaster no en
los nodos, aunque conceptualmente Puede verse como parámetros
de configuración de uno o varios nodos. De ahí la representación propuesta.
42. Ejemplo de “capacidad”
Localización mediante EKF
● robot_pose_efk
/odom
robot_pose_ekf
/odom_combined
/imu_data
sensor_timeout=1
Freq=30
...
43. Ejemplo de “capacidad”: SLAM
● Librería OpenSlam
● Paquete slam_gmapping
● Nodo como una capacidad
(framework)
openslam.lib /dynamic_map
/tf
/gmapping/tf_frames
gmapping
/clock
/map_metadata
/laser_scan
/map
---------
---------
--------- /gmapping_entropy
---------
45. Composición de funcionalidad:
Launch Files
● Componentes de alto nivel (capacidades)
● Aplicaciones (finales)
● Configuración inicial pero evolución dinámica
Launch
● Posibilidad de distintas máquinas, etc.
Launch
Ros Master
Launch
46. Arquitectura ROS: Ros Master
● Servicios de nombres
● Servicios de páginas
amarillas
● Almacén de propiedades
● Singleton
47. Mecanismos de Interacción de alto
Nivel
● Action
● State Machines/ Workflows
● Ejemplo paper toallas
48. Eficiencia en el Transporte
● También existen paquetes con librerias
● Funcionalidad extra para traducción a tipos de
mensaje, servicios, etc.
● Ejemplo KDL, OpenCV, PCL
● Nodelets
● Nodos en el mismo proceso
● ros_realtime
● Comprueben experimentalmente la frecuencia
de los topics
53. Cinemática y Sistemas de
Referencia
● TF
● KDL
● URDF
● Robot State Publisher
● Joint State
Publisher
● Arm Kinematics
54. TF
● Dónde estaba el frame de la cabeza relativo al
frame del mundo hace 5 segundos?
● Cúal es la pose del frame del objeto respecto a
las garras de mi brazo robótico?
● Cúal es la pose actual de la base actual del
robot respecto a la baase de otro robot?
http://www.ros.org/wiki/tf
60. ROS y sistemas multi agentes
● Infrestructura necesaria para su desarrollo
● Arquitectura distribuida híbrida
● Sistemas de páginas amarillas
● Interacción: servicios, topics, parámetros
62. Desventajas de ROS
● Objetivos muy ambiciosos
● Tratar con software muy varirado (librerías hechas a imagen y semejanza del
autor)
● Integrar aplicaciones no es inmediato
● Leer documentación
● Revisar código hecho
● Depurar
● Curva de aprendizaje relativamente costosa
● Exponer una librería en ROS tampoco es gratis
● Continuos cambios y evolución (software obsoleto)
● No soporte (por ahora) para Windows u otros sistemas empotrados
● Desesperante cantidad de sotware (también hay paja)
63. Ventajas
● Inumerables
● Reducir el tiempo invertido en infraestructura y
centrate en la investigación
● Abordar en problemas de alto nivel
● Te permite acelerar el aprendizaje
● Viendo código de otros
● Viendo documentación de otros
● Fomenta el trabajo en equipo y establece
convenios, procesos y metologías para hacer
software reusable.