Introducción a ROS

64
Pablo Iñigo Blasco Diciembre – 2010 Robot Operative System Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla

description

Creative Commons Lcense

Transcript of Introducción a ROS

Page 1: Introducción a ROS

Pablo Iñigo BlascoDiciembre – 2010

Robot Operative System

Departamento de Arquitectura y Tecnología de ComputadoresUniversidad de Sevilla

Page 2: Introducción a ROS

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.

Page 3: Introducción a ROS

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?

Page 4: Introducción a ROS

Contenidos: Parte I

● Contexto● ROS Overview● Arquitectura Distribuida de ROS● Herramientas● Ejemplos Áreas de la robótica abordados● Mas Software existente

Page 5: Introducción a ROS

Contenidos: Parte II

● Aspectos técnicos● Ejemplos● Demos● Tutoriales● Interacción

Page 6: Introducción a ROS

Contenidos: Parte II

● Parte II (Utilizando ROS)● Demostraciones●

● Grupo de Trabajo CARLUS-ROS-PKG● DEMO:

– Simulator PR2 – Open Doors

PARTE I

ROS Overview

Page 7: Introducción a ROS

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

Page 8: Introducción a ROS

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

(VIDEO ROPA - imagen)(VIDEO CARRITO – )

Page 9: Introducción a ROS

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

Page 10: Introducción a ROS

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?

Page 11: Introducción a ROS

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)

Page 12: Introducción a ROS

Problemas Fundamentales

● El tamaño del proyecto

● El conocimiento

Page 13: Introducción a ROS

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

Page 14: Introducción a ROS

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.

Page 15: Introducción a ROS

Contexto: Player

Player Server

amclmaplaser motors

SOSO

Client Client

Config

Interfaces establesPatrón proxy

¿comunicación?

Page 16: Introducción a ROS

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

Page 17: Introducción a ROS

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

Page 18: Introducción a ROS

ROS Overview: Meta-Sistema Oeperativo

Page 19: Introducción a ROS

ROS Overview: Filosofía

● Reusabilidad● Ubicuidad● Escalabilidad● Integración del software existente y futuro!!!● Software libre● Enfoque científico pero aplicado

● Papers, libros, referencias, etc.

Page 20: Introducción a ROS

ROS Overview: Meta Systema Operativo

Page 22: Introducción a ROS

Capabilities

● Cinemática● Vision & Object Recognition● Localization● Motion Planning/Navigation● Mapping● Grasping● Object manipulation● Machine Learning

Page 23: Introducción a ROS

ROS Overview: Meta-Sistema Operativo

Page 24: Introducción a ROS

ROS Overview: Organización de Software

Page 25: Introducción a ROS

¿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

Page 26: Introducción a ROS

ROS Overview: Organización de Software

PACKAGE

- Nodos- Herramientas- Librerías- Definición de Mensajes- Definición de Servicios- Configuraciones despliegue

Page 27: Introducción a ROS

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

Page 28: Introducción a ROS

ROS.org

DEMO WIKI

Page 29: Introducción a ROS

ROS Overview: Historia

Page 30: Introducción a ROS

ROS Overview: Objetivo

Page 31: Introducción a ROS

ROS Overview: Robots

Page 32: Introducción a ROS

ROS Overview: Otras características

● Multi Lenguaje● C++, python, Java, Octave, Lisp, RxLab

● Plataformas● Linux, MacOS● X86 y ARM

Page 33: Introducción a ROS

ROS Overview: Origen Stanford

● Stanford IA Lab

● Stanfor Research Institute

● Gary Bradski (OpenCV)

● Brian Gerkley (Player)

● Oussama Khatib (Potential Fields)

● Jean-Claude Latobme (Robot Motion Planning)

● Sebastian Thrun (Probabilistic Robotics)

● Proyectos

● STAIR, OpenCV, Player/Stage, Darpa Grand Challenge, etc.

http://www.stanford.edu/class/cs294b/teamMembers.html

Page 34: Introducción a ROS

PARTE I

Arquitectura ROS

Page 35: Introducción a ROS

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

Page 36: Introducción a ROS

ROS: Arquitectura

Page 37: Introducción a ROS

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

Page 38: Introducción a ROS

Arquitectura P2P Híbrida

Node

Node

NodeNode

topic

config

SO

HW

topic

Ros Master

Launch File

properties

Machine 1 Machine 2

Page 39: Introducción a ROS

Arquitectura: P2P Híbrida

Page 40: Introducción a ROS

Nodos

● Primitiva de funcionalida

● Sincronos

● Simple hilos

● Proceso(convenio)

● Dinámicos

Topics

Services

Properties (*)

Config.yaml

msg

msg

Page 41: Introducción a ROS

Ejemplo de “Driver”

Usb= “dev /ttyUSB3”Freq= 30

Coordinate_frame=”head”

Sensor Fussion IMU

Robot Pose

Properties

On/Off

Change Units

#inclue <ros/ros.h>#include <common_msgs/Pose.h>”#include <stdio.h>

Void Main (){ //create Node .... //create service On_Off .... //advertise topic RobotPose

Open(..) //usb to read drivers}

Services

Topics

*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.

Page 42: Introducción a ROS

Ejemplo de “capacidad” Localización mediante EKF

● robot_pose_efk

robot_pose_ekf

/odom_combined

/odom

/imu_data

sensor_timeout=1Freq=30...

Page 43: Introducción a ROS

/dynamic_map

/gmapping/tf_frames

Ejemplo de “capacidad”: SLAM

● Librería OpenSlam

● Paquete slam_gmapping

● Nodo como una capacidad

(framework)

gmapping

/map

/map_metadata

/gmapping_entropy

/tf

/clock

/laser_scan

openslam.lib

------------------------------------

Page 44: Introducción a ROS

DEMO explore_stage

Page 45: Introducción a ROS

Composición de funcionalidad: Launch Files

● Componentes de alto nivel (capacidades)

● Aplicaciones (finales)

● Configuración inicial pero evolución dinámica

● Posibilidad de distintas máquinas, etc.

Launch

Launch

LaunchRos Master

Page 46: Introducción a ROS

Arquitectura ROS: Ros Master

● Servicios de nombres

● Servicios de páginas amarillas

● Almacén de propiedades

● Singleton

Page 47: Introducción a ROS

Mecanismos de Interacción de alto Nivel

● Action● State Machines/ Workflows● Ejemplo paper toallas

Page 48: Introducción a ROS

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

Page 49: Introducción a ROS

PARTE I

Herramientas

Page 50: Introducción a ROS

Herramientas

● Desarrollo ● Rosmake, rxdeps, genmsg, roslocate, rosmsg, rosrv, gtests, cmake,

rosbag, roscd

● Inspección y Monitorización● Rviz, rostopic, rosconsole,rxgraph, rosnode, rxplot

● Despliegue y Configuración● Rosrun, roslaunch, yaml

● Documentación: Ros.org, code.ros.org

● Simulación

● Otras herramientas (no core)● (parte II)

Page 51: Introducción a ROS

DEMO PR2 - GAZEBO

Page 52: Introducción a ROS

PARTE I

Paradigmas Abordados

Page 53: Introducción a ROS

Cinemática y Sistemas de Referencia

● TF● KDL● URDF● Robot State Publisher● Joint State

Publisher● Arm Kinematics

Page 54: Introducción a ROS

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

Page 55: Introducción a ROS

DEMO Brazo Robótico

Page 57: Introducción a ROS

Motion Planning

● Sampling Based Planning Methods (ompl)● RRT, EST, SBL

● Métodos discretos (sbpl) ● AD*, D*, ARA*

● Métodos con consideraciones dinámicas y cinemáticas ● CHOMP, STOMP

Page 58: Introducción a ROS

PARTE I

Mas Software

Page 60: Introducción a ROS

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

Page 62: Introducción a ROS

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)

Page 63: Introducción a ROS

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.

Page 64: Introducción a ROS

GRACIAS