Introducción a ROS

Post on 30-Nov-2014

5.130 views 0 download

description

Creative Commons Lcense

Transcript of Introducción a ROS

Pablo Iñigo BlascoDiciembre – 2010

Robot Operative System

Departamento de Arquitectura y Tecnología de ComputadoresUniversidad de Sevilla

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.

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?

Contenidos: Parte I

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

Contenidos: Parte II

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

Contenidos: Parte II

● Parte II (Utilizando ROS)● Demostraciones●

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

– Simulator PR2 – Open Doors

PARTE I

ROS Overview

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

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 – )

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

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?

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)

Problemas Fundamentales

● El tamaño del proyecto

● El conocimiento

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

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.

Contexto: Player

Player Server

amclmaplaser motors

SOSO

Client Client

Config

Interfaces establesPatrón proxy

¿comunicación?

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

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

ROS Overview: Meta-Sistema Oeperativo

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.

ROS Overview: Meta Systema Operativo

Capabilities

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

ROS Overview: Meta-Sistema Operativo

ROS Overview: Organización de Software

¿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

ROS Overview: Organización de Software

PACKAGE

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

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

ROS.org

DEMO WIKI

ROS Overview: Historia

ROS Overview: Objetivo

ROS Overview: Robots

ROS Overview: Otras características

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

● Plataformas● Linux, MacOS● X86 y ARM

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

PARTE I

Arquitectura 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

ROS: Arquitectura

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

Arquitectura P2P Híbrida

Node

Node

NodeNode

topic

config

SO

HW

topic

Ros Master

Launch File

properties

Machine 1 Machine 2

Arquitectura: P2P Híbrida

Nodos

● Primitiva de funcionalida

● Sincronos

● Simple hilos

● Proceso(convenio)

● Dinámicos

Topics

Services

Properties (*)

Config.yaml

msg

msg

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.

Ejemplo de “capacidad” Localización mediante EKF

● robot_pose_efk

robot_pose_ekf

/odom_combined

/odom

/imu_data

sensor_timeout=1Freq=30...

/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

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

DEMO explore_stage

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

Arquitectura ROS: Ros Master

● Servicios de nombres

● Servicios de páginas amarillas

● Almacén de propiedades

● Singleton

Mecanismos de Interacción de alto Nivel

● Action● State Machines/ Workflows● Ejemplo paper toallas

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

PARTE I

Herramientas

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)

DEMO PR2 - GAZEBO

PARTE I

Paradigmas Abordados

Cinemática y Sistemas de Referencia

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

Publisher● Arm Kinematics

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

DEMO Brazo Robótico

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

PARTE I

Mas Software

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

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)

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.

GRACIAS